From dd3224b24f1db7de7739fe865af6df441e4ca75d Mon Sep 17 00:00:00 2001 From: Andrew Kaylor Date: Tue, 10 Mar 2015 23:55:38 +0000 Subject: [PATCH] Fix Value dangling reference debug output git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231889 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/IR/TypeFinder.cpp | 2 +- lib/IR/Value.cpp | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/IR/TypeFinder.cpp b/lib/IR/TypeFinder.cpp index e2fb8f84b18..1d2b808d650 100644 --- a/lib/IR/TypeFinder.cpp +++ b/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(OI)) + if (*OI && !isa(OI)) incorporateValue(*OI); // Incorporate types hiding in metadata. diff --git a/lib/IR/Value.cpp b/lib/IR/Value.cpp index 00ec81fea80..2d9c306d723 100644 --- a/lib/IR/Value.cpp +++ b/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 + // 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!"); -- 2.11.0