diff options
| author | David L. Jones <dlj@google.com> | 2019-01-31 03:28:46 +0000 |
|---|---|---|
| committer | David L. Jones <dlj@google.com> | 2019-01-31 03:28:46 +0000 |
| commit | d81f23071c8e6e31cd54486fb0b0372957ff5fa9 (patch) | |
| tree | 5d74bd7d47707eb2429b83a88b836a07d58bbee2 /llvm/lib/CodeGen | |
| parent | 7e0219d979e52dd6795e4187f313c76d23599123 (diff) | |
| download | bcm5719-llvm-d81f23071c8e6e31cd54486fb0b0372957ff5fa9.tar.gz bcm5719-llvm-d81f23071c8e6e31cd54486fb0b0372957ff5fa9.zip | |
Revert "Reapply "[CGP] Check for existing inttotpr before creating new one""
This change reverts r351626.
The changes in r351626 cause quadratic work in several cases. (See r351626 thread on llvm-commits for details.)
llvm-svn: 352722
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/CodeGenPrepare.cpp | 22 |
1 files changed, 4 insertions, 18 deletions
diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp index 24c926c01a5..e382798b692 100644 --- a/llvm/lib/CodeGen/CodeGenPrepare.cpp +++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp @@ -4661,27 +4661,13 @@ bool CodeGenPrepare::optimizeMemoryInst(Instruction *MemoryInst, Value *Addr, // will look through it and provide only the integer value. In that case, // use it here. if (!DL->isNonIntegralPointerType(Addr->getType())) { - const auto getResultPtr = [MemoryInst, Addr, - &Builder](Value *Reg) -> Value * { - BasicBlock *BB = MemoryInst->getParent(); - for (User *U : Reg->users()) - if (auto *I2P = dyn_cast<IntToPtrInst>(U)) - if (I2P->getType() == Addr->getType() && I2P->getParent() == BB) { - auto *RegInst = dyn_cast<Instruction>(Reg); - if (RegInst && RegInst->getParent() == BB && - !isa<PHINode>(RegInst) && !RegInst->isEHPad()) - I2P->moveAfter(RegInst); - else - I2P->moveBefore(*BB, BB->getFirstInsertionPt()); - return I2P; - } - return Builder.CreateIntToPtr(Reg, Addr->getType(), "sunkaddr"); - }; if (!ResultPtr && AddrMode.BaseReg) { - ResultPtr = getResultPtr(AddrMode.BaseReg); + ResultPtr = Builder.CreateIntToPtr(AddrMode.BaseReg, Addr->getType(), + "sunkaddr"); AddrMode.BaseReg = nullptr; } else if (!ResultPtr && AddrMode.Scale == 1) { - ResultPtr = getResultPtr(AddrMode.ScaledReg); + ResultPtr = Builder.CreateIntToPtr(AddrMode.ScaledReg, Addr->getType(), + "sunkaddr"); AddrMode.Scale = 0; } } |

