diff options
| author | Andrew Kaylor <andrew.kaylor@intel.com> | 2015-03-10 23:55:38 +0000 |
|---|---|---|
| committer | Andrew Kaylor <andrew.kaylor@intel.com> | 2015-03-10 23:55:38 +0000 |
| commit | b93fb82b3f8efa33ca1dbb4b47876369cc5297b8 (patch) | |
| tree | 703c72e3299d820aa09d4481df3da4bb23819350 /llvm | |
| parent | 433c432b7e43ce8092a8e097530f36731d3ad6e0 (diff) | |
| download | bcm5719-llvm-b93fb82b3f8efa33ca1dbb4b47876369cc5297b8.tar.gz bcm5719-llvm-b93fb82b3f8efa33ca1dbb4b47876369cc5297b8.zip | |
Fix Value dangling reference debug output
llvm-svn: 231889
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/IR/TypeFinder.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/IR/Value.cpp | 10 |
2 files changed, 5 insertions, 7 deletions
diff --git a/llvm/lib/IR/TypeFinder.cpp b/llvm/lib/IR/TypeFinder.cpp index e2fb8f84b18..1d2b808d650 100644 --- a/llvm/lib/IR/TypeFinder.cpp +++ b/llvm/lib/IR/TypeFinder.cpp @@ -68,7 +68,7 @@ void TypeFinder::run(const Module &M, bool onlyNamed) { // instructions with this loop.) for (User::const_op_iterator OI = I.op_begin(), OE = I.op_end(); OI != OE; ++OI) - if (!isa<Instruction>(OI)) + if (*OI && !isa<Instruction>(OI)) incorporateValue(*OI); // Incorporate types hiding in metadata. diff --git a/llvm/lib/IR/Value.cpp b/llvm/lib/IR/Value.cpp index 00ec81fea80..2d9c306d723 100644 --- a/llvm/lib/IR/Value.cpp +++ b/llvm/lib/IR/Value.cpp @@ -69,15 +69,13 @@ Value::~Value() { #ifndef NDEBUG // Only in -g mode... // Check to make sure that there are no uses of this value that are still // around when the value is destroyed. If there are, then we have a dangling - // reference and something is wrong. This code is here to print out what is - // still being referenced. The value in question should be printed as - // a <badref> + // reference and something is wrong. This code is here to print out where + // the value is still being referenced. // if (!use_empty()) { dbgs() << "While deleting: " << *VTy << " %" << getName() << "\n"; - for (use_iterator I = use_begin(), E = use_end(); I != E; ++I) - dbgs() << "Use still stuck around after Def is destroyed:" - << **I << "\n"; + for (auto *U : users()) + dbgs() << "Use still stuck around after Def is destroyed:" << *U << "\n"; } #endif assert(use_empty() && "Uses remain when a value is destroyed!"); |

