llvm-project/llvm/test/Other
Chandler Carruth 7376ae88eb [PM/CGSCC] Teach the CGSCC pass manager components to gracefully handle
invalidated SCCs even when we do not have an updated SCC to redirect
towards.

This comes up in a fairly subtle and surprising circumstance: we need to
have a connected but internal node in the call graph which later becomes
a disconnected island, and then gets deleted. All of this needs to
happen mid-CGSCC walk. Because it is disconnected, we have no way of
computing a new "current" SCC when it gets deleted. Instead, we need to
explicitly check for a deleted "current" SCC and bail out of the current
CGSCC step. This will bubble all the way up to the post-order walk and
then resume correctly.

I've included minimal tests for this bug. The specific behavior
matches something we've seen in the wild with the new PM combined with
ThinLTO and sample PGO, but I've not yet confirmed whether this is the
only issue there.

llvm-svn: 313242
2017-09-14 08:33:57 +00:00
..
Inputs Add test coverage for new PM PGOOpt handling. 2017-07-26 02:00:43 +00:00
X86
2002-01-31-CallGraph.ll Make shell redirection construct portable 2017-07-12 13:24:46 +00:00
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
2007-06-05-PassID.ll [PM] Port CFGViewer and CFGPrinter to the new Pass Manager 2016-09-15 18:35:27 +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
FileCheck-space.txt
ResponseFile.ll
attribute-comment.ll
bcanalyzer-block-info.txt
can-execute.txt [llvm] Get rid of "%T" expansions 2017-08-15 20:29:24 +00:00
cgscc-devirt-iteration.ll [PM] Add devirtualization-based iteration utility into the new PM's 2017-02-12 05:38:04 +00:00
cgscc-disconnected-invalidation.ll [PM/CGSCC] Teach the CGSCC pass manager components to gracefully handle 2017-09-14 08:33:57 +00:00
cgscc-iterate-function-mutation.ll [PM] Introduce basic update capabilities to the new PM's CGSCC pass 2016-08-24 09:37:14 +00:00
cgscc-libcall-update.ll Merge isKnownNonNull into isKnownNonZero 2017-09-09 18:23:11 +00:00
cgscc-observe-devirt.ll [PM] Introduce a devirtualization iteration layer for the new PM. 2016-12-28 11:07:33 +00:00
cleanup-lcssa.ll
close-stderr.ll
constant-fold-gep-address-spaces.ll
constant-fold-gep.ll opt: Rename -default-data-layout flag to -data-layout and make it always override the layout. 2017-02-17 17:36:52 +00:00
debugcounter-newgvn.ll NewGVN: Add debug counter for value numbering 2017-03-01 19:59:26 +00:00
debugcounter-predicateinfo.ll NewGVN: Add debug counter for value numbering 2017-03-01 19:59:26 +00:00
extract-alias.ll
extract-linkonce.ll
extract-weak-odr.ll
extract.ll
invalid-commandline-option.ll
invariant.group.barrier.ll Remove readnone from invariant.group.barrier 2017-04-12 20:45:12 +00:00
lint.ll
lit-globbing.ll [llvm] Get rid of "%T" expansions 2017-08-15 20:29:24 +00:00
lit-quoting.txt [lit] Work around Windows MSys command line tokenization bug 2016-10-26 20:29:27 +00:00
lit-unicode.txt
llvm-nm-without-aliases.ll
loop-pass-ordering.ll [PM] Rewrite the loop pass manager to use a worklist and augmented run 2017-01-11 06:23:21 +00:00
loop-pm-invalidation.ll [PM] Relax the patterns used in the new test I added because some 2017-02-10 08:48:50 +00:00
new-pass-manager.ll [PM] Switch the CGSCC debug messages to use the standard LLVM debug 2017-08-11 05:47:13 +00:00
new-pm-defaults.ll [DivRempairs] add a pass to optimize div/rem pairs (PR31028) 2017-09-09 13:38:18 +00:00
new-pm-lto-defaults.ll Make ICP uses PSI to check for hotness. 2017-08-08 20:57:33 +00:00
new-pm-pgo.ll Move the SampleProfileLoader right after EarlyFPM. 2017-08-07 20:23:20 +00:00
new-pm-thinlto-defaults.ll [DivRempairs] add a pass to optimize div/rem pairs (PR31028) 2017-09-09 13:38:18 +00:00
opt-bisect-helper.py
opt-bisect-legacy-pass-manager.ll opt-bisect-legacy-pass-manager.ll: Test only works with default triple configured 2016-08-03 20:28:19 +00:00
opt-override-mcpu-mattr.ll
opt-twice.ll
optimization-remarks-inline.ll
optimization-remarks-invalidation.ll Correct a typo, s/hosting/hoisting/ 2017-02-14 16:41:10 +00:00
optimization-remarks-lazy-bfi.ll Move test of lazy BFI with ORE to a generic directory 2017-01-13 00:16:23 +00:00
optimize-options.ll
pass-pipeline-parsing.ll [PM] Rewrite the loop pass manager to use a worklist and augmented run 2017-01-11 06:23:21 +00:00
pass-pipelines.ll fix typos in comments; NFC 2017-07-11 06:04:59 +00:00
pipefail.txt
pr32085.ll Simplify the CFG after loop pass cleanup. 2017-04-26 12:02:41 +00:00
spir_cc.ll
statistic.ll Statistic/Timer: Include timers in PrintStatisticsJSON(). 2016-11-18 19:43:24 +00:00
umask.ll
writing-to-stdout.ll Bring back r297624. 2017-03-13 20:00:25 +00:00