aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/Debugify.cpp
diff options
context:
space:
mode:
authorHans Wennborg <hans@chromium.org>2021-03-17 13:36:48 +0100
committerHans Wennborg <hans@chromium.org>2021-03-17 13:36:48 +0100
commit01ac6d1587e8613ba4278786e8341f8b492ac941 (patch)
treebaf00c4693ff3fafe624fc178ca78286f8ae3811 /llvm/lib/Transforms/Utils/Debugify.cpp
parentc165a99a1b8861af87e0509a2e14debf2764804b (diff)
downloadllvm-01ac6d1587e8613ba4278786e8341f8b492ac941.zip
llvm-01ac6d1587e8613ba4278786e8341f8b492ac941.tar.gz
llvm-01ac6d1587e8613ba4278786e8341f8b492ac941.tar.bz2
Revert "[DebugInfo] Handle multiple variable location operands in IR"
This caused non-deterministic compiler output; see comment on the code review. > This patch updates the various IR passes to correctly handle dbg.values with a > DIArgList location. This patch does not actually allow DIArgLists to be produced > by salvageDebugInfo, and it does not affect any pass after codegen-prepare. > Other than that, it should cover every IR pass. > > Most of the changes simply extend code that operated on a single debug value to > operate on the list of debug values in the style of any_of, all_of, for_each, > etc. Instances of setOperand(0, ...) have been replaced with with > replaceVariableLocationOp, which takes the value that is being replaced as an > additional argument. In places where this value isn't readily available, we have > to track the old value through to the point where it gets replaced. > > Differential Revision: https://reviews.llvm.org/D88232 This reverts commit df69c69427dea7f5b3b3a4d4564bc77b0926ec88.
Diffstat (limited to 'llvm/lib/Transforms/Utils/Debugify.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/Debugify.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Utils/Debugify.cpp b/llvm/lib/Transforms/Utils/Debugify.cpp
index 73a3a40..fc42f2c5 100644
--- a/llvm/lib/Transforms/Utils/Debugify.cpp
+++ b/llvm/lib/Transforms/Utils/Debugify.cpp
@@ -554,16 +554,15 @@ bool diagnoseMisSizedDbgValue(Module &M, DbgValueInst *DVI) {
//
// TODO: This, along with a check for non-null value operands, should be
// promoted to verifier failures.
+ Value *V = DVI->getValue();
+ if (!V)
+ return false;
// For now, don't try to interpret anything more complicated than an empty
// DIExpression. Eventually we should try to handle OP_deref and fragments.
if (DVI->getExpression()->getNumElements())
return false;
- Value *V = DVI->getVariableLocationOp(0);
- if (!V)
- return false;
-
Type *Ty = V->getType();
uint64_t ValueOperandSize = getAllocSizeInBits(M, Ty);
Optional<uint64_t> DbgVarSize = DVI->getFragmentSizeInBits();