| ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
| ; RUN: opt -passes=jump-threading -jump-threading-across-loop-headers=true -S < %s | FileCheck %s |
| |
| ; origin: https://github.com/llvm/llvm-project/issues/203868 |
| define i64 @PR203868(i64 %g28, i1 %tobool, i1 %c.next, i64 %arr.init, i64 %ov.init) { |
| ; CHECK-LABEL: @PR203868( |
| ; CHECK-NEXT: br6: |
| ; CHECK-NEXT: br i1 [[TOBOOL:%.*]], label [[BF7:%.*]], label [[EXIT:%.*]] |
| ; CHECK: bf7: |
| ; CHECK-NEXT: [[OV_02:%.*]] = phi i64 [ [[OV_NEXT:%.*]], [[BF7]] ], [ [[G28:%.*]], [[BR6:%.*]] ] |
| ; CHECK-NEXT: [[OV_NEXT]] = add i64 [[OV_02]], [[OV_INIT:%.*]] |
| ; CHECK-NEXT: br i1 [[C_NEXT:%.*]], label [[BF7]], label [[EXIT]] |
| ; CHECK: exit: |
| ; CHECK-NEXT: [[ARR1:%.*]] = phi i64 [ [[OV_02]], [[BF7]] ], [ [[ARR_INIT:%.*]], [[BR6]] ] |
| ; CHECK-NEXT: ret i64 [[ARR1]] |
| ; |
| entry: |
| br label %br6 |
| br6: |
| %arr = phi i64 [ %ov.0, %bf7 ], [ %arr.init, %entry ] |
| %c.0 = phi i1 [ %c.next, %bf7 ], [ %tobool, %entry ] |
| %ov.0 = phi i64 [ %ov.next, %bf7 ], [ %g28, %entry ] |
| br i1 %c.0, label %bf7, label %exit |
| bf7: |
| %ov.next = add i64 %ov.0, %ov.init |
| br label %br6 |
| exit: |
| ret i64 %arr |
| } |