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