llvm-project/llvm/lib/Transforms/IPO
Peter Collingbourne fad596aa81 Move whole-program virtual call optimization pass after function attribute inference in LTO pipeline.
As a result of D18634 we no longer infer certain attributes on linkonce_odr
functions at compile time, and may only infer them at LTO time. The readnone
attribute in particular is required for virtual constant propagation (part
of whole-program virtual call optimization) to work correctly.

This change moves the whole-program virtual call optimization pass after
the function attribute inference passes, and enables the attribute inference
passes at opt level 1, so that virtual constant propagation has a chance to
work correctly for linkonce_odr functions.

Differential Revision: http://reviews.llvm.org/D20643

llvm-svn: 270765
2016-05-25 21:26:14 +00:00
..
ArgumentPromotion.cpp [ArgumentPromotion] Propagate operand bundles to promoted call sites 2016-04-29 04:56:12 +00:00
BarrierNoopPass.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
CMakeLists.txt WholeProgramDevirt: introduce. 2016-02-09 22:50:34 +00:00
ConstantMerge.cpp [PM] Port ConstantMerge to the new pass manager. 2016-05-05 00:51:09 +00:00
CrossDSOCFI.cpp Re-commit optimization bisect support (r267022) without new pass manager support. 2016-04-22 22:06:11 +00:00
DeadArgumentElimination.cpp [DeadArgumentElimination] Propagate operand bundles to promoted call sites 2016-04-29 07:22:36 +00:00
ElimAvailExtern.cpp [PM] Port EliminateAvailableExternally pass to the new pass manager. 2016-05-05 02:37:32 +00:00
ExtractGV.cpp Re-commit optimization bisect support (r267022) without new pass manager support. 2016-04-22 22:06:11 +00:00
ForceFunctionAttrs.cpp Fix option desc in FunctionAttrs; NFC 2016-01-06 18:18:16 +00:00
FunctionAttrs.cpp [FunctionAttrs] Volatile loads should disable readonly 2016-05-25 05:53:04 +00:00
FunctionImport.cpp [ThinLTO] Refactor ODR resolution and internalization (NFC) 2016-05-25 14:03:11 +00:00
GlobalDCE.cpp [GlobalDCE, Misc] Don't remove functions referenced by ifuncs 2016-05-04 00:20:48 +00:00
GlobalOpt.cpp [GlobalOpt] Propagate operand bundles 2016-04-29 08:07:22 +00:00
IPConstantPropagation.cpp [IPO/IPCP] Convert to use static functions. NFC. 2016-05-03 20:08:24 +00:00
IPO.cpp [PM] Port EliminateAvailableExternally pass to the new pass manager. 2016-05-05 02:37:32 +00:00
InferFunctionAttrs.cpp [TLI] Unify LibFunc attribute inference. NFCI. 2016-04-27 19:04:40 +00:00
InlineAlways.cpp Avoid including AlwaysInliner pass in opt-bisect search. 2016-05-23 21:57:54 +00:00
InlineSimple.cpp Make InlineSimple's one-arg constructor explicit. NFC 2016-03-29 16:26:06 +00:00
Inliner.cpp Avoid including AlwaysInliner pass in opt-bisect search. 2016-05-23 21:57:54 +00:00
Internalize.cpp PM: Port Internalize to the new pass manager 2016-04-26 20:15:52 +00:00
LLVMBuild.txt [PGO] Passmanagerbuilder change that enable IR level PGO instrumentation 2016-01-21 18:28:59 +00:00
LoopExtractor.cpp Re-commit optimization bisect support (r267022) without new pass manager support. 2016-04-22 22:06:11 +00:00
LowerBitSets.cpp Re-commit optimization bisect support (r267022) without new pass manager support. 2016-04-22 22:06:11 +00:00
MergeFunctions.cpp Functions with differing phis should not be merged. 2016-05-20 18:39:11 +00:00
PartialInlining.cpp Cloning: Clean up the interface to the CloneFunction function. 2016-05-10 20:23:24 +00:00
PassManagerBuilder.cpp Move whole-program virtual call optimization pass after function attribute inference in LTO pipeline. 2016-05-25 21:26:14 +00:00
PruneEH.cpp Re-commit optimization bisect support (r267022) without new pass manager support. 2016-04-22 22:06:11 +00:00
SampleProfile.cpp Do not read callee name when matching IR to profile as it is not used. 2016-04-29 17:19:10 +00:00
StripDeadPrototypes.cpp Re-commit optimization bisect support (r267022) without new pass manager support. 2016-04-22 22:06:11 +00:00
StripSymbols.cpp Re-commit optimization bisect support (r267022) without new pass manager support. 2016-04-22 22:06:11 +00:00
WholeProgramDevirt.cpp Re-apply r269081 and r269082 with a fix for MSVC. 2016-05-10 18:07:21 +00:00