[llvm] [NFC] [DSE] Refactor DSE (PR #100956)
Haopeng Liu via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 19 10:17:09 PDT 2024
================
@@ -1438,32 +1481,33 @@ struct DSEState {
// AliasAnalysis does not account for loops. Limit elimination to
// candidates for which we can guarantee they always store to the same
// memory location and not located in different loops.
- if (!isGuaranteedLoopIndependent(CurrentI, KillingI, *CurrentLoc)) {
+ if (!isGuaranteedLoopIndependent(CurrentI, KillingLoc.DefInst,
+ *CurrentLoc)) {
LLVM_DEBUG(dbgs() << " ... not guaranteed loop independent\n");
CanOptimize = false;
continue;
}
- if (IsMemTerm) {
+ if (isMemTerminatorInst(KillingLoc.DefInst)) {
// If the killing def is a memory terminator (e.g. lifetime.end), check
// the next candidate if the current Current does not write the same
// underlying object as the terminator.
- if (!isMemTerminator(*CurrentLoc, CurrentI, KillingI)) {
+ if (!isMemTerminator(*CurrentLoc, CurrentI, KillingLoc.DefInst)) {
CanOptimize = false;
continue;
}
} else {
int64_t KillingOffset = 0;
int64_t DeadOffset = 0;
- auto OR = isOverwrite(KillingI, CurrentI, KillingLoc, *CurrentLoc,
- KillingOffset, DeadOffset);
+ auto OR = isOverwrite(KillingLoc.DefInst, CurrentI, KillingLoc.MemLoc,
+ *CurrentLoc, KillingOffset, DeadOffset);
if (CanOptimize) {
// CurrentDef is the earliest write clobber of KillingDef. Use it as
----------------
haopliu wrote:
Done.
https://github.com/llvm/llvm-project/pull/100956
More information about the llvm-commits
mailing list