mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
2a2896669d
Being lazy with printing the banner seems hard to reason with, we should print it unconditionally first (it could also lead to duplicate banners if we have multiple functions in -filter-print-funcs). The printIR() functions were doing too many things. I separated out the call from PrintPassInstrumentation since we were essentially doing two completely separate things in printIR() from different callers. There were multiple ways to generate the name of some IR. That's all been moved to getIRName(). The printing of the IR name was also inconsistent, now it's always "IR Dump on $foo" where "$foo" is the name. For a function, it's the function name. For a loop, it's what's printed by Loop::print(), which is more detailed. For an SCC, it's the list of functions in parentheses. For a module it's "[module]", to differentiate between a possible SCC with a function called "module". To preserve D74814, we have to check if we're going to print anything at all first. This is unfortunate, but I would consider this a special case that shouldn't be handled in the core logic. Reviewed By: jamieschmeiser Differential Revision: https://reviews.llvm.org/D100231
75 lines
2.5 KiB
LLVM
75 lines
2.5 KiB
LLVM
; RUN: opt -enable-new-pm=0 < %s 2>&1 -disable-output \
|
|
; RUN: -inline -print-after-all | FileCheck %s --check-prefix=LEGACY
|
|
; RUN: opt < %s 2>&1 -disable-output \
|
|
; RUN: -passes=inline -print-after-all | FileCheck %s -check-prefix=INL
|
|
; RUN: opt < %s 2>&1 -disable-output \
|
|
; RUN: -passes=inliner-wrapper -print-after-all | FileCheck %s -check-prefix=INL
|
|
; RUN: opt -enable-new-pm=0 < %s 2>&1 -disable-output \
|
|
; RUN: -inline -print-after-all -print-module-scope | FileCheck %s -check-prefix=LEGACY-MOD
|
|
; RUN: opt < %s 2>&1 -disable-output \
|
|
; RUN: -passes=inline -print-after-all -print-module-scope | FileCheck %s -check-prefix=INL-MOD
|
|
; RUN: opt < %s 2>&1 -disable-output \
|
|
; RUN: -passes=inliner-wrapper -print-after-all -print-module-scope | FileCheck %s -check-prefix=INL-MOD
|
|
|
|
; LEGACY: IR Dump After Function Integration/Inlining
|
|
; LEGACY: define void @bar()
|
|
; LEGACY-NEXT: call void @foo()
|
|
; LEGACY: define void @foo()
|
|
; LEGACY-NEXT: call void @bar()
|
|
; LEGACY: IR Dump After Function Integration/Inlining
|
|
; LEGACY: define void @tester()
|
|
; LEGACY-NEXT: call void @foo()
|
|
|
|
; INL: IR Dump After InlinerPass on (foo, bar) ***
|
|
; INL: define void @foo()
|
|
; INL-NEXT: call void @bar()
|
|
; INL: define void @bar()
|
|
; INL-NEXT: call void @foo()
|
|
; INL: IR Dump After InlinerPass on (tester) ***
|
|
; INL: define void @tester()
|
|
; INL-NEXT: call void @foo()
|
|
|
|
; LEGACY-MOD: IR Dump After Function Integration/Inlining
|
|
; LEGACY-MOD-NEXT: ModuleID =
|
|
; LEGACY-MOD: define void @tester()
|
|
; LEGACY-MOD: define void @foo()
|
|
; LEGACY-MOD: define void @bar()
|
|
|
|
; INL-MOD-LABEL:*** IR Dump After InlinerPass on (foo, bar) ***
|
|
; INL-MOD-NEXT: ModuleID =
|
|
; INL-MOD-NEXT: source_filename =
|
|
; INL-MOD: define void @tester()
|
|
; INL-MOD-NEXT: call void @foo()
|
|
; INL-MOD: define void @foo()
|
|
; INL-MOD-NEXT: call void @bar()
|
|
; INL-MOD: define void @bar()
|
|
; INL-MOD-NEXT: call void @foo()
|
|
; INL-MOD-LABEL:*** IR Dump After InlinerPass on (tester) ***
|
|
; INL-MOD-NEXT: ModuleID =
|
|
; INL-MOD-NEXT: source_filename =
|
|
; INL-MOD: define void @tester()
|
|
; INL-MOD-NEXT: call void @foo()
|
|
; INL-MOD: define void @foo()
|
|
; INL-MOD-NEXT: call void @bar()
|
|
; INL-MOD: define void @bar()
|
|
; INL-MOD-NEXT: call void @foo()
|
|
; INL-MOD: IR Dump After
|
|
; INL-MOD-NEXT: ModuleID =
|
|
; INL-MOD-NEXT: source_filename =
|
|
; INL-MOD-NOT: Printing <null> Function
|
|
|
|
define void @tester() noinline {
|
|
call void @foo()
|
|
ret void
|
|
}
|
|
|
|
define void @foo() noinline {
|
|
call void @bar()
|
|
ret void
|
|
}
|
|
|
|
define void @bar() noinline {
|
|
call void @foo()
|
|
ret void
|
|
}
|