summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/Valgrind.cpp
diff options
context:
space:
mode:
authorDmitri Gribenko <gribozavr@gmail.com>2015-02-19 05:30:16 +0000
committerDmitri Gribenko <gribozavr@gmail.com>2015-02-19 05:30:16 +0000
commit3e1551c96f5ca7217ba850dd77c6f3702004c07a (patch)
tree660dae52b395507604cd5c310ec002c4079fbc8b /llvm/lib/Support/Valgrind.cpp
parentee3c1b2a71a9053e977b6523ff17a817eddaf4ef (diff)
downloadbcm5719-llvm-3e1551c96f5ca7217ba850dd77c6f3702004c07a.tar.gz
bcm5719-llvm-3e1551c96f5ca7217ba850dd77c6f3702004c07a.zip
Provide the same ABI regardless of NDEBUG
For projects depending on LLVM, I find it very useful to combine a release-no-asserts build of LLVM with a debug+asserts build of the dependent project. The motivation is that when developing a dependent project, you are debugging that project itself, not LLVM. In my usecase, a significant part of the runtime is spent in LLVM optimization passes, so I would like to build LLVM without assertions to get the best performance from this combination. Currently, `lib/Support/Debug.cpp` changes the set of symbols it provides depending on NDEBUG, while `include/llvm/Support/Debug.h` requires extra symbols when NDEBUG is not defined. Thus, it is not possible to enable assertions in an external project that uses facilities of `Debug.h`. This patch changes `Debug.cpp` and `Valgrind.cpp` to always define the symbols that other code may depend on when #including LLVM headers without NDEBUG. http://reviews.llvm.org/D7662 llvm-svn: 229819
Diffstat (limited to 'llvm/lib/Support/Valgrind.cpp')
-rw-r--r--llvm/lib/Support/Valgrind.cpp3
1 files changed, 1 insertions, 2 deletions
diff --git a/llvm/lib/Support/Valgrind.cpp b/llvm/lib/Support/Valgrind.cpp
index 2c6d6aaadff..facf8d927ec 100644
--- a/llvm/lib/Support/Valgrind.cpp
+++ b/llvm/lib/Support/Valgrind.cpp
@@ -53,7 +53,6 @@ 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. However, they are required to be weak as some other
// application or library may already be providing these definitions for the
@@ -72,4 +71,4 @@ 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
+
OpenPOWER on IntegriCloud