diff options
author | Devang Patel <dpatel@apple.com> | 2011-05-16 21:24:05 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2011-05-16 21:24:05 +0000 |
commit | 8e60ff11dbb1596a5e9bdb43581fce215c9efc85 (patch) | |
tree | fcb76c2c3e5d8c7973b8cb3b75ad75012a994be8 /llvm/lib/Transforms/Utils/Local.cpp | |
parent | 2701815ed8fb30fa020026c33683ce9e55717b60 (diff) | |
download | bcm5719-llvm-8e60ff11dbb1596a5e9bdb43581fce215c9efc85.tar.gz bcm5719-llvm-8e60ff11dbb1596a5e9bdb43581fce215c9efc85.zip |
Preserve debug info for unused zero extended boolean argument.
Radar 9422775.
llvm-svn: 131422
Diffstat (limited to 'llvm/lib/Transforms/Utils/Local.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/Local.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp index 4bca2fc1fb9..5af8c8b193e 100644 --- a/llvm/lib/Transforms/Utils/Local.cpp +++ b/llvm/lib/Transforms/Utils/Local.cpp @@ -785,10 +785,19 @@ bool llvm::ConvertDebugDeclareToDebugValue(DbgDeclareInst *DDI, if (!DIVar.Verify()) return false; - Instruction *DbgVal = - Builder.insertDbgValueIntrinsic(SI->getOperand(0), 0, - DIVar, SI); - + Instruction *DbgVal = NULL; + // If an argument is zero extended then use argument directly. The ZExt + // may be zapped by an optimization pass in future. + Argument *ExtendedArg = NULL; + if (ZExtInst *ZExt = dyn_cast<ZExtInst>(SI->getOperand(0))) + ExtendedArg = dyn_cast<Argument>(ZExt->getOperand(0)); + if (SExtInst *SExt = dyn_cast<SExtInst>(SI->getOperand(0))) + ExtendedArg = dyn_cast<Argument>(SExt->getOperand(0)); + if (ExtendedArg) + DbgVal = Builder.insertDbgValueIntrinsic(ExtendedArg, 0, DIVar, SI); + else + DbgVal = Builder.insertDbgValueIntrinsic(SI->getOperand(0), 0, DIVar, SI); + // Propagate any debug metadata from the store onto the dbg.value. DebugLoc SIDL = SI->getDebugLoc(); if (!SIDL.isUnknown()) |