[llvm-branch-commits] [llvm-branch] r206054 - Merging r200028:
Tom Stellard
thomas.stellard at amd.com
Fri Apr 11 12:35:42 PDT 2014
Author: tstellar
Date: Fri Apr 11 14:35:42 2014
New Revision: 206054
URL: http://llvm.org/viewvc/llvm-project?rev=206054&view=rev
Log:
Merging r200028:
------------------------------------------------------------------------
r200028 | benny.kra | 2014-01-24 14:02:37 -0500 (Fri, 24 Jan 2014) | 4 lines
InstCombine: Don't try to use aggregate elements of ConstantExprs.
PR18600.
------------------------------------------------------------------------
Modified:
llvm/branches/release_34/lib/Transforms/InstCombine/InstCombineVectorOps.cpp
llvm/branches/release_34/test/Transforms/InstCombine/vec_extract_var_elt.ll
Modified: llvm/branches/release_34/lib/Transforms/InstCombine/InstCombineVectorOps.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_34/lib/Transforms/InstCombine/InstCombineVectorOps.cpp?rev=206054&r1=206053&r2=206054&view=diff
==============================================================================
--- llvm/branches/release_34/lib/Transforms/InstCombine/InstCombineVectorOps.cpp (original)
+++ llvm/branches/release_34/lib/Transforms/InstCombine/InstCombineVectorOps.cpp Fri Apr 11 14:35:42 2014
@@ -25,11 +25,13 @@ static bool CheapToScalarize(Value *V, b
if (isConstant) return true;
// If all elts are the same, we can extract it and use any of the values.
- Constant *Op0 = C->getAggregateElement(0U);
- for (unsigned i = 1, e = V->getType()->getVectorNumElements(); i != e; ++i)
- if (C->getAggregateElement(i) != Op0)
- return false;
- return true;
+ if (Constant *Op0 = C->getAggregateElement(0U)) {
+ for (unsigned i = 1, e = V->getType()->getVectorNumElements(); i != e;
+ ++i)
+ if (C->getAggregateElement(i) != Op0)
+ return false;
+ return true;
+ }
}
Instruction *I = dyn_cast<Instruction>(V);
if (!I) return false;
Modified: llvm/branches/release_34/test/Transforms/InstCombine/vec_extract_var_elt.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_34/test/Transforms/InstCombine/vec_extract_var_elt.ll?rev=206054&r1=206053&r2=206054&view=diff
==============================================================================
--- llvm/branches/release_34/test/Transforms/InstCombine/vec_extract_var_elt.ll (original)
+++ llvm/branches/release_34/test/Transforms/InstCombine/vec_extract_var_elt.ll Fri Apr 11 14:35:42 2014
@@ -16,3 +16,11 @@ define void @test (float %b, <8 x float>
ret void
}
+; PR18600
+define i32 @test2(i32 %i) {
+ %e = extractelement <4 x i32> bitcast (<2 x i64> <i64 1, i64 2> to <4 x i32>), i32 %i
+ ret i32 %e
+
+; CHECK-LABEL: @test2
+; CHECK: extractelement
+}
More information about the llvm-branch-commits
mailing list