1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-18 18:42:46 +02:00
llvm-mirror/test/Other/print-module-scope.ll
Arthur Eubanks 2a2896669d [NewPM] Cleanup IR printing instrumentation
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
2021-04-15 09:50:55 -07:00

58 lines
1.9 KiB
LLVM

; This test is checking basic properties of -print-module-scope options:
; - dumps all the module IR at once
; - all the function attributes are shown, including those of declarations
; - works on top of -print-after and -filter-print-funcs
;
; RUN: opt -enable-new-pm=0 < %s 2>&1 -disable-output \
; RUN: -simplifycfg -print-after=simplifycfg -print-module-scope \
; RUN: | FileCheck %s -check-prefix=CFG
; RUN: opt < %s 2>&1 -disable-output \
; RUN: -passes=simplify-cfg -print-after-all -print-module-scope \
; RUN: | FileCheck %s -check-prefix=CFG
; RUN: opt -enable-new-pm=0 < %s 2>&1 -disable-output \
; RUN: -simplifycfg -print-after=simplifycfg -filter-print-funcs=foo -print-module-scope \
; RUN: | FileCheck %s -check-prefix=FOO
; RUN: opt < %s 2>&1 -disable-output \
; RUN: -passes=simplify-cfg -print-after-all -filter-print-funcs=foo -print-module-scope \
; RUN: | FileCheck %s -check-prefix=FOO
; CFG: IR Dump After {{Simplify the CFG|SimplifyCFGPass}} {{.*}}foo
; CFG-NEXT: ModuleID =
; CFG: define void @foo
; CFG: define void @bar
; CFG: declare void @baz
; CFG: IR Dump After {{.*}}bar
; CFG-NEXT: ModuleID =
; CFG: define void @foo
; CFG: define void @bar
; CFG: declare void @baz
; FOO: IR Dump After {{Simplify the CFG|SimplifyCFGPass}} {{.*foo}}
; FOO-NEXT: ModuleID =
; FOO: Function Attrs: nounwind ssp
; FOO: define void @foo
; FOO: Function Attrs: nounwind
; FOO: define void @bar
; FOO: Function Attrs: nounwind readnone ssp
; FOO: declare void @baz
define void @foo() nounwind ssp {
call void @baz()
ret void
}
define void @bar() #0 {
ret void
}
declare void @baz() #1
attributes #0 = { nounwind "frame-pointer"="all" }
attributes #1 = { nounwind readnone ssp "use-soft-float"="false" }
; FOO: attributes #{{[0-9]}} = { nounwind "frame-pointer"="all" }
; FOO: attributes #{{[0-9]}} = { nounwind readnone ssp "use-soft-float"="false" }
; FOO-NOT: IR Dump After {{Simplify the CFG|SimplifyCFGPass}}