<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>