Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
IR printing improvement for function passes - introducing -print-modu…
…le-scope Summary: When debugging function passes it happens to be rather useful to dump the whole module before the transformation and then use this dump to analyze this single transformation by running it separately on that particular module state. Introducing -print-module-scope debugging option that forces all the function-level IR dumps to become whole-module dumps. This option builds on top of normal dumping controls like -print-before/after -filter-print-funcs The plan is to eventually extend this option to cover other local passes (at least loop passes) but that should go as a separate change. Reviewers: sanjoy, weimingz, silvas, fedor.sergeev Reviewed By: weimingz Subscribers: apilipenko, skatkov, llvm-commits, mehdi_amini Differential Revision: https://reviews.llvm.org/D40245 llvm-svn: 319561
- Loading branch information
Fedor Sergeev
committed
Dec 1, 2017
1 parent
b358f99
commit 94dca7c
Showing
4 changed files
with
73 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
; 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 < %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: -simplifycfg -print-after=simplifycfg -filter-print-funcs=foo -print-module-scope \ | ||
; RUN: | FileCheck %s -check-prefix=FOO | ||
|
||
; CFG: IR Dump After | ||
; CFG-SAME: function: foo | ||
; CFG-NEXT: ModuleID = | ||
; CFG: define void @foo | ||
; CFG: define void @bar | ||
; CFG: declare void @baz | ||
; CFG: IR Dump After | ||
; CFG-SAME: function: bar | ||
; CFG-NEXT: ModuleID = | ||
; CFG: define void @foo | ||
; CFG: define void @bar | ||
; CFG: declare void @baz | ||
|
||
; FOO: IR Dump After | ||
; FOO-NOT: function: bar | ||
; FOO-SAME: function: 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 "no-frame-pointer-elim"="true" } | ||
|
||
attributes #1 = { nounwind readnone ssp "use-soft-float"="false" } | ||
; FOO: attributes #{{[0-9]}} = { nounwind "no-frame-pointer-elim"="true" } | ||
|
||
; FOO: attributes #{{[0-9]}} = { nounwind readnone ssp "use-soft-float"="false" } | ||
|
||
; FOO-NOT: IR Dump |