1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt -passes='loop(indvars,loop-deletion)' -S %s | FileCheck %s 3 4; Make sure indvarsimplify properly forgets the exit value %p.2.lcssa phi after 5; modifying it. Loop deletion is required to show the incorrect use of the cached 6; SCEV value. 7 8define void @test(i1 %c) { 9; CHECK-LABEL: @test( 10; CHECK-NEXT: entry: 11; CHECK-NEXT: br label [[HEADER_1:%.*]] 12; CHECK: header.1.loopexit: 13; CHECK-NEXT: br label [[HEADER_1_BACKEDGE:%.*]] 14; CHECK: header.1: 15; CHECK-NEXT: br label [[HEADER_2:%.*]] 16; CHECK: header.2: 17; CHECK-NEXT: br i1 [[C:%.*]], label [[LATCH_1:%.*]], label [[LATCH_2:%.*]] 18; CHECK: latch.1: 19; CHECK-NEXT: br label [[HEADER_1_LOOPEXIT:%.*]] 20; CHECK: latch.2: 21; CHECK-NEXT: br label [[HEADER_1_BACKEDGE]] 22; CHECK: header.1.backedge: 23; CHECK-NEXT: br label [[HEADER_1]] 24; 25entry: 26 br label %header.1 27 28header.1: 29 %p.1 = phi i32 [ 0, %entry ], [ %p.2.lcssa, %latch.2 ], [ 0, %latch.1 ] 30 br label %header.2 31 32header.2: 33 %p.2 = phi i32 [ %p.1, %header.1 ], [ %p.2.next, %latch.1 ] 34 br i1 %c, label %latch.1, label %latch.2 35 36latch.1: 37 %p.2.next = add i32 %p.2, 1 38 br i1 false, label %header.2, label %header.1 39 40latch.2: 41 %p.2.lcssa = phi i32 [ %p.2, %header.2 ] 42 br label %header.1 43 44} 45