xref: /llvm-project/llvm/test/Transforms/JumpThreading/pr62908.ll (revision 92dc4fff87e46d262b7c40b31e2d3fb22211296d)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
2; RUN: opt -S -passes=jump-threading < %s | FileCheck %s
3
4; Make sure this does not crash due to conflicting known bits.
5
6define i32 @test() {
7; CHECK-LABEL: define i32 @test() {
8; CHECK-NEXT:  end:
9; CHECK-NEXT:    ret i32 0
10;
11entry:
12  br label %join
13
14unreachable:
15  %sh_prom = zext i32 -1 to i64
16  %shl = shl nsw i64 -1, %sh_prom
17  %conv = trunc i64 %shl to i32
18  br label %join
19
20join:
21  %phi = phi i32 [ %conv, %unreachable ], [ 0, %entry ]
22  %cmp = icmp eq i32 %phi, 0
23  br i1 %cmp, label %end, label %if
24
25if:
26  br label %end
27
28end:
29  ret i32 0
30}
31