blob: 230c0353a7b067ca29d41b7835b276b0fd626a0d [file] [edit]
; 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
}