1b3754375SFlorian Hahn; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2*8ebb3eacSBjorn Pettersson; RUN: opt -passes=ipsccp -S %s | FileCheck %s 3b3754375SFlorian Hahn 4b3754375SFlorian Hahndeclare i1 @cond() 5b3754375SFlorian Hahn 6b3754375SFlorian Hahndefine i32 @test() { 7b3754375SFlorian Hahn; CHECK-LABEL: @test( 8b3754375SFlorian Hahn; CHECK-NEXT: entry: 9b3754375SFlorian Hahn; CHECK-NEXT: br label [[LOOP:%.*]] 10b3754375SFlorian Hahn; CHECK: loop: 11b3754375SFlorian Hahn; CHECK-NEXT: [[C_1:%.*]] = call i1 @cond() 12b3754375SFlorian Hahn; CHECK-NEXT: br i1 [[C_1]], label [[LOOP]], label [[LATCH_2:%.*]] 13b3754375SFlorian Hahn; CHECK: latch.2: 14b3754375SFlorian Hahn; CHECK-NEXT: [[C_2:%.*]] = call i1 @cond() 15b3754375SFlorian Hahn; CHECK-NEXT: br i1 [[C_2]], label [[LOOP]], label [[EXIT:%.*]] 16b3754375SFlorian Hahn; CHECK: exit: 17b3754375SFlorian Hahn; CHECK-NEXT: ret i32 0 18b3754375SFlorian Hahn; 19b3754375SFlorian Hahnentry: 20b3754375SFlorian Hahn br label %loop 21b3754375SFlorian Hahn 22b3754375SFlorian Hahnloop: 23b3754375SFlorian Hahn %p = phi i32 [ undef, %entry ], [ 0, %latch.2 ], [ %p, %loop] 24b3754375SFlorian Hahn %c.1 = call i1 @cond() 25b3754375SFlorian Hahn br i1 %c.1, label %loop, label %latch.2 26b3754375SFlorian Hahn 27b3754375SFlorian Hahnlatch.2: 28b3754375SFlorian Hahn %c.2 = call i1 @cond() 29b3754375SFlorian Hahn br i1 %c.2, label %loop, label %exit 30b3754375SFlorian Hahn 31b3754375SFlorian Hahnexit: 32b3754375SFlorian Hahn ret i32 %p 33b3754375SFlorian Hahn} 34