| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py | |
| ; RUN: opt -S -passes=jump-threading -verify-each -mtriple=x86_64-- < %s | FileCheck %s | |
| define void @foo() { | |
| ; CHECK-LABEL: @foo( | |
| ; CHECK-NEXT: B: | |
| ; CHECK-NEXT: [[Z:%.*]] = add i32 undef, 1 | |
| ; CHECK-NEXT: [[CMP:%.*]] = icmp ne i32 [[Z]], 0 | |
| ; CHECK-NEXT: br i1 [[CMP]], label [[EXIT:%.*]], label [[B_THREAD:%.*]] | |
| ; CHECK: B.thread: | |
| ; CHECK-NEXT: br label [[EXIT]] | |
| ; CHECK: exit: | |
| ; CHECK-NEXT: ret void | |
| ; | |
| entry: | |
| br i1 false, label %A, label %B | |
| A: | |
| %x = phi i32 [ undef, %entry ], [ %z, %B ] | |
| br label %B | |
| B: | |
| %y = phi i32 [ undef, %entry ], [ %x, %A ] | |
| %z = add i32 %y, 1 | |
| %cmp = icmp ne i32 %z, 0 | |
| br i1 %cmp, label %exit, label %A | |
| exit: | |
| ret void | |
| } |