[llvm] r351598 - Revert "[CGP] Check for existing inttotpr before creating new one"
Roman Tereshin via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 18 13:38:44 PST 2019
Author: rtereshin
Date: Fri Jan 18 13:38:44 2019
New Revision: 351598
URL: http://llvm.org/viewvc/llvm-project?rev=351598&view=rev
Log:
Revert "[CGP] Check for existing inttotpr before creating new one"
This reverts commit r351582.
Bots are failing. Reverting this to fix and re-commit later.
Removed:
llvm/trunk/test/Transforms/CodeGenPrepare/X86/sink-addrmode-cse-inttoptrs.ll
Modified:
llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp
Modified: llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp?rev=351598&r1=351597&r2=351598&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp (original)
+++ llvm/trunk/lib/CodeGen/CodeGenPrepare.cpp Fri Jan 18 13:38:44 2019
@@ -4664,22 +4664,13 @@ bool CodeGenPrepare::optimizeMemoryInst(
// 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 * {
- for (User *U : Reg->users())
- if (auto *I2P = dyn_cast<IntToPtrInst>(U))
- if (I2P->getType() == Addr->getType() &&
- I2P->getParent() == MemoryInst->getParent()) {
- I2P->moveBefore(MemoryInst->getParent()->getFirstNonPHI());
- 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;
}
}
Removed: llvm/trunk/test/Transforms/CodeGenPrepare/X86/sink-addrmode-cse-inttoptrs.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/CodeGenPrepare/X86/sink-addrmode-cse-inttoptrs.ll?rev=351597&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/CodeGenPrepare/X86/sink-addrmode-cse-inttoptrs.ll (original)
+++ llvm/trunk/test/Transforms/CodeGenPrepare/X86/sink-addrmode-cse-inttoptrs.ll (removed)
@@ -1,40 +0,0 @@
-; RUN: opt -mtriple=x86_64-- -codegenprepare %s -S -o - | FileCheck %s --check-prefix=CGP
-; RUN: opt -mtriple=x86_64-- -codegenprepare -load-store-vectorizer %s -S -o - | FileCheck %s --check-prefix=LSV
-
-; Make sure CodeGenPrepare doesn't emit multiple inttoptr instructions
-; of the same integer value while sinking address computations, but
-; rather CSEs them on the fly: excessive inttoptr's confuse SCEV
-; into thinking that related pointers have nothing to do with each other.
-;
-; Triggering this problem involves having just right addressing modes,
-; and verifying that the motivating pass (LoadStoreVectorizer) is able
-; to benefit from it - just right LSV-policies. Hence the atypical combination
-; of the target and datalayout / address spaces in this test.
-
-target datalayout = "p1:32:32:32"
-
-define void @main(i32 %tmp, i32 %off) {
-; CGP: = inttoptr
-; CGP-NOT: = inttoptr
-; LSV: = load <2 x float>
-; LSV: = load <2 x float>
-entry:
- %tmp1 = inttoptr i32 %tmp to float addrspace(1)*
- %arrayidx.i.7 = getelementptr inbounds float, float addrspace(1)* %tmp1, i32 %off
- %add20.i.7 = add i32 %off, 1
- %arrayidx22.i.7 = getelementptr inbounds float, float addrspace(1)* %tmp1, i32 %add20.i.7
- br label %for.body
-
-for.body:
- %tmp8 = phi float [ undef, %entry ], [ %tmp62, %for.body ]
- %tmp28 = load float, float addrspace(1)* %arrayidx.i.7
- %tmp29 = load float, float addrspace(1)* %arrayidx22.i.7
- %arrayidx.i321.7 = getelementptr inbounds float, float addrspace(1)* %tmp1, i32 0
- %tmp43 = load float, float addrspace(1)* %arrayidx.i321.7
- %arrayidx22.i327.7 = getelementptr inbounds float, float addrspace(1)* %tmp1, i32 1
- %tmp44 = load float, float addrspace(1)* %arrayidx22.i327.7
- %tmp62 = tail call fast float @foo(float %tmp8, float %tmp44, float %tmp43, float %tmp29, float %tmp28)
- br label %for.body
-}
-
-declare float @foo(float, float, float, float, float)
More information about the llvm-commits
mailing list