aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/LoopRotationUtils.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/LoopRotationUtils.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/LoopRotationUtils.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/LoopRotationUtils.cpp9
1 files changed, 3 insertions, 6 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopRotationUtils.cpp b/llvm/lib/Transforms/Utils/LoopRotationUtils.cpp
index 2c68e4b..784d0e4 100644
--- a/llvm/lib/Transforms/Utils/LoopRotationUtils.cpp
+++ b/llvm/lib/Transforms/Utils/LoopRotationUtils.cpp
@@ -384,14 +384,11 @@ bool LoopRotate::rotateLoop(Loop *L, bool SimplifiedLatch) {
// possible or create a clone in the OldPreHeader if not.
Instruction *LoopEntryBranch = OrigPreheader->getTerminator();
- // Record all debug intrinsics preceding LoopEntryBranch to avoid
- // duplication.
+ // Record all debug intrinsics preceding LoopEntryBranch to avoid duplication.
using DbgIntrinsicHash =
- std::pair<std::pair<hash_code, DILocalVariable *>, DIExpression *>;
+ std::pair<std::pair<Value *, DILocalVariable *>, DIExpression *>;
auto makeHash = [](DbgVariableIntrinsic *D) -> DbgIntrinsicHash {
- auto VarLocOps = D->location_ops();
- return {{hash_combine_range(VarLocOps.begin(), VarLocOps.end()),
- D->getVariable()},
+ return {{D->getVariableLocationOp(0), D->getVariable()},
D->getExpression()};
};
SmallDenseSet<DbgIntrinsicHash, 8> DbgIntrinsics;