X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FSupport%2FValgrind.cpp;h=facf8d927ecd9a453f18ebff2bf13f8203e8cfbc;hb=84b1a805bbccf75da3dab605d291e92e1cba5acc;hp=2e57eb75c30e24533feb1256c980b098afc8f480;hpb=d01cb358048fb6575a5757e789f4e0100db9acc6;p=oota-llvm.git diff --git a/lib/Support/Valgrind.cpp b/lib/Support/Valgrind.cpp index 2e57eb75c30..facf8d927ec 100644 --- a/lib/Support/Valgrind.cpp +++ b/lib/Support/Valgrind.cpp @@ -39,7 +39,7 @@ void llvm::sys::ValgrindDiscardTranslations(const void *Addr, size_t Len) { if (NotUnderValgrind) return; - (void)VALGRIND_DISCARD_TRANSLATIONS(Addr, Len); + VALGRIND_DISCARD_TRANSLATIONS(Addr, Len); } #else // !HAVE_VALGRIND_VALGRIND_H @@ -52,3 +52,23 @@ void llvm::sys::ValgrindDiscardTranslations(const void *Addr, size_t Len) { } #endif // !HAVE_VALGRIND_VALGRIND_H + +// These functions require no implementation, tsan just looks at the arguments +// they're called with. However, they are required to be weak as some other +// application or library may already be providing these definitions for the +// same reason we are. +extern "C" { +LLVM_ATTRIBUTE_WEAK void AnnotateHappensAfter(const char *file, int line, + const volatile void *cv); +void AnnotateHappensAfter(const char *file, int line, const volatile void *cv) { +} +LLVM_ATTRIBUTE_WEAK void AnnotateHappensBefore(const char *file, int line, + const volatile void *cv); +void AnnotateHappensBefore(const char *file, int line, + const volatile void *cv) {} +LLVM_ATTRIBUTE_WEAK void AnnotateIgnoreWritesBegin(const char *file, int line); +void AnnotateIgnoreWritesBegin(const char *file, int line) {} +LLVM_ATTRIBUTE_WEAK void AnnotateIgnoreWritesEnd(const char *file, int line); +void AnnotateIgnoreWritesEnd(const char *file, int line) {} +} +