llvm-project/llvm/lib/Transforms/IPO
Erik Eckstein 0c48dd8ca5 Fix a crash in MergeFunctions related to ordering of weak/strong functions
The assumption, made in insert() that weak functions are always inserted after strong functions,
is only true in the first round of adding functions.
In subsequent rounds this is no longer guaranteed , because we might remove a strong function from the tree (because it's modified) and add it later,
where an equivalent weak function already exists in the tree.
This change removes the assert in insert() and explicitly enforces a weak->strong order.
This also removes the need of two separate loops in runOnModule().

llvm-svn: 271299
2016-05-31 17:20:23 +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 the Sample FDO to new PM (part-1) 2016-05-27 22:30:44 +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 Fix a crash in MergeFunctions related to ordering of weak/strong functions 2016-05-31 17:20:23 +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 [PM] Port the Sample FDO to new PM (part-2) 2016-05-27 23:20:16 +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