From 9c5822a966572ea78f4e818870d4229c7a855749 Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Fri, 18 Mar 2011 23:28:02 +0000 Subject: [PATCH] Consider debug info intrinsics pointing to null value as dead instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127922 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Utils/Local.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/Transforms/Utils/Local.cpp b/lib/Transforms/Utils/Local.cpp index e54dfb3dc73..19b999722db 100644 --- a/lib/Transforms/Utils/Local.cpp +++ b/lib/Transforms/Utils/Local.cpp @@ -211,7 +211,20 @@ bool llvm::ConstantFoldTerminator(BasicBlock *BB) { bool llvm::isInstructionTriviallyDead(Instruction *I) { if (!I->use_empty() || isa(I)) return false; - // We don't want debug info removed by anything this general. + // We don't want debug info removed by anything this general, unless + // debug info is empty. + if (DbgDeclareInst *DDI = dyn_cast(I)) { + if (DDI->getAddress()) + return false; + else + return true; + } else if (DbgValueInst *DVI = dyn_cast(I)) { + if (DVI->getValue()) + return false; + else + return true; + } + if (isa(I)) return false; if (!I->mayHaveSideEffects()) return true;