54 lines · plain
1; RUN: opt -passes=loop-unroll -debug-only=loop-unroll -disable-output < %s2; REQUIRES: asserts3; Compile this test with debug flag on to verify domtree right after loop unrolling.4target datalayout = "E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-v128:64-a:8:16-n32:64"5 6; PR271577define void @foo(i1 %arg) {8entry:9 br label %loop_header10loop_header:11 %iv = phi i64 [ 0, %entry ], [ %iv_next, %loop_latch ]12 br i1 %arg, label %loop_latch, label %loop_exiting_bb113loop_exiting_bb1:14 br i1 false, label %loop_exiting_bb2, label %exit1.loopexit15loop_exiting_bb2:16 br i1 false, label %loop_latch, label %bb17bb:18 br label %exit119loop_latch:20 %iv_next = add nuw nsw i64 %iv, 121 %cmp = icmp ne i64 %iv_next, 222 br i1 %cmp, label %loop_header, label %exit223exit1.loopexit:24 br label %exit125exit1:26 ret void27exit2:28 ret void29}30 31define void @foo2(i1 %arg) {32entry:33 br label %loop.header34loop.header:35 %iv = phi i32 [ 0, %entry ], [ %iv.inc, %latch ]36 %iv.inc = add i32 %iv, 137 br i1 %arg, label %diamond, label %latch38diamond:39 br i1 %arg, label %left, label %right40left:41 br i1 %arg, label %exit, label %merge42right:43 br i1 %arg, label %exit, label %merge44merge:45 br label %latch46latch:47 %end.cond = icmp eq i32 %iv, 148 br i1 %end.cond, label %exit1, label %loop.header49exit:50 ret void51exit1:52 ret void53}54