mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +00:00
Fix PR12000. Some vector operations may use scalar operands with types
that are greater than the vector element type. For example BUILD_VECTOR of type <1 x i1> with a constant i8 operand. This patch fixes the assertion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150477 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fc52a52323
commit
8b7c3d0ee4
@ -748,7 +748,11 @@ void DAGTypeLegalizer::SetSoftenedFloat(SDValue Op, SDValue Result) {
|
||||
}
|
||||
|
||||
void DAGTypeLegalizer::SetScalarizedVector(SDValue Op, SDValue Result) {
|
||||
assert(Result.getValueType() == Op.getValueType().getVectorElementType() &&
|
||||
// Note that in some cases vector operation operands may be greater than
|
||||
// the vector element type. For example BUILD_VECTOR of type <1 x i1> with
|
||||
// a constant i8 operand.
|
||||
assert(Result.getValueType().getSizeInBits() >=
|
||||
Op.getValueType().getVectorElementType().getSizeInBits() &&
|
||||
"Invalid type for scalarized vector");
|
||||
AnalyzeNewValue(Result);
|
||||
|
||||
|
13
test/CodeGen/X86/2012-02-14-scalar.ll
Normal file
13
test/CodeGen/X86/2012-02-14-scalar.ll
Normal file
@ -0,0 +1,13 @@
|
||||
; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx -mattr=+avx
|
||||
target triple = "x86_64-unknown-linux-gnu"
|
||||
; Make sure we are not crashing on this one
|
||||
define void @autogen_28112_5000() {
|
||||
BB:
|
||||
%S17 = icmp sgt <1 x i64> undef, undef
|
||||
%E19 = extractelement <1 x i1> %S17, i32 0
|
||||
br label %CF
|
||||
|
||||
CF: ; preds = %CF, %BB
|
||||
%S23 = select i1 %E19, i8 undef, i8 undef
|
||||
br label %CF
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user