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
26 lines
893 B
LLVM
26 lines
893 B
LLVM
; RUN: opt < %s 2>&1 -disable-output \
|
|
; RUN: -passes=inline -print-before-all -print-after-all | FileCheck %s -check-prefix=INL
|
|
; RUN: opt < %s 2>&1 -disable-output \
|
|
; RUN: -passes=inline -print-before-all -print-after-all -print-module-scope | FileCheck %s -check-prefix=INL-MOD
|
|
|
|
; INL: IR Dump Before {{InlinerPass .*scc: .tester, foo}}
|
|
; INL-NOT: IR Dump After {{InlinerPass}}
|
|
; INL: IR Dump Before {{InlinerPass .*scc: .tester}}
|
|
; INL: IR Dump After {{InlinerPass .*scc: .tester}}
|
|
|
|
; INL-MOD: IR Dump Before {{InlinerPass .*scc: .tester, foo}}
|
|
; INL-MOD: IR Dump After {{InlinerPass .*invalidated: .*scc: .tester, foo}}
|
|
; INL-MOD: IR Dump Before {{InlinerPass .*scc: .tester}}
|
|
; INL-MOD: IR Dump After {{InlinerPass .*scc: .tester}}
|
|
|
|
|
|
define void @tester() noinline {
|
|
call void @foo()
|
|
ret void
|
|
}
|
|
|
|
define internal void @foo() alwaysinline {
|
|
call void @tester()
|
|
ret void
|
|
}
|