| ; This test checks -print-after/before on loop passes | 
 | ; Besides of the loop itself it should be dumping loop pre-header and exits. | 
 | ; | 
 | ; RUN: opt < %s 2>&1 -disable-output \ | 
 | ; RUN: 	   -loop-deletion -print-before=loop-deletion \ | 
 | ; RUN:	   | FileCheck %s -check-prefix=DEL | 
 | ; RUN: opt < %s 2>&1 -disable-output \ | 
 | ; RUN: 	   -loop-unroll -print-after=loop-unroll -filter-print-funcs=bar \ | 
 | ; RUN:	   | FileCheck %s -check-prefix=BAR | 
 | ; RUN: opt < %s 2>&1 -disable-output \ | 
 | ; RUN: 	   -loop-unroll -print-after=loop-unroll -filter-print-funcs=foo -print-module-scope \ | 
 | ; RUN:	   | FileCheck %s -check-prefix=FOO-MODULE | 
 |  | 
 | ; DEL:	    IR Dump Before | 
 | ; DEL-SAME: dead loops | 
 | ; DEL: 	    ; Preheader: | 
 | ; DEL-NEXT:  %idx = alloca i32, align 4 | 
 | ; DEL:      ; Loop: | 
 | ; DEL-NEXT:  loop: | 
 | ; DEL:	     cont: | 
 | ; DEL:	    ; Exit blocks | 
 | ; DEL:	     done: | 
 | ; DEL:	    IR Dump Before | 
 | ; DEL-SAME: dead loops | 
 | ; DEL: 	    ; Preheader: | 
 | ; DEL-NEXT:  br label %loop | 
 | ; DEL:      ; Loop: | 
 | ; DEL-NEXT:  loop: | 
 | ; DEL:	    ; Exit blocks | 
 | ; DEL:	     end: | 
 |  | 
 | ; BAR:	    IR Dump After | 
 | ; BAR-SAME: Unroll | 
 | ; BAR: 	    ; Preheader: | 
 | ; BAR-NEXT:  br label %loop | 
 | ; BAR:      ; Loop: | 
 | ; BAR-NEXT:  loop: | 
 | ; BAR:	    ; Exit blocks | 
 | ; BAR:	     end: | 
 | ; BAR-NOT: IR Dump | 
 | ; BAR-NOT:  ; Loop | 
 |  | 
 | ; FOO-MODULE: IR Dump After | 
 | ; FOO-MODULE-SAME: Unroll | 
 | ; FOO-MODULE-SAME: loop: %loop | 
 | ; FOO-MODULE-NEXT: ModuleID = | 
 | ; FOO-MODULE: define void @foo | 
 | ; FOO-MODULE: define void @bar | 
 | ; FOO-MODULE-NOT: IR Dump | 
 |  | 
 | define void @foo(){ | 
 |   %idx = alloca i32, align 4 | 
 |   store i32 0, i32* %idx, align 4 | 
 |   br label %loop | 
 |  | 
 | loop: | 
 |   %1 = load i32, i32* %idx, align 4 | 
 |   %2 = icmp slt i32 %1, 10 | 
 |   br i1 %2, label %cont, label %done | 
 |  | 
 | cont: | 
 |   %3 = load i32, i32* %idx, align 4 | 
 |   %4 = add nsw i32 %3, 1 | 
 |   store i32 %4, i32* %idx, align 4 | 
 |   br label %loop | 
 |  | 
 | done: | 
 |   ret void | 
 | } | 
 |  | 
 | define void @bar(){ | 
 |   br label %loop | 
 | loop: | 
 |   br i1 1, label %loop, label %end | 
 | end: | 
 |   ret void | 
 | } |