xref: /llvm-project/llvm/test/Transforms/IndVarSimplify/pr50506.ll (revision a11faeed446882a81e79d780125d93e7199df645)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -S -passes=indvars < %s | FileCheck %s
3
4; This test used to assert when expanding an addrec into a loop without
5; preheader.
6
7define void @test(ptr %tgt) {
8; CHECK-LABEL: @test(
9; CHECK-NEXT:  bb31:
10; CHECK-NEXT:    indirectbr ptr [[TGT:%.*]], [label [[EXIT:%.*]], label %bb33]
11; CHECK:       exit:
12; CHECK-NEXT:    ret void
13; CHECK:       bb33:
14; CHECK-NEXT:    [[TMP34:%.*]] = phi i32 [ [[TMP50:%.*]], [[BB49:%.*]] ], [ 0, [[BB31:%.*]] ]
15; CHECK-NEXT:    br i1 false, label [[BB40_PREHEADER:%.*]], label [[BB49]]
16; CHECK:       bb40.preheader:
17; CHECK-NEXT:    br label [[BB40:%.*]]
18; CHECK:       bb40:
19; CHECK-NEXT:    br label [[BB40]]
20; CHECK:       bb49:
21; CHECK-NEXT:    [[TMP50]] = add i32 [[TMP34]], 1
22; CHECK-NEXT:    br label [[BB33:%.*]]
23;
24bb31:
25  indirectbr ptr %tgt, [label %exit, label %bb33]
26
27exit:
28  ret void
29
30bb33:                                             ; preds = %bb49, %bb31
31  %tmp34 = phi i32 [ %tmp50, %bb49 ], [ 0, %bb31 ]
32  %tmp36 = add i32 %tmp34, 1
33  br i1 false, label %bb40, label %bb49
34
35bb40:                                             ; preds = %bb38, %bb37
36  %tmp41 = phi i32 [ %tmp36, %bb33 ], [ %tmp39, %bb40 ]
37  %tmp39 = add i32 %tmp41, 0
38  br label %bb40
39
40bb49:                                             ; preds = %bb35
41  %tmp50 = add i32 %tmp34, 1
42  br label %bb33
43}
44