1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-23 21:13:02 +02:00
llvm-mirror/test/Other
Chandler Carruth 099fbc1e8e [PM/LCG] Teach the LazyCallGraph to maintain reference edges from every
function to every defined function known to LLVM as a library function.

LLVM can introduce calls to these functions either by replacing other
library calls or by recognizing patterns (such as memset_pattern or
vector math patterns) and replacing those with calls. When these library
functions are actually defined in the module, we need to have reference
edges to them initially so that we visit them during the CGSCC walk in
the right order and can effectively rebuild the call graph afterward.

This was discovered when building code with Fortify enabled as that is
a common case of both inline definitions of library calls and
simplifications of code into calling them.

This can in extreme cases of LTO-ing with libc introduce *many* more
reference edges. I discussed a bunch of different options with folks but
all of them are unsatisfying. They either make the graph operations
substantially more complex even when there are *no* defined libfuncs, or
they introduce some other complexity into the callgraph. So this patch
goes with the simplest possible solution of actual synthetic reference
edges. If this proves to be a memory problem, I'm happy to implement one
of the clever techniques to save memory here.

llvm-svn: 308088
2017-07-15 08:08:19 +00:00
..
Inputs Handle invariant.group.barrier in BasicAA 2017-04-24 19:37:17 +00:00
X86 Include SelectionDAGISel in the opt-bisect process 2016-07-07 18:55:02 +00:00
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
attribute-comment.ll
bcanalyzer-block-info.txt
can-execute.txt
cgscc-devirt-iteration.ll [PM] Add devirtualization-based iteration utility into the new PM's 2017-02-12 05:38:04 +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 [PM/LCG] Teach the LazyCallGraph to maintain reference edges from every 2017-07-15 08:08:19 +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 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
FileCheck-space.txt
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 Revert "[lit] Clean output directories before running tests." 2017-06-30 16:05:03 +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/LCG] Teach the LazyCallGraph to maintain reference edges from every 2017-07-15 08:08:19 +00:00
new-pm-defaults.ll [PM] Enable registration of out-of-tree passes with PassBuilder 2017-07-10 10:57:55 +00:00
new-pm-lto-defaults.ll [PM] Enable registration of out-of-tree passes with PassBuilder 2017-07-10 10:57:55 +00:00
new-pm-thinlto-defaults.ll [ThinkLTO] Invoke build(Thin)?LTOPreLinkDefaultPipeline. 2017-06-29 23:08:38 +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
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
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
writing-to-stdout.ll Bring back r297624. 2017-03-13 20:00:25 +00:00