From 09c3e8ec00d23f43a01df9069d050036a743e74b Mon Sep 17 00:00:00 2001 From: Dale Johannesen Date: Tue, 3 Mar 2009 22:36:47 +0000 Subject: Instruction counters must skip the bitcasts that feed into llvm.dbg.declare nodes, as well as the debug directives themselves. llvm-svn: 65976 --- llvm/lib/Transforms/Utils/BasicBlockUtils.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'llvm/lib/Transforms/Utils/BasicBlockUtils.cpp') diff --git a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp index 2887bdc..fd7b7da 100644 --- a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp +++ b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp @@ -477,6 +477,12 @@ Value *llvm::FindAvailableLoadedValue(Value *Ptr, BasicBlock *ScanBB, Instruction *Inst = --ScanFrom; if (isa(Inst)) continue; + // Likewise, we skip bitcasts that feed into a llvm.dbg.declare; these are + // not present when debugging is off. + if (isa(Inst) && Inst->hasOneUse() && + isa(Inst->use_begin())) + continue; + // Restore ScanFrom to expected value in case next test succeeds ScanFrom++; -- cgit v1.1