mirror of
https://github.com/RPCS3/llvm.git
synced 2026-08-26 18:26:51 -04:00
b7a48d833a
InstCombine folds instructions with irrelevant conditions to undef. This, as Nuno confirmed is a bug. (see https://bugs.llvm.org/show_bug.cgi?id=33409#c1 ) Given the original motivation for the change is that of removing an USE, we now fold to false instead (which reaches the same goal without undesired side effects). Fixes PR33409. Differential Revision: https://reviews.llvm.org/D36975 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@311540 91177308-0d34-0410-b5e6-96231b3b80d8
28 lines
605 B
LLVM
28 lines
605 B
LLVM
; Check that we fold the condition of branches of the
|
|
; form: br <condition> dest1, dest2, where dest1 == dest2.
|
|
; RUN: opt -instcombine -S < %s | FileCheck %s
|
|
|
|
define i32 @test(i32 %x) {
|
|
; CHECK-LABEL: @test
|
|
entry:
|
|
; CHECK-NOT: icmp
|
|
; CHECK: br i1 false
|
|
%cmp = icmp ult i32 %x, 7
|
|
br i1 %cmp, label %merge, label %merge
|
|
merge:
|
|
; CHECK-LABEL: merge:
|
|
; CHECK: ret i32 %x
|
|
ret i32 %x
|
|
}
|
|
|
|
@global = global i8 0
|
|
|
|
define i32 @pat(i32 %x) {
|
|
; CHECK-NOT: icmp false
|
|
; CHECK: br i1 false
|
|
%y = icmp eq i32 27, ptrtoint(i8* @global to i32)
|
|
br i1 %y, label %patatino, label %patatino
|
|
patatino:
|
|
ret i32 %x
|
|
}
|