xref: /llvm-project/llvm/test/Transforms/JumpThreading/PR37745.ll (revision b6909fe9ca1789db98c3481977468d33e9886182)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -S -passes=jump-threading -verify-each -mtriple=x86_64-- < %s | FileCheck %s
3
4define void @foo() {
5; CHECK-LABEL: @foo(
6; CHECK-NEXT:  B:
7; CHECK-NEXT:    [[Z:%.*]] = add i32 undef, 1
8; CHECK-NEXT:    [[CMP:%.*]] = icmp ne i32 [[Z]], 0
9; CHECK-NEXT:    br i1 [[CMP]], label [[EXIT:%.*]], label [[B_THREAD:%.*]]
10; CHECK:       B.thread:
11; CHECK-NEXT:    br label [[EXIT]]
12; CHECK:       exit:
13; CHECK-NEXT:    ret void
14;
15entry:
16  br i1 false, label %A, label %B
17
18A:
19  %x = phi i32 [ undef, %entry ], [ %z, %B ]
20  br label %B
21
22B:
23  %y = phi i32 [ undef, %entry ], [ %x, %A ]
24  %z = add i32 %y, 1
25  %cmp = icmp ne i32 %z, 0
26  br i1 %cmp, label %exit, label %A
27
28exit:
29  ret void
30}
31