mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-03 14:31:10 +00:00
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. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@206054 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
efc99c2196
commit
644b118230
@ -25,12 +25,14 @@ static bool CheapToScalarize(Value *V, bool isConstant) {
|
||||
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 (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;
|
||||
|
||||
|
@ -16,3 +16,11 @@ define void @test (float %b, <8 x float> * %p) {
|
||||
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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user