1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00
llvm-mirror/test/CodeGen/SystemZ/DAGCombiner_illegal_BUILD_VECTOR.ll
Jonas Paulsson 168f955a23 [DAGCombiner] Don't make a BUILD_VECTOR with operands of illegal type.
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
2017-04-05 13:45:37 +00:00

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
}