brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · f0ee70a Raw
60 lines · plain
1; RUN: opt -S -passes=loop-unroll < %s | FileCheck %s2; RUN: opt < %s -passes='require<opt-remark-emit>,loop(loop-unroll-full)' -S | FileCheck %s3 4; LLVM should not try to fully unroll this loop.5 6declare void @f()7declare void @g()8declare void @h()9 10define void @trivial_loop() {11; CHECK-LABEL: @trivial_loop(12 entry:13  br label %loop14 15 loop:16  %idx = phi i32 [ 0, %entry ], [ %idx.inc, %loop ]17  %idx.inc = add i32 %idx, 118  call void @f()19  call void @g()20  call void @h()21  call void @f()22  call void @g()23  call void @h()24  call void @f()25  call void @g()26  call void @h()27  call void @f()28  call void @g()29  call void @h()30  call void @f()31  call void @g()32  call void @h()33  %be = icmp slt i32 %idx, 26843545634  br i1 %be, label %loop, label %exit35 36; CHECK: loop:37; CHECK-NEXT:  %idx = phi i32 [ 0, %entry ], [ %idx.inc, %loop ]38; CHECK-NEXT:  %idx.inc = add i32 %idx, 139; CHECK-NEXT:  call void @f()40; CHECK-NEXT:  call void @g()41; CHECK-NEXT:  call void @h()42; CHECK-NEXT:  call void @f()43; CHECK-NEXT:  call void @g()44; CHECK-NEXT:  call void @h()45; CHECK-NEXT:  call void @f()46; CHECK-NEXT:  call void @g()47; CHECK-NEXT:  call void @h()48; CHECK-NEXT:  call void @f()49; CHECK-NEXT:  call void @g()50; CHECK-NEXT:  call void @h()51; CHECK-NEXT:  call void @f()52; CHECK-NEXT:  call void @g()53; CHECK-NEXT:  call void @h()54; CHECK-NEXT:  %be = icmp slt i32 %idx, 26843545655; CHECK-NEXT:  br i1 %be, label %loop, label %exit56 57 exit:58  ret void59}60