1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00
llvm-mirror/test/Other
Chandler Carruth 176c94be9c [PM] Introduce a devirtualization iteration layer for the new PM.
This is an orthogonal and separated layer instead of being embedded
inside the pass manager. While it adds a small amount of complexity, it
is fairly minimal and the composability and control seems worth the
cost.

The logic for this ends up being nicely isolated and targeted. It should
be easy to experiment with different iteration strategies wrapped around
the CGSCC bottom-up walk using this kind of facility.

The mechanism used to track devirtualization is the simplest one I came
up with. I think it handles most of the cases the existing iteration
machinery handles, but I haven't done a *very* in depth analysis. It
does however match the basic intended semantics, and we can tweak or
tune its exact behavior incrementally as necessary. One thing that we
may want to revisit is freshly building the value handle set on each
iteration. While I don't think this will be a significant cost (it is
strictly fewer value handles but more churn of value handes than the old
call graph), it is conceivable that we'll want a somewhat more clever
tracking mechanism. My hope is to layer that on as a follow up patch
with data supporting any implementation complexity it adds.

This code also provides for a basic count heuristic: if the number of
indirect calls decreases and the number of direct calls increases for
a given function in the SCC, we assume devirtualization is responsible.
This matches the heuristics currently used in the legacy pass manager.

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

llvm-svn: 290665
2016-12-28 11:07:33 +00:00
..
Inputs
X86 Include SelectionDAGISel in the opt-bisect process 2016-07-07 18:55:02 +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
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 Recommit r256952 "Filtering IR printing for print-after-all/print-before-all" 2016-01-06 22:55:03 +00:00
attribute-comment.ll
bcanalyzer-block-info.txt
can-execute.txt
cgscc-devirt-iteration.ll [PM] Introduce a devirtualization iteration layer for the new PM. 2016-12-28 11:07:33 +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-observe-devirt.ll [PM] Introduce a devirtualization iteration layer for the new PM. 2016-12-28 11:07:33 +00:00
cleanup-lcssa.ll [PM] Schedule InstSimplify after late LICM run, to clean up LCSSA nodes. 2016-06-02 22:14:26 +00:00
close-stderr.ll
constant-fold-gep-address-spaces.ll
constant-fold-gep.ll Analysis: gep inbounds (gep inbounds (...)) is inbounds. 2016-11-22 01:03:40 +00:00
extract-alias.ll [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
extract-linkonce.ll
extract-weak-odr.ll
extract.ll
FileCheck-space.txt
invalid-commandline-option.ll
lint.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +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 [opaque pointer type] Add textual IR support for explicit type parameter for global aliases 2015-09-11 03:22:04 +00:00
loop-pass-ordering.ll PM: Implement a basic loop pass manager 2016-02-25 07:23:08 +00:00
new-pass-manager.ll [PM] Actually commit the test update that was supposed to accompany 2016-12-28 02:31:24 +00:00
opt-bisect-helper.py Re-commit optimization bisect support (r267022) without new pass manager support. 2016-04-22 22:06:11 +00:00
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 [llc/opt] Add an option to run all passes twice 2015-12-04 21:56:46 +00:00
optimization-remarks-inline.ll
optimize-options.ll
pass-pipeline-parsing.ll [PM] Introduce basic update capabilities to the new PM's CGSCC pass 2016-08-24 09:37:14 +00:00
pass-pipelines.ll Enable Loop Sink pass for functions that has profile. 2016-11-09 00:58:19 +00:00
pipefail.txt
ResponseFile.ll Try to get ResponseFile.ll passing on Windows after r267556. 2016-04-26 20:32:51 +00:00
spir_cc.ll
statistic.ll Statistic/Timer: Include timers in PrintStatisticsJSON(). 2016-11-18 19:43:24 +00:00
umask.ll