mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
3f1062838f
-print-after IR printing generally can not print the IR unit (Loop or SCC) which has just been invalidated by the pass. However, when working in -print-module-scope mode even if Loop was invalidated there is still a valid module that we can print. Since we can not access invalidated IR unit from AfterPassInvalidated instrumentation point we can remember the module to be printed *before* pass. This change introduces BeforePass instrumentation that stores all the information required for module printing into the stack and then after pass (in AfterPassInvalidated) just print whatever has been placed on stack. Reviewed By: philip.pfaffe Differential Revision: https://reviews.llvm.org/D55278 llvm-svn: 349896
29 lines
1.1 KiB
LLVM
29 lines
1.1 KiB
LLVM
; Make sure that Loop which was invalidated by loop-deletion
|
|
; does not lead to problems for -print-after-all and is just skipped.
|
|
;
|
|
; RUN: opt < %s -disable-output \
|
|
; RUN: -passes=loop-instsimplify -print-after-all 2>&1 | FileCheck %s -check-prefix=SIMPLIFY
|
|
; RUN: opt < %s -disable-output \
|
|
; RUN: -passes=loop-deletion,loop-instsimplify -print-after-all 2>&1 | FileCheck %s -check-prefix=DELETED
|
|
; RUN: opt < %s -disable-output \
|
|
; RUN: -passes=loop-deletion,loop-instsimplify -print-after-all -print-module-scope 2>&1 | FileCheck %s -check-prefix=DELETED-BUT-PRINTED
|
|
;
|
|
; SIMPLIFY: IR Dump {{.*}} LoopInstSimplifyPass
|
|
; DELETED-NOT: IR Dump {{.*}}LoopInstSimplifyPass
|
|
; DELETED-NOT: IR Dump {{.*}}LoopDeletionPass
|
|
; DELETED-BUT-PRINTED: IR Dump {{.*}}LoopDeletionPass {{.*invalidated:}}
|
|
; DELETED-BUT-PRINTED-NOT: IR Dump {{.*}}LoopInstSimplifyPass
|
|
|
|
define void @deleteme() {
|
|
entry:
|
|
br label %loop
|
|
loop:
|
|
%iv = phi i32 [ 0, %entry ], [ %iv.next, %loop ]
|
|
%iv.next = add i32 %iv, 1
|
|
%check = icmp ult i32 %iv.next, 3
|
|
br i1 %check, label %loop, label %exit
|
|
exit:
|
|
ret void
|
|
}
|
|
|