llvm-project/llvm/test/Other
Mircea Trofin 97ab068034 [NPM] Do not run function simplification pipeline unnecessarily
The CGSCC pass manager interplay with the FunctionAnalysisManagerCGSCCProxy is 'special' in the sense that the former will rerun the latter if there are changes to a SCC structure; that being said, some of the functions in the SCC may be unchanged. In that case, the function simplification pipeline will be re-run, which impacts compile time[1].

This patch allows the function simplification pipeline be skipped if it was already run and the function was not modified since.

The behavior is currently disabled by default. This is because, currently, the rerunning of the function simplification pipeline on an unchanged function may still result in changes. The patch simplifies investigating and fixing those cases where repeated function pass runs do actually positively impact code quality, while offering an easy workaround for those impacted negatively by compile time regressions, and not impacting mainline scenarios.

[1] A [[ http://llvm-compile-time-tracker.com/compare.php?from=eb37d3546cd0c6e67798496634c45e501f7806f1&to=ac722d1190dc7bbdd17e977ef7ec95e69eefc91e&stat=instructions | compile time tracker ]] run with the option enabled.

Differential Revision: https://reviews.llvm.org/D98103
2021-05-06 12:24:33 -07:00
..
ChangePrinters [NewPM] Cleanup IR printing instrumentation 2021-04-15 09:50:55 -07:00
Inputs
X86 Recommit "[LTO] Use lto::backend for code generation." 2021-02-15 10:05:42 +00:00
2002-01-31-CallGraph.ll [test] Fix tests using -analyze that fail under NPM 2020-10-21 21:54:30 -07:00
2002-02-24-InlineBrokePHINodes.ll
2004-08-16-PackedConstantInlineStore.ll
2004-08-16-PackedGlobalConstant.ll
2004-08-16-PackedSelect.ll
2004-08-16-PackedSimple.ll
2004-08-20-PackedControlFlow.ll
2006-02-05-PassManager.ll
2007-06-05-PassID.ll [test] Fix tests using -analyze that fail under NPM 2020-10-21 21:54:30 -07:00
2007-06-28-PassManager.ll [test] Fix tests using -analyze that fail under NPM 2020-10-21 21:54:30 -07:00
2007-09-10-PassManager.ll [NewPM][LoopUnswitch] Pin loop-unswitch to legacy PM or use simple-loop-unswitch 2020-08-06 10:56:00 -07:00
2008-02-14-PassManager.ll
2008-06-04-FieldSizeInPacked.ll
2008-10-06-RemoveDeadPass.ll
2008-10-15-MissingSpace.ll
2009-03-31-CallGraph.ll [PruneEH] Pin tests to legacy PM 2020-10-29 18:17:55 -07:00
2009-06-05-no-implicit-float.ll
2009-09-14-function-elements.ll
2010-05-06-Printer.ll Revert "Remove "Rewrite Symbols" from codegen pipeline" 2021-04-10 23:28:16 -07:00
FileCheck-space.txt
ResponseFile.ll
attribute-comment.ll
available-externally-lto.ll
bb-badref.ll [AsmWriter] Construct SlotTracker with the function 2020-10-20 15:01:40 -07:00
bcanalyzer-block-info.txt
bcanalyzer-dump-option.txt
can-execute.txt
cfg-printer-branch-weights-percent.ll [test] Fix tests using -analyze that fail under NPM 2020-10-21 21:54:30 -07:00
cfg-printer-branch-weights.ll [test] Fix tests using -analyze that fail under NPM 2020-10-21 21:54:30 -07:00
cfg_deopt_unreach.ll [test] Fix tests using -analyze that fail under NPM 2020-10-21 21:54:30 -07:00
cgscc-devirt-iteration.ll [funcattrs] Add the maximal set of implied attributes to definitions 2021-04-16 14:22:19 -07:00
cgscc-disconnected-invalidation.ll
cgscc-iterate-function-mutation.ll [funcattrs] Add the maximal set of implied attributes to definitions 2021-04-16 14:22:19 -07:00
cgscc-libcall-update.ll Reland "[Libcalls, Attrs] Annotate libcalls with noundef" 2021-02-20 06:18:48 +01:00
cgscc-observe-devirt.ll [funcattrs] Add the maximal set of implied attributes to definitions 2021-04-16 14:22:19 -07:00
change-printer.ll [NewPM] Cleanup IR printing instrumentation 2021-04-15 09:50:55 -07:00
cleanup-lcssa.ll
codegenprepare-and-debug.ll
constant-fold-gep-address-spaces.ll
constant-fold-gep.ll Reland [SCEV] Improve modelling for (null) pointer constants 2021-03-13 16:05:34 +03:00
copy-metadata-of-declaration.ll [Cloning] Copy metadata of global declarations 2021-01-08 08:21:18 +08:00
cspgo-O2-pipeline.ll [NewPM] Pin various tests under Other/ to legacy PM 2020-08-17 18:58:08 -07:00
debug-pass-npm.ll [opt] Error if -debug-pass is specified alongside the new PM 2021-03-02 15:59:28 -08:00
debugcounter-dce.ll
debugcounter-earlycse.ll [EarlyCSE] Verify hash code in regression tests 2020-09-04 10:40:35 -04:00
debugcounter-newgvn.ll
debugcounter-predicateinfo.ll Revert of D49126 [PredicateInfo] Use custom mangling to support ssa_copy with unnamed types. 2021-03-20 11:37:09 +01:00
devirtualization-undef.ll Reland [CGSCC] Detect devirtualization in more cases 2020-11-23 21:28:59 -08:00
extract-alias.ll
extract-linkonce.ll
extract-weak-odr.ll
extract.ll
heat-colors-graphs.ll [test] Pin tests using -dot-callgraph to legacy PM 2020-11-23 11:48:59 -08:00
heat-colors-multigraph.ll [test] Pin tests using -dot-callgraph to legacy PM 2020-11-23 11:48:59 -08:00
invalid-commandline-option.ll
invariant.group.ll Remove a -O2 usage from a CSE specific test file 2021-04-13 10:29:36 -07:00
lint.ll OpaquePtr: Bulk update tests to use typed sret 2020-11-20 17:58:26 -05:00
lit-globbing.ll
lit-quoting.txt [lit] Remove unnecessary testcases from lit-quoting.txt that fail on macOS 2021-04-14 15:09:42 +03:00
lit-unicode.txt
llvm-nm-without-aliases.ll
loop-deletion-printer.ll [NewPM] Cleanup IR printing instrumentation 2021-04-15 09:50:55 -07:00
loop-pass-ordering.ll
loop-pass-printer.ll [NewPM] Cleanup IR printing instrumentation 2021-04-15 09:50:55 -07:00
loop-pm-invalidation.ll [NewPM] Change tests to run them without PreserveCFGChecker. NFC 2021-04-06 11:33:07 +07:00
machine-size-remarks.ll
module-pass-printer.ll [NewPM] Cleanup IR printing instrumentation 2021-04-15 09:50:55 -07:00
new-pass-manager-cgscc-fct-proxy.ll [NPM] Do not run function simplification pipeline unnecessarily 2021-05-06 12:24:33 -07:00
new-pass-manager-verify-each.ll [NewPM] Use PassInstrumentation for -verify-each 2020-10-07 19:24:25 -07:00
new-pass-manager.ll [NewPM] Redesign of PreserveCFG Checker 2021-04-06 12:35:49 +07:00
new-pm-O0-defaults.ll [NewPM] Change tests to run them without PreserveCFGChecker. NFC 2021-04-06 11:33:07 +07:00
new-pm-O0-ep-callbacks.ll [NewPM] Add pipeline EP callback after initial frontend cleanup 2020-11-24 21:14:36 -08:00
new-pm-cspgo.ll
new-pm-defaults.ll [NewPM] Invalidate AAManager after populating GlobalsAA 2021-05-03 16:37:32 -07:00
new-pm-lto-defaults.ll [NewPM] Change tests to run them without PreserveCFGChecker. NFC 2021-04-06 11:33:07 +07:00
new-pm-pgo-O0.ll [NPM] Move more O0 pass building into PassBuilder 2020-11-19 11:22:23 -08:00
new-pm-pgo-preinline.ll [NewPM][Inliner] Move the 'always inliner' case in the same CGSCC pass as 'regular' inliner 2021-01-15 17:59:38 -08:00
new-pm-pgo.ll [PassManager][PhaseOrdering] lower expects before running simplifyCFG 2021-04-12 15:07:53 -04:00
new-pm-pr42726-cgscc.ll [NewPM][opt] Run the "default" AA pipeline by default 2021-01-21 21:08:54 -08:00
new-pm-pseudo-probe.ll Moving UniqueInternalLinkageNamesPass to the start of IR pipelines. 2021-01-02 14:26:21 -08:00
new-pm-thinlto-defaults.ll [NewPM] Invalidate AAManager after populating GlobalsAA 2021-05-03 16:37:32 -07:00
new-pm-thinlto-postlink-pgo-defaults.ll [NewPM] Invalidate AAManager after populating GlobalsAA 2021-05-03 16:37:32 -07:00
new-pm-thinlto-postlink-samplepgo-defaults.ll [NewPM] Invalidate AAManager after populating GlobalsAA 2021-05-03 16:37:32 -07:00
new-pm-thinlto-prelink-pgo-defaults.ll [NewPM] Invalidate AAManager after populating GlobalsAA 2021-05-03 16:37:32 -07:00
new-pm-thinlto-prelink-samplepgo-defaults.ll [NewPM] Invalidate AAManager after populating GlobalsAA 2021-05-03 16:37:32 -07:00
new-pm-time-trace.ll
opt-LTO-pipeline.ll [MemCopyOpt] Enable MemorySSA by default 2021-02-19 18:06:25 +01:00
opt-O0-pipeline-enable-matrix.ll Move EntryExitInstrumentation pass location 2021-03-01 10:08:10 -08:00
opt-O0-pipeline.ll Move EntryExitInstrumentation pass location 2021-03-01 10:08:10 -08:00
opt-O2-pipeline.ll [PassManager][PhaseOrdering] lower expects before running simplifyCFG 2021-04-12 15:07:53 -04:00
opt-O3-pipeline-enable-matrix.ll [PassManager][PhaseOrdering] lower expects before running simplifyCFG 2021-04-12 15:07:53 -04:00
opt-O3-pipeline.ll [NewPM] Only invalidate modified functions' analyses in CGSCC passes 2021-05-03 17:21:44 -07:00
opt-Os-pipeline.ll [PassManager][PhaseOrdering] lower expects before running simplifyCFG 2021-04-12 15:07:53 -04:00
opt-bisect-helper.py
opt-bisect-legacy-pass-manager.ll [FileCheck] Default --allow-unused-prefixes to false 2021-02-08 13:37:04 -08:00
opt-bisect-new-pass-manager.ll [NewPM] Cleanup IR printing instrumentation 2021-04-15 09:50:55 -07:00
opt-hot-cold-split.ll Revert "[PM/CC1] Add -f[no-]split-cold-code CC1 option to toggle splitting" 2020-10-19 12:31:14 +02:00
opt-npm.ll [NewPM] Attempt to run opt passes specified via -foo-pass under NPM 2020-06-23 10:10:40 -07:00
opt-old-new-pm-passes.ll
opt-override-denormal-fp-math-f32.ll [test] Fix unused check prefixes in test/Linker/ and test/Other/ 2020-10-29 21:54:56 -07:00
opt-override-denormal-fp-math-mixed.ll [test] Fix unused check prefixes in test/Linker/ and test/Other/ 2020-10-29 21:54:56 -07:00
opt-override-denormal-fp-math.ll [test] Fix unused check prefixes in test/Linker/ and test/Other/ 2020-10-29 21:54:56 -07:00
opt-override-frame-pointer.ll
opt-override-mcpu-mattr.ll
opt-pipeline-vector-passes.ll [NewPM] Add ExtraVectorizerPasses support 2021-01-26 22:59:10 +01:00
opt-twice.ll
optimization-remarks-auto.ll [InlineCost] Make cost-benefit decision explicit 2021-03-24 16:10:58 -07:00
optimization-remarks-inline.ll
optimization-remarks-invalidation.ll
optimization-remarks-lazy-bfi.ll
optimize-inrange-gep.ll
optimize-options.ll [NewPM] Pin various tests under Other/ to legacy PM 2020-08-17 18:58:08 -07:00
pass-pipeline-parsing.ll [NewPM][opt] Run the "default" AA pipeline by default 2021-01-21 21:08:54 -08:00
pass-pipelines.ll [LoopRotate] Don't split loop pass manager 2021-04-08 22:05:18 +02:00
pipefail.txt
pm-pgo-preinline.ll [PGO] Enable preinline and cleanup when optimize for size 2020-12-10 12:29:17 -08:00
pr32085.ll
pr49950.ll Make dependency between certain analysis passes transitive (reapply) 2021-05-05 15:17:55 +02:00
print-before-after.ll [NewPM] Don't error when there's an unrecognized pass name 2021-01-07 22:33:32 -08:00
print-cfg-sccs.ll [NewPM] Pin various tests under Other/ to legacy PM 2020-08-17 18:58:08 -07:00
print-changed-deleted.ll [NewPM] Fix -print-changed when a -filter-print-funcs function is removed 2021-04-12 11:55:17 -07:00
print-debug-counter.ll [EarlyCSE] Verify hash code in regression tests 2020-09-04 10:40:35 -04:00
print-module-scope.ll [NewPM] Cleanup IR printing instrumentation 2021-04-15 09:50:55 -07:00
print-passes.ll [opt][NewPM] Add a --print-passes flag to print all available passes 2021-02-10 11:22:12 -08:00
print-slotindexes.ll [NFC] Disallow unused prefixes under Other 2021-01-19 12:22:29 -08:00
printer.ll [NewPM] Pin various tests under Other/ to legacy PM 2020-08-17 18:58:08 -07:00
scalable-vector-array.ll
scalable-vector-struct-intrinsic.ll [IR] Allow scalable vectors in structs to support intrinsics returning multiple values. 2021-01-17 23:29:51 -08:00
scalable-vectors-core-ir.ll Precommit analysis/etc tests for inselt poison placeholder 2020-12-24 12:14:24 +09:00
scc-deleted-printer.ll [NewPM] Cleanup IR printing instrumentation 2021-04-15 09:50:55 -07:00
scc-pass-printer.ll [NewPM] Cleanup IR printing instrumentation 2021-04-15 09:50:55 -07:00
size-remarks.ll [test] Pin size-remarks.ll to legacy PM 2020-11-17 23:47:49 -08:00
spir_cc.ll
statistic.ll [opt] Pin -stats-json & -opt-bisect-limit tests to -enable-new-pm=0 2020-10-28 22:59:53 -07:00
time-passes.ll [Time-report] Add a flag -ftime-report={per-pass,per-pass-run} to control the pass timing aggregation 2020-12-08 10:13:19 -08:00
unroll-sroa.ll
writing-to-stdout.ll