mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-04 17:56:53 +00:00
Address NDEBUG-related linkage issues for Value::assertModuleIsMaterialized()
The IR/Value class had a linkage issue present when LLVM was built as a library, and the LLVM library build time had different settings for NDEBUG than the client of the LLVM library. Clients could get into a state where the LLVM lib expected Value::assertModuleIsMaterialized() to be inline-defined in the header but clients expected that method to be defined in the LLVM library. See this llvm-commits thread for more details: http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20160201/329667.html llvm-svn: 259695
This commit is contained in:
parent
c6dc619045
commit
5cc6f2aece
@ -280,11 +280,7 @@ public:
|
||||
// when using them since you might not get all uses.
|
||||
// The methods that don't start with materialized_ assert that modules is
|
||||
// fully materialized.
|
||||
#ifdef NDEBUG
|
||||
void assertModuleIsMaterialized() const {}
|
||||
#else
|
||||
void assertModuleIsMaterialized() const;
|
||||
#endif
|
||||
|
||||
bool use_empty() const {
|
||||
assertModuleIsMaterialized();
|
||||
|
@ -314,8 +314,8 @@ void Value::takeName(Value *V) {
|
||||
ST->reinsertValue(this);
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
void Value::assertModuleIsMaterialized() const {
|
||||
#ifndef NDEBUG
|
||||
const GlobalValue *GV = dyn_cast<GlobalValue>(this);
|
||||
if (!GV)
|
||||
return;
|
||||
@ -323,8 +323,10 @@ void Value::assertModuleIsMaterialized() const {
|
||||
if (!M)
|
||||
return;
|
||||
assert(M->isMaterialized());
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
static bool contains(SmallPtrSetImpl<ConstantExpr *> &Cache, ConstantExpr *Expr,
|
||||
Constant *C) {
|
||||
if (!Cache.insert(Expr).second)
|
||||
|
Loading…
Reference in New Issue
Block a user