llvm-project/llvm/test/Other
Chandler Carruth 923ff550b9 [NewPM] Fix a nasty bug with analysis invalidation in the new PM.
The issue here is that we actually allow CGSCC passes to mutate IR (and
therefore invalidate analyses) outside of the current SCC. At a minimum,
we need to support mutating parent and ancestor SCCs to support the
ArgumentPromotion pass which rewrites all calls to a function.

However, the analysis invalidation infrastructure is heavily based
around not needing to invalidate the same IR-unit at multiple levels.
With Loop passes for example, they don't invalidate other Loops. So we
need to customize how we handle CGSCC invalidation. Doing this without
gratuitously re-running analyses is even harder. I've avoided most of
these by using an out-of-band preserved set to accumulate the cross-SCC
invalidation, but it still isn't perfect in the case of re-visiting the
same SCC repeatedly *but* it coming off the worklist. Unclear how
important this use case really is, but I wanted to call it out.

Another wrinkle is that in order for this to successfully propagate to
function analyses, we have to make sure we have a proxy from the SCC to
the Function level. That requires pre-creating the necessary proxy.

The motivating test case now works cleanly and is added for
ArgumentPromotion.

Thanks for the review from Philip and Wei!

Differential Revision: https://reviews.llvm.org/D59869

llvm-svn: 357137
2019-03-28 00:51:36 +00:00
..
Inputs [PGO] Context sensitive PGO (part 4) 2019-03-06 19:31:37 +00:00
X86 [HotColdSplit] Schedule splitting late to fix perf regression 2019-02-15 18:46:44 +00:00
2002-01-31-CallGraph.ll
2002-02-24-InlineBrokePHINodes.ll
2002-03-11-ConstPropCrash.ll
2003-02-19-LoopInfoNestingBug.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-04-24-eliminate-mostly-empty-blocks.ll Fix inconsistency with/without debug information (-g) 2018-08-07 12:14:01 +00:00
2007-06-05-PassID.ll Revert "Extend CFGPrinter and CallPrinter with Heat Colors" 2018-06-29 17:48:58 +00:00
2007-06-28-PassManager.ll
2007-09-10-PassManager.ll
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
2009-06-05-no-implicit-float.ll
2009-09-14-function-elements.ll
2010-05-06-Printer.ll Print newline after banner for ModulePass 2018-11-14 10:05:28 +00:00
FileCheck-space.txt
ResponseFile.ll
attribute-comment.ll
bcanalyzer-block-info.txt
can-execute.txt test/Other/can-execute.txt: delete %t after the test 2018-09-14 20:41:42 +00:00
cfg-printer-branch-weights.ll [CFG Printer] Add support for writing the dot files with a custom 2018-10-09 04:30:23 +00:00
cgscc-devirt-iteration.ll
cgscc-disconnected-invalidation.ll
cgscc-iterate-function-mutation.ll
cgscc-libcall-update.ll Add a 'dynamic' parameter to the objectsize intrinsic 2019-01-30 20:34:35 +00:00
cgscc-observe-devirt.ll
cleanup-lcssa.ll
close-stderr.ll
codegenprepare-and-debug.ll Fix inconsistency with/without debug information (-g) 2018-08-07 12:14:01 +00:00
constant-fold-gep-address-spaces.ll
constant-fold-gep.ll
cspgo-O2-pipeline.ll [PGO] Context sensitive PGO (part 4) 2019-03-06 19:31:37 +00:00
debugcounter-dce.ll [DCE] Add DebugCounter support 2018-09-13 20:29:50 +00:00
debugcounter-earlycse.ll [EarlyCSE] Add debug counter for debugging mis-optimizations. NFC. 2018-04-06 18:47:33 +00:00
debugcounter-newgvn.ll
debugcounter-predicateinfo.ll [PredicateInfo] Use custom mangling to support ssa_copy with unnamed types. 2018-07-24 14:49:52 +00:00
extract-alias.ll
extract-linkonce.ll
extract-weak-odr.ll
extract.ll
invalid-commandline-option.ll
invariant.group.ll Implement strip.invariant.group 2018-07-02 04:49:30 +00:00
lint.ll
lit-globbing.ll
lit-quoting.txt
lit-unicode.txt
llvm-nm-without-aliases.ll
loop-deletion-printer.ll [NewPM] -print-module-scope -print-after now prints module even after invalidated Loop/SCC 2018-12-21 11:49:05 +00:00
loop-pass-ordering.ll
loop-pass-printer.ll [New PM][PassInstrumentation] IR printing support for New Pass Manager 2018-09-24 16:08:15 +00:00
loop-pm-invalidation.ll [New PM] Introducing PassInstrumentation framework 2018-09-20 17:08:45 +00:00
machine-size-remarks.ll Add REQUIRES line to machine-size-remarks 2018-09-10 23:53:08 +00:00
new-pass-manager.ll [NewPM] Fix a nasty bug with analysis invalidation in the new PM. 2019-03-28 00:51:36 +00:00
new-pm-cspgo.ll [PGO] Context sensitive PGO (part 4) 2019-03-06 19:31:37 +00:00
new-pm-defaults.ll [NewPM] Fix a nasty bug with analysis invalidation in the new PM. 2019-03-28 00:51:36 +00:00
new-pm-lto-defaults.ll Resubmit r356511 "[TailCallElim] Add tailcall elimination pass to LTO pipelines" 2019-03-20 19:08:18 +00:00
new-pm-pgo.ll [HotColdSplit] Schedule splitting late to fix perf regression 2019-02-15 18:46:44 +00:00
new-pm-thinlto-defaults.ll [NewPM] Fix a nasty bug with analysis invalidation in the new PM. 2019-03-28 00:51:36 +00:00
opt-O0-pipeline.ll
opt-O2-pipeline.ll [Unroll/UnrollAndJam/Vectorizer/Distribute] Add followup loop attributes. 2018-12-12 17:32:52 +00:00
opt-O3-pipeline.ll [Unroll/UnrollAndJam/Vectorizer/Distribute] Add followup loop attributes. 2018-12-12 17:32:52 +00:00
opt-Os-pipeline.ll [Unroll/UnrollAndJam/Vectorizer/Distribute] Add followup loop attributes. 2018-12-12 17:32:52 +00:00
opt-bisect-helper.py Python compat - print statement 2019-01-03 14:11:33 +00:00
opt-bisect-legacy-pass-manager.ll [lit, python] Always add quotes around the python path in lit 2018-08-06 22:37:44 +00:00
opt-hot-cold-split.ll [HotColdSplit] Schedule splitting late to fix perf regression 2019-02-15 18:46:44 +00:00
opt-override-mcpu-mattr.ll
opt-twice.ll
optimization-remarks-inline.ll
optimization-remarks-invalidation.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
optimization-remarks-lazy-bfi.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
optimize-inrange-gep.ll Prevent Constant Folding From Optimizing inrange GEP 2018-09-11 01:53:36 +00:00
optimize-options.ll
pass-pipeline-parsing.ll [NewPM] Fixing test failure on Windows - removed opt binary name from pattern 2018-10-17 11:01:15 +00:00
pass-pipelines.ll [HotColdSplit] Schedule splitting late to fix perf regression 2019-02-15 18:46:44 +00:00
pipefail.txt
pr32085.ll Use no-op opt run to eliminate the difference in bb pred comment, per chandler's suggestion. It is better than using sed on portability. 2018-05-01 17:19:25 +00:00
print-debug-counter.ll Actually fix test from r345085 REQUIRE: asserts 2018-10-23 22:07:34 +00:00
print-module-scope.ll [New PM][PassInstrumentation] IR printing support for New Pass Manager 2018-09-24 16:08:15 +00:00
printer.ll [New PM][PassInstrumentation] IR printing support for New Pass Manager 2018-09-24 16:08:15 +00:00
scc-deleted-printer.ll [NewPM] -print-module-scope -print-after now prints module even after invalidated Loop/SCC 2018-12-21 11:49:05 +00:00
scc-pass-printer.ll Fixing -print-module-scope for legacy SCC passes 2018-12-03 14:48:15 +00:00
size-remarks.ll Make YAML quote forward slashes. 2018-10-12 16:31:20 +00:00
spir_cc.ll
statistic.ll Reland: [Timers] Use the pass argument name for JSON keys in time-passes 2018-06-13 21:03:56 +00:00
time-passes.ll [TimePasses] allow -time-passes reporting into a custom stream 2019-03-15 22:15:23 +00:00
umask.ll [CMake] Use normalized Windows target triples 2018-08-09 02:16:18 +00:00
writing-to-stdout.ll