70 lines · plain
1; This test checks -print-after/before on loop passes2; Besides of the loop itself it should be dumping loop pre-header and exits.3;4; RUN: opt < %s 2>&1 -disable-output \5; RUN: -passes='loop(loop-deletion)' -print-before=loop-deletion \6; RUN: | FileCheck %s -check-prefix=DEL7; RUN: opt < %s 2>&1 -disable-output \8; RUN: -passes='require<opt-remark-emit>,loop(loop-unroll-full)' -print-after=loop-unroll-full -filter-print-funcs=bar \9; RUN: | FileCheck %s -check-prefix=BAR10; RUN: opt < %s 2>&1 -disable-output \11; RUN: -passes='require<opt-remark-emit>,loop(loop-unroll-full)' -print-after=loop-unroll-full -filter-print-funcs=foo -print-module-scope \12; RUN: | FileCheck %s -check-prefix=FOO-MODULE13 14; DEL: IR Dump Before {{Delete dead loops|LoopDeletionPass}}15; DEL: ; Preheader:16; DEL-NEXT: %idx = alloca i32, align 417; DEL: ; Loop:18; DEL-NEXT: loop:19; DEL: cont:20; DEL: ; Exit blocks21; DEL: done:22; DEL: IR Dump Before {{Delete dead loops|LoopDeletionPass}}23; DEL: ; Preheader:24; DEL-NEXT: br label %loop25; DEL: ; Loop:26; DEL-NEXT: loop:27; DEL: ; Exit blocks28; DEL: end:29 30; BAR: IR Dump After {{Unroll|LoopFullUnrollPass}}31; BAR: ; Preheader:32; BAR-NEXT: br label %loop33; BAR: ; Loop:34; BAR-NEXT: loop:35; BAR: ; Exit blocks36; BAR: end:37 38; FOO-MODULE: IR Dump After {{Unroll|LoopFullUnrollPass}} {{.*}}loop39; FOO-MODULE-NEXT: ModuleID =40; FOO-MODULE: define void @foo41; FOO-MODULE: define void @bar42 43define void @foo(){44 %idx = alloca i32, align 445 store i32 0, ptr %idx, align 446 br label %loop47 48loop:49 %1 = load i32, ptr %idx, align 450 %2 = icmp slt i32 %1, 1051 br i1 %2, label %cont, label %done52 53cont:54 %3 = load i32, ptr %idx, align 455 %4 = add nsw i32 %3, 156 store i32 %4, ptr %idx, align 457 br label %loop58 59done:60 ret void61}62 63define void @bar(){64 br label %loop65loop:66 br i1 1, label %loop, label %end67end:68 ret void69}70