llvm-6502/test/CodeGen/Mips/dagcombine_crash.ll
Matthias Braun 12a7039644 DAGCombiner: Fix crash in select(select) opt.
In case of different types used for the condition of the selects the
select(select) -> select(and) normalisation cannot be performed.

See also: http://reviews.llvm.org/D7622

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234763 91177308-0d34-0410-b5e6-96231b3b80d8
2015-04-13 17:16:33 +00:00

22 lines
649 B
LLVM

; RUN: llc -o - %s
; The selection DAG select(select()) normalisation crashed for different types
; on the condition inputs.
target datalayout = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
target triple = "mips--"
define i64 @foobar(double %a) #0 {
entry:
%0 = bitcast double %a to i64
%trunc = trunc i64 %0 to i32
%and = and i32 %trunc, 32767
%sub = add nsw i32 %and, -16383
%cmp = icmp ugt i32 %and, 16382
%and5 = and i32 %trunc, 32768
%tobool = icmp eq i32 %and5, 0
%or = and i1 %cmp, %tobool
%cmp6 = icmp ugt i32 %sub, 64
%sext = sext i1 %cmp6 to i64
%retval.0 = select i1 %or, i64 %sext, i64 0
ret i64 %retval.0
}