X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FSupport%2FValgrind.cpp;h=2c6d6aaadfff9e2a5c886a1efc4f69d044eca187;hb=e8757c5dbbb50a0ac106f01360c462a3217ef62f;hp=46d93a26ef6638a85dced02457ec0679233994b5;hpb=ec381a4183f70122305f810c6b11b8f0e3bf83c0;p=oota-llvm.git diff --git a/lib/Support/Valgrind.cpp b/lib/Support/Valgrind.cpp index 46d93a26ef6..2c6d6aaadff 100644 --- a/lib/Support/Valgrind.cpp +++ b/lib/Support/Valgrind.cpp @@ -53,13 +53,23 @@ void llvm::sys::ValgrindDiscardTranslations(const void *Addr, size_t Len) { #endif // !HAVE_VALGRIND_VALGRIND_H +#if LLVM_ENABLE_THREADS != 0 && !defined(NDEBUG) // These functions require no implementation, tsan just looks at the arguments -// they're called with. +// 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 AnnotateHappensBefore(const char *file, int line, - const volatile void *cv) {} LLVM_ATTRIBUTE_WEAK void AnnotateHappensAfter(const char *file, int line, - const volatile void *cv) {} -LLVM_ATTRIBUTE_WEAK void AnnotateIgnoreWritesBegin(const char *file, int line){} -LLVM_ATTRIBUTE_WEAK void AnnotateIgnoreWritesEnd(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) {} } +#endif