mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
168f955a23
When DAGCombiner visits a SIGN_EXTEND_INREG of a BUILD_VECTOR with constant operands, a new BUILD_VECTOR node will be created transformed constants. Llvm-stress found a case where the new BUILD_VECTOR had constant operands of an illegal type, because the (legal) element type is in fact not a legal scalar type. This patch changes this so that the new BUILD_VECTOR has the same operand type as the old one. Review: Eli Friedman, Nirav Dave https://bugs.llvm.org//show_bug.cgi?id=32422 llvm-svn: 299540
27 lines
830 B
LLVM
27 lines
830 B
LLVM
; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s
|
|
;
|
|
; Check that DAGCombiner does not crash after producing an illegal
|
|
; BUILD_VECTOR node.
|
|
|
|
|
|
define void @pr32422() {
|
|
; CHECK: cdbr %f0, %f0
|
|
; CHECK: jo .LBB0_1
|
|
|
|
BB:
|
|
%I = insertelement <8 x i8> zeroinitializer, i8 -95, i32 3
|
|
%I8 = insertelement <8 x i8> zeroinitializer, i8 -119, i32 2
|
|
%FC = uitofp <8 x i8> %I8 to <8 x float>
|
|
%Cmp18 = fcmp uno <8 x float> zeroinitializer, %FC
|
|
%I22 = insertelement <8 x i1> %Cmp18, i1 true, i32 5
|
|
br label %CF
|
|
|
|
CF: ; preds = %CF, %BB
|
|
%Cmp40 = fcmp uno double 0xC663C682E9619F00, undef
|
|
br i1 %Cmp40, label %CF, label %CF353
|
|
|
|
CF353: ; preds = %CF
|
|
%E195 = extractelement <8 x i1> %I22, i32 4
|
|
ret void
|
|
}
|