diff options
author | Jordan Rupprecht <rupprecht@google.com> | 2023-04-27 19:16:32 -0700 |
---|---|---|
committer | Jordan Rupprecht <rupprecht@google.com> | 2023-04-27 19:16:32 -0700 |
commit | fbf42f1fe2b541ea039ea576f57040eec2ff9480 (patch) | |
tree | ad0b9f07afc2092643fde2296f2ff04d1d84870c /llvm/lib/CodeGen/CodeGenPrepare.cpp | |
parent | 876df74dd47196a9ca3b4fff21ffb5441491a0a0 (diff) | |
download | llvm-fbf42f1fe2b541ea039ea576f57040eec2ff9480.zip llvm-fbf42f1fe2b541ea039ea576f57040eec2ff9480.tar.gz llvm-fbf42f1fe2b541ea039ea576f57040eec2ff9480.tar.bz2 |
Revert "[CodeGenPrepare] Estimate liveness of loop invariants when checking for address folding profitability"
This reverts commit 5344d8e10bb7d8672d4bfae8adb010465470d51b.
It causes non-determinism when building clang. See the review thread on D143897.
Diffstat (limited to 'llvm/lib/CodeGen/CodeGenPrepare.cpp')
-rw-r--r-- | llvm/lib/CodeGen/CodeGenPrepare.cpp | 26 |
1 files changed, 1 insertions, 25 deletions
diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp index 96fe94f..c783182 100644 --- a/llvm/lib/CodeGen/CodeGenPrepare.cpp +++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp @@ -268,10 +268,6 @@ static cl::opt<unsigned> MaxAddressUsersToScan("cgp-max-address-users-to-scan", cl::init(100), cl::Hidden, cl::desc("Max number of address users to look at")); - -static cl::opt<unsigned> MaxLoopInvUsersToScan( - "cgp-max-loop-inv-users-to-scan", cl::init(20), cl::Hidden, - cl::desc("Max number of loop invariant users to look at")); namespace { enum ExtType { @@ -5064,19 +5060,6 @@ static bool FindAllMemoryUses( PSI, BFI, SeenInsts); } -static bool isUsedInLoop(const Value *V, const Loop *L) { - unsigned N = 0; - - for (const Use &U : V->uses()) { - if (++N > MaxLoopInvUsersToScan) - break; - const Instruction *UserI = cast<Instruction>(U.getUser()); - if (L->contains(UserI->getParent())) - return true; - } - - return false; -} /// Return true if Val is already known to be live at the use site that we're /// folding it into. If so, there is no cost to include it in the addressing @@ -5100,17 +5083,10 @@ bool AddressingModeMatcher::valueAlreadyLiveAtInst(Value *Val, if (AI->isStaticAlloca()) return true; - // If the value is loop invariant and is used in the loop which contains the - // memory instruction, it's live. - BasicBlock *BB = MemoryInst->getParent(); - if (Loop *L = LI.getLoopFor(BB); - L && L->isLoopInvariant(Val) && isUsedInLoop(Val, L)) - return true; - // Check to see if this value is already used in the memory instruction's // block. If so, it's already live into the block at the very least, so we // can reasonably fold it. - return Val->isUsedInBasicBlock(BB); + return Val->isUsedInBasicBlock(MemoryInst->getParent()); } /// It is possible for the addressing mode of the machine to fold the specified |