llvm-project/llvm/test/Transforms/InstCombine/select-crash-noverify.ll
Nikita Popov fb063c933f [InstCombine] Duplicate tests for logical and/or (NFC)
This replicates existing and/or tests to also test variants using
select. This should help us get a more accurate view on which
optimizations we're missing if we disable the select -> and/or
fold.
2021-01-12 21:50:41 +01:00

36 lines
927 B
LLVM

; RUN: opt < %s -disable-verify -instcombine -S | opt -S | FileCheck %s
; Formerly crashed, PR8490.
; CHECK-LABEL: @test3(
define i32 @test3(i1 %bool, i32 %a) {
entry:
%cond = or i1 %bool, true
br i1 %cond, label %return, label %xpto
; technically reachable, but this malformed IR may appear as a result of constant propagation
xpto:
%select = select i1 %bool, i32 %a, i32 %select
%select2 = select i1 %bool, i32 %select2, i32 %a
%sum = add i32 %select, %select2
ret i32 %sum
return:
ret i32 7
}
define i32 @test3_logical(i1 %bool, i32 %a) {
entry:
%cond = select i1 %bool, i1 true, i1 true
br i1 %cond, label %return, label %xpto
; technically reachable, but this malformed IR may appear as a result of constant propagation
xpto:
%select = select i1 %bool, i32 %a, i32 %select
%select2 = select i1 %bool, i32 %select2, i32 %a
%sum = add i32 %select, %select2
ret i32 %sum
return:
ret i32 7
}