<div dir="ltr">We are still investigating, but one of the main differences seems to be that LLVM stops inlining AppendFromSelf:<div><a href="https://github.com/google/gipfeli/blob/master/stream.h#L90" class="m_4655862927169698634m_-2683054659442926181m_2820834621740642135cremed m_4655862927169698634m_-2683054659442926181cremed m_4655862927169698634cremed cremed" target="_blank">https://github.com/google/gipf<wbr>eli/blob/master/stream.h#L90</a><br></div><div><br></div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 13, 2017 at 3:04 PM, Daniel Jasper via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" class="m_4655862927169698634m_-2683054659442926181m_2820834621740642135cremed m_4655862927169698634m_-2683054659442926181cremed m_4655862927169698634cremed cremed" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: djasper<br>
Date: Fri Oct 13 07:04:21 2017<br>
New Revision: 315680<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=315680&view=rev" rel="noreferrer" class="m_4655862927169698634m_-2683054659442926181m_2820834621740642135cremed m_4655862927169698634m_-2683054659442926181cremed m_4655862927169698634cremed cremed" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject?rev=315680&view=rev</a><br>
Log:<br>
Revert r314923: "Recommit : Use the basic cost if a GEP is not used as addressing mode"<br>
<br>
Significantly reduces performancei (~30%) of gipfeli<br>
(<a href="https://github.com/google/gipfeli" rel="noreferrer" class="m_4655862927169698634m_-2683054659442926181m_2820834621740642135cremed m_4655862927169698634m_-2683054659442926181cremed m_4655862927169698634cremed cremed" target="_blank">https://github.com/google/gip<wbr>feli</a>)<br>
<br>
I have not yet managed to reproduce this regression with the open-source<br>
version of the benchmark on github, but will work with others to get a<br>
reproducer to you later today.<br>
<br>
Removed:<br>
llvm/trunk/test/Transforms/Sim<wbr>plifyCFG/SpeculativeExecGepCE.<wbr>ll<br>
Modified:<br>
llvm/trunk/include/llvm/Analys<wbr>is/TargetTransformInfo.h<br>
llvm/trunk/include/llvm/Analys<wbr>is/TargetTransformInfoImpl.h<br>
llvm/trunk/include/llvm/CodeGe<wbr>n/BasicTTIImpl.h<br>
llvm/trunk/include/llvm/IR/Ope<wbr>rator.h<br>
llvm/trunk/lib/Analysis/Target<wbr>TransformInfo.cpp<br>
llvm/trunk/lib/Transforms/Scal<wbr>ar/NaryReassociate.cpp<br>
llvm/trunk/lib/Transforms/Scal<wbr>ar/StraightLineStrengthReduce.<wbr>cpp<br>
llvm/trunk/test/Analysis/CostM<wbr>odel/AArch64/gep.ll<br>
llvm/trunk/test/Analysis/CostM<wbr>odel/X86/vector_gep.ll<br>
<br>
Modified: llvm/trunk/include/llvm/Analys<wbr>is/TargetTransformInfo.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/TargetTransformInfo.h?rev=315680&r1=315679&r2=315680&view=diff" rel="noreferrer" class="m_4655862927169698634m_-2683054659442926181m_2820834621740642135cremed m_4655862927169698634m_-2683054659442926181cremed m_4655862927169698634cremed cremed" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/include/llvm/<wbr>Analysis/TargetTransformInfo.h<wbr>?rev=315680&r1=315679&r2=31568<wbr>0&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/Analys<wbr>is/TargetTransformInfo.h (original)<br>
+++ llvm/trunk/include/llvm/Analys<wbr>is/TargetTransformInfo.h Fri Oct 13 07:04:21 2017<br>
@@ -193,13 +193,6 @@ public:<br>
int getGEPCost(Type *PointeeType, const Value *Ptr,<br>
ArrayRef<const Value *> Operands) const;<br>
<br>
- /// \brief Estimate the cost of a GEP operation when lowered.<br>
- ///<br>
- /// This user-based overload adds the ability to check if the GEP can be<br>
- /// folded into its users.<br>
- int getGEPCost(const GEPOperator *GEP,<br>
- ArrayRef<const Value *> Operands) const;<br>
-<br>
/// \brief Estimate the cost of a EXT operation when lowered.<br>
///<br>
/// The contract for this function is the same as \c getOperationCost except<br>
@@ -258,9 +251,9 @@ public:<br>
/// \brief Estimate the cost of a given IR user when lowered.<br>
///<br>
/// This can estimate the cost of either a ConstantExpr or Instruction when<br>
- /// lowered. It has two primary advantages over the \c getOperationCost above,<br>
- /// and one significant disadvantage: it can only be used when the IR<br>
- /// construct has already been formed.<br>
+ /// lowered. It has two primary advantages over the \c getOperationCost and<br>
+ /// \c getGEPCost above, and one significant disadvantage: it can only be<br>
+ /// used when the IR construct has already been formed.<br>
///<br>
/// The advantages are that it can inspect the SSA use graph to reason more<br>
/// accurately about the cost. For example, all-constant-GEPs can often be<br>
@@ -939,8 +932,6 @@ public:<br>
virtual int getOperationCost(unsigned Opcode, Type *Ty, Type *OpTy) = 0;<br>
virtual int getGEPCost(Type *PointeeType, const Value *Ptr,<br>
ArrayRef<const Value *> Operands) = 0;<br>
- virtual int getGEPCost(const GEPOperator *GEP,<br>
- ArrayRef<const Value *> Operands) = 0;<br>
virtual int getExtCost(const Instruction *I, const Value *Src) = 0;<br>
virtual int getCallCost(FunctionType *FTy, int NumArgs) = 0;<br>
virtual int getCallCost(const Function *F, int NumArgs) = 0;<br>
@@ -1122,10 +1113,6 @@ public:<br>
ArrayRef<const Value *> Operands) override {<br>
return Impl.getGEPCost(PointeeType, Ptr, Operands);<br>
}<br>
- int getGEPCost(const GEPOperator *GEP,<br>
- ArrayRef<const Value *> Operands) override {<br>
- return Impl.getGEPCost(GEP, Operands);<br>
- }<br>
int getExtCost(const Instruction *I, const Value *Src) override {<br>
return Impl.getExtCost(I, Src);<br>
}<br>
<br>
Modified: llvm/trunk/include/llvm/Analys<wbr>is/TargetTransformInfoImpl.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/TargetTransformInfoImpl.h?rev=315680&r1=315679&r2=315680&view=diff" rel="noreferrer" class="m_4655862927169698634m_-2683054659442926181m_2820834621740642135cremed m_4655862927169698634m_-2683054659442926181cremed m_4655862927169698634cremed cremed" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/include/llvm/<wbr>Analysis/TargetTransformInfoIm<wbr>pl.h?rev=315680&r1=315679&r2=3<wbr>15680&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/Analys<wbr>is/TargetTransformInfoImpl.h (original)<br>
+++ llvm/trunk/include/llvm/Analys<wbr>is/TargetTransformInfoImpl.h Fri Oct 13 07:04:21 2017<br>
@@ -728,38 +728,6 @@ public:<br>
return TTI::TCC_Basic;<br>
}<br>
<br>
- int getGEPCost(const GEPOperator *GEP, ArrayRef<const Value *> Operands) {<br>
- if (!isa<Instruction>(GEP))<br>
- return TTI::TCC_Basic;<br>
-<br>
- Type *PointeeType = GEP->getSourceElementType();<br>
- const Value *Ptr = GEP->getPointerOperand();<br>
-<br>
- if (getGEPCost(PointeeType, Ptr, Operands) == TTI::TCC_Free) {<br>
- // Should check if the GEP is actually used in load / store instructions.<br>
- // For simplicity, we check only direct users of the GEP.<br>
- //<br>
- // FIXME: GEPs could also be folded away as a part of addressing mode in<br>
- // load/store instructions together with other instructions (e.g., other<br>
- // GEPs). Handling all such cases must be expensive to be performed<br>
- // in this function, so we stay conservative for now.<br>
- for (const User *U : GEP->users()) {<br>
- const Operator *UOP = cast<Operator>(U);<br>
- const Value *PointerOperand = nullptr;<br>
- if (auto *LI = dyn_cast<LoadInst>(UOP))<br>
- PointerOperand = LI->getPointerOperand();<br>
- else if (auto *SI = dyn_cast<StoreInst>(UOP))<br>
- PointerOperand = SI->getPointerOperand();<br>
-<br>
- if ((!PointerOperand || PointerOperand != GEP) &&<br>
- !GEP->hasAllZeroIndices())<br>
- return TTI::TCC_Basic;<br>
- }<br>
- return TTI::TCC_Free;<br>
- }<br>
- return TTI::TCC_Basic;<br>
- }<br>
-<br>
using BaseT::getIntrinsicCost;<br>
<br>
unsigned getIntrinsicCost(Intrinsic::ID IID, Type *RetTy,<br>
@@ -783,9 +751,11 @@ public:<br>
if (A->isStaticAlloca())<br>
return TTI::TCC_Free;<br>
<br>
- if (const GEPOperator *GEP = dyn_cast<GEPOperator>(U))<br>
- return static_cast<T *>(this)->getGEPCost(GEP,<br>
+ if (const GEPOperator *GEP = dyn_cast<GEPOperator>(U)) {<br>
+ return static_cast<T *>(this)->getGEPCost(GEP->getS<wbr>ourceElementType(),<br>
+ GEP->getPointerOperand(),<br>
Operands.drop_front());<br>
+ }<br>
<br>
if (auto CS = ImmutableCallSite(U)) {<br>
const Function *F = CS.getCalledFunction();<br>
<br>
Modified: llvm/trunk/include/llvm/CodeGe<wbr>n/BasicTTIImpl.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/BasicTTIImpl.h?rev=315680&r1=315679&r2=315680&view=diff" rel="noreferrer" class="m_4655862927169698634m_-2683054659442926181m_2820834621740642135cremed m_4655862927169698634m_-2683054659442926181cremed m_4655862927169698634cremed cremed" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/include/llvm/<wbr>CodeGen/BasicTTIImpl.h?rev=315<wbr>680&r1=315679&r2=315680&view=d<wbr>iff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/CodeGe<wbr>n/BasicTTIImpl.h (original)<br>
+++ llvm/trunk/include/llvm/CodeGe<wbr>n/BasicTTIImpl.h Fri Oct 13 07:04:21 2017<br>
@@ -189,11 +189,6 @@ public:<br>
return BaseT::getGEPCost(PointeeType, Ptr, Operands);<br>
}<br>
<br>
- int getGEPCost(const GEPOperator *GEP,<br>
- ArrayRef<const Value *> Operands) {<br>
- return BaseT::getGEPCost(GEP, Operands);<br>
- }<br>
-<br>
int getExtCost(const Instruction *I, const Value *Src) {<br>
if (getTLI()->isExtFree(I))<br>
return TargetTransformInfo::TCC_Free;<br>
<br>
Modified: llvm/trunk/include/llvm/IR/Ope<wbr>rator.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/Operator.h?rev=315680&r1=315679&r2=315680&view=diff" rel="noreferrer" class="m_4655862927169698634m_-2683054659442926181m_2820834621740642135cremed m_4655862927169698634m_-2683054659442926181cremed m_4655862927169698634cremed cremed" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/include/llvm/<wbr>IR/Operator.h?rev=315680&r1=31<wbr>5679&r2=315680&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/IR/Ope<wbr>rator.h (original)<br>
+++ llvm/trunk/include/llvm/IR/Ope<wbr>rator.h Fri Oct 13 07:04:21 2017<br>
@@ -456,8 +456,6 @@ public:<br>
if (ConstantInt *C = dyn_cast<ConstantInt>(I))<br>
if (C->isZero())<br>
continue;<br>
- if (isa<ConstantAggregateZero>(I)<wbr>)<br>
- continue;<br>
return false;<br>
}<br>
return true;<br>
<br>
Modified: llvm/trunk/lib/Analysis/Target<wbr>TransformInfo.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/TargetTransformInfo.cpp?rev=315680&r1=315679&r2=315680&view=diff" rel="noreferrer" class="m_4655862927169698634m_-2683054659442926181m_2820834621740642135cremed m_4655862927169698634m_-2683054659442926181cremed m_4655862927169698634cremed cremed" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/lib/Analysis/<wbr>TargetTransformInfo.cpp?rev=31<wbr>5680&r1=315679&r2=315680&view=<wbr>diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/Analysis/Target<wbr>TransformInfo.cpp (original)<br>
+++ llvm/trunk/lib/Analysis/Target<wbr>TransformInfo.cpp Fri Oct 13 07:04:21 2017<br>
@@ -88,11 +88,6 @@ int TargetTransformInfo::getGEPCos<wbr>t(Type<br>
return TTIImpl->getGEPCost(PointeeTyp<wbr>e, Ptr, Operands);<br>
}<br>
<br>
-int TargetTransformInfo::getGEPCos<wbr>t(const GEPOperator *GEP,<br>
- ArrayRef<const Value *> Operands) const {<br>
- return TTIImpl->getGEPCost(GEP, Operands);<br>
-}<br>
-<br>
int TargetTransformInfo::getExtCos<wbr>t(const Instruction *I,<br>
const Value *Src) const {<br>
return TTIImpl->getExtCost(I, Src);<br>
<br>
Modified: llvm/trunk/lib/Transforms/Scal<wbr>ar/NaryReassociate.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/NaryReassociate.cpp?rev=315680&r1=315679&r2=315680&view=diff" rel="noreferrer" class="m_4655862927169698634m_-2683054659442926181m_2820834621740642135cremed m_4655862927169698634m_-2683054659442926181cremed m_4655862927169698634cremed cremed" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/lib/Transform<wbr>s/Scalar/NaryReassociate.cpp?r<wbr>ev=315680&r1=315679&r2=315680&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/Transforms/Scal<wbr>ar/NaryReassociate.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/Scal<wbr>ar/NaryReassociate.cpp Fri Oct 13 07:04:21 2017<br>
@@ -264,7 +264,7 @@ static bool isGEPFoldable(GetElementPtrI<br>
SmallVector<const Value*, 4> Indices;<br>
for (auto I = GEP->idx_begin(); I != GEP->idx_end(); ++I)<br>
Indices.push_back(*I);<br>
- return TTI->getGEPCost(cast<GEPOperat<wbr>or>(GEP),<br>
+ return TTI->getGEPCost(GEP->getSource<wbr>ElementType(), GEP->getPointerOperand(),<br>
Indices) == TargetTransformInfo::TCC_Free;<br>
}<br>
<br>
<br>
Modified: llvm/trunk/lib/Transforms/Scal<wbr>ar/StraightLineStrengthReduce.<wbr>cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp?rev=315680&r1=315679&r2=315680&view=diff" rel="noreferrer" class="m_4655862927169698634m_-2683054659442926181m_2820834621740642135cremed m_4655862927169698634m_-2683054659442926181cremed m_4655862927169698634cremed cremed" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/lib/Transform<wbr>s/Scalar/StraightLineStrengthR<wbr>educe.cpp?rev=315680&r1=315679<wbr>&r2=315680&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/Transforms/Scal<wbr>ar/StraightLineStrengthReduce.<wbr>cpp (original)<br>
+++ llvm/trunk/lib/Transforms/Scal<wbr>ar/StraightLineStrengthReduce.<wbr>cpp Fri Oct 13 07:04:21 2017<br>
@@ -239,7 +239,7 @@ static bool isGEPFoldable(GetElementPtrI<br>
SmallVector<const Value*, 4> Indices;<br>
for (auto I = GEP->idx_begin(); I != GEP->idx_end(); ++I)<br>
Indices.push_back(*I);<br>
- return TTI->getGEPCost(cast<GEPOperat<wbr>or>(GEP),<br>
+ return TTI->getGEPCost(GEP->getSource<wbr>ElementType(), GEP->getPointerOperand(),<br>
Indices) == TargetTransformInfo::TCC_Free;<br>
}<br>
<br>
<br>
Modified: llvm/trunk/test/Analysis/CostM<wbr>odel/AArch64/gep.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/CostModel/AArch64/gep.ll?rev=315680&r1=315679&r2=315680&view=diff" rel="noreferrer" class="m_4655862927169698634m_-2683054659442926181m_2820834621740642135cremed m_4655862927169698634m_-2683054659442926181cremed m_4655862927169698634cremed cremed" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/test/Analysis<wbr>/CostModel/AArch64/gep.ll?rev=<wbr>315680&r1=315679&r2=315680&vie<wbr>w=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/test/Analysis/CostM<wbr>odel/AArch64/gep.ll (original)<br>
+++ llvm/trunk/test/Analysis/CostM<wbr>odel/AArch64/gep.ll Fri Oct 13 07:04:21 2017<br>
@@ -290,49 +290,3 @@ define i64 @test36(i64* %p) {<br>
%v = load i64, i64* %a<br>
ret i64 %v<br>
}<br>
-<br>
-; CHECK-LABEL: test37<br>
-; CHECK: cost of 1 for instruction: {{.*}} = getelementptr inbounds i8*, i8**<br>
-define i8 @test37(i64 %j, i8** readonly %P) {<br>
-entry:<br>
- %arrayidx0 = getelementptr inbounds i8*, i8** %P, i64 %j<br>
- %l1 = call i8* @func(i8** %arrayidx0)<br>
- ret i8 0<br>
-}<br>
-<br>
-; CHECK-LABEL: test38<br>
-; CHECK: cost of 1 for instruction: {{.*}} = getelementptr inbounds i8*, i8**<br>
-define i8 @test38(i8** readonly %P) {<br>
-entry:<br>
- %arrayidx0 = getelementptr inbounds i8*, i8** %P, i64 10<br>
- %l1 = call i8* @func(i8** %arrayidx0)<br>
- ret i8 0<br>
-}<br>
-<br>
-; CHECK-LABEL:test39<br>
-; CHECK: cost of 0 for instruction: {{.*}} = getelementptr inbounds i8*, i8**<br>
-define i8 @test39(i8** readonly %P) {<br>
-entry:<br>
- %arrayidx0 = getelementptr inbounds i8*, i8** %P, i64 0<br>
- %l1 = call i8* @func(i8** %arrayidx0)<br>
- ret i8 0<br>
-}<br>
-<br>
-; CHECK-LABEL:test40<br>
-; CHECK: cost of 1 for instruction: {{.*}} = getelementptr inbounds i8*, i8**<br>
-define i8** @test40(i8** readonly %P) {<br>
-entry:<br>
- %arrayidx0 = getelementptr inbounds i8*, i8** %P, i64 10<br>
- ret i8** %arrayidx0<br>
-}<br>
-<br>
-; CHECK-LABEL:test41<br>
-; CHECK: cost of 1 for instruction: {{.*}} = getelementptr inbounds i8, i8*<br>
-define i8 @test41(i8* %V, i8** readonly %P) {<br>
-entry:<br>
- %arrayidx0 = getelementptr inbounds i8, i8* %V, i64 10<br>
- store i8* %arrayidx0, i8** %P<br>
- ret i8 0<br>
-}<br>
-<br>
-declare i8* @func(i8**)<br>
<br>
Modified: llvm/trunk/test/Analysis/CostM<wbr>odel/X86/vector_gep.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/CostModel/X86/vector_gep.ll?rev=315680&r1=315679&r2=315680&view=diff" rel="noreferrer" class="m_4655862927169698634m_-2683054659442926181m_2820834621740642135cremed m_4655862927169698634m_-2683054659442926181cremed m_4655862927169698634cremed cremed" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/test/Analysis<wbr>/CostModel/X86/vector_gep.ll?r<wbr>ev=315680&r1=315679&r2=315680&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/test/Analysis/CostM<wbr>odel/X86/vector_gep.ll (original)<br>
+++ llvm/trunk/test/Analysis/CostM<wbr>odel/X86/vector_gep.ll Fri Oct 13 07:04:21 2017<br>
@@ -10,7 +10,7 @@ define <4 x i32> @foov(<4 x %struct.S*><br>
%vector = shufflevector <4 x i64> %temp, <4 x i64> undef, <4 x i32> zeroinitializer<br>
;CHECK: cost of 0 for instruction: {{.*}} getelementptr inbounds %struct.S<br>
%B = getelementptr inbounds %struct.S, <4 x %struct.S*> %s, <4 x i32> zeroinitializer, <4 x i32> zeroinitializer<br>
-;CHECK: cost of 1 for instruction: {{.*}} getelementptr inbounds [1000 x i32]<br>
+;CHECK: cost of 0 for instruction: {{.*}} getelementptr inbounds [1000 x i32]<br>
%arrayidx = getelementptr inbounds [1000 x i32], <4 x [1000 x i32]*> %B, <4 x i64> zeroinitializer, <4 x i64> %vector<br>
%res = call <4 x i32> @llvm.masked.gather.v4i32.v4p0<wbr>i32(<4 x i32*> %arrayidx, i32 4, <4 x i1> <i1 true, i1 true, i1 true, i1 true>, <4 x i32> undef)<br>
ret <4 x i32> %res<br>
<br>
Removed: llvm/trunk/test/Transforms/Sim<wbr>plifyCFG/SpeculativeExecGepCE.<wbr>ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SimplifyCFG/SpeculativeExecGepCE.ll?rev=315679&view=auto" rel="noreferrer" class="m_4655862927169698634m_-2683054659442926181m_2820834621740642135cremed m_4655862927169698634m_-2683054659442926181cremed m_4655862927169698634cremed cremed" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/test/Transfor<wbr>ms/SimplifyCFG/SpeculativeExec<wbr>GepCE.ll?rev=315679&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/test/Transforms/Sim<wbr>plifyCFG/SpeculativeExecGepCE.<wbr>ll (original)<br>
+++ llvm/trunk/test/Transforms/Sim<wbr>plifyCFG/SpeculativeExecGepCE.<wbr>ll (removed)<br>
@@ -1,28 +0,0 @@<br>
-; RUN: opt < %s -simplifycfg -phi-node-folding-threshold=0 -S | FileCheck %s<br>
-<br>
-target triple = "x86_64-unknown-linux-gnu"<br>
-<br>
-@d_buf = internal constant [8 x i8] [i8 126, i8 127, i8 128, i8 129, i8 130, i8 131, i8 132, i8 133], align 8<br>
-@a = internal constant { i8*, i64} {i8* getelementptr inbounds ([8 x i8], [8 x i8]* @d_buf, i64 0, i64 0), i64 0}<br>
-<br>
-; CHECK-LABEL: @test<br>
-; CHECK-LABEL: end:<br>
-; CHECK: %x1 = phi i8*<br>
-define i8* @test(i1* %dummy, i8* %a, i8* %b, i8 %v) {<br>
-<br>
-entry:<br>
- %cond1 = load volatile i1, i1* %dummy<br>
- br i1 %cond1, label %if, label %end<br>
-<br>
-if:<br>
- %cond2 = load volatile i1, i1* %dummy<br>
- br i1 %cond2, label %then, label %end<br>
-<br>
-then:<br>
- br label %end<br>
-<br>
-end:<br>
- %x1 = phi i8* [ %a, %entry ], [ %b, %if ], [getelementptr inbounds ([8 x i8], [8 x i8]* @d_buf, i64 0, i64 0) , %then ]<br>
-<br>
- ret i8* %x1<br>
-}<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" class="m_4655862927169698634m_-2683054659442926181m_2820834621740642135cremed m_4655862927169698634m_-2683054659442926181cremed m_4655862927169698634cremed cremed" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" class="m_4655862927169698634m_-2683054659442926181m_2820834621740642135cremed m_4655862927169698634m_-2683054659442926181cremed m_4655862927169698634cremed cremed" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>