1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/lib/Transforms/IPO
Arthur Eubanks ce3fe31482 [CGSCC][Inliner] Handle new non-trivial edges in updateCGAndAnalysisManagerForPass
Previously the inliner did a bit of a hack by adding ref edges for all
new edges introduced by performing an inline before calling
updateCGAndAnalysisManagerForPass(). This was because
updateCGAndAnalysisManagerForPass() didn't handle new non-trivial call
edges.

This adds handling of non-trivial call edges to
updateCGAndAnalysisManagerForPass().  The inliner called
updateCGAndAnalysisManagerForFunctionPass() since it was handling adding
newly introduced edges (so updateCGAndAnalysisManagerForPass() would
only have to handle promotion), but now it needs to call
updateCGAndAnalysisManagerForCGSCCPass() since
updateCGAndAnalysisManagerForPass() is now handling the new call edges
and function passes cannot add new edges.

We follow the previous path of adding trivial ref edges then letting promotion
handle changing the ref edges to call edges and the CGSCC updates. So
this still does not allow adding call edges that result in an addition
of a non-trivial ref edge.

This is in preparation for better detecting devirtualization. Previously
since the inliner itself would add ref edges,
updateCGAndAnalysisManagerForPass() would think that promotion and thus
devirtualization had happened after any sort of inlining.

Reviewed By: asbirlea

Differential Revision: https://reviews.llvm.org/D91046
2020-11-11 13:43:49 -08:00
..
AlwaysInliner.cpp Reland [AlwaysInliner] Pass callee AAResults to InlineFunction() 2020-10-26 20:40:46 -07:00
ArgumentPromotion.cpp [ArgumentPromotion]: Copy function metadata after promoting arguments 2020-09-10 13:08:57 -04:00
Attributor.cpp [Attributor] Finalize the CGUpdater after each SCC 2020-10-27 22:07:56 -05:00
AttributorAttributes.cpp [Attributor][FIX] Properly promote arguments pointers to arrays 2020-10-29 00:45:32 -05:00
BarrierNoopPass.cpp
BlockExtractor.cpp [BlockExtract][NewPM] Port -extract-blocks to NPM 2020-10-21 12:51:11 -07:00
CalledValuePropagation.cpp [IR] Replace all uses of CallBase::getCalledValue() with getCalledOperand(). 2020-04-27 22:17:03 -07:00
CMakeLists.txt Recommit "[IPConstProp] Remove and move tests to SCCP." 2020-08-02 22:23:54 +01:00
ConstantMerge.cpp [Alignment][NFC] migrate DataLayout::getPreferredAlignment 2020-06-29 11:24:36 +00:00
CrossDSOCFI.cpp
DeadArgumentElimination.cpp [DAE] MarkLive in MarkValue(MaybeLive) if any use is live 2020-10-02 10:55:08 -07:00
ElimAvailExtern.cpp
ExtractGV.cpp
ForceFunctionAttrs.cpp [IR] add fn attr for no_stack_protector; prevent inlining on mismatch 2020-10-23 11:55:39 -07:00
FunctionAttrs.cpp [FunctionAttrs] Inline setDoesNotRecurse() and delete it. NFC 2020-09-19 22:24:52 -07:00
FunctionImport.cpp Fix some clang-tidy bugprone-argument-comment issues 2020-09-19 20:41:25 -07:00
GlobalDCE.cpp
GlobalOpt.cpp [SVE]Clarify TypeSize comparisons in llvm/lib/Transforms 2020-10-23 09:15:17 +01:00
GlobalSplit.cpp
HotColdSplitting.cpp Revert "[PM/CC1] Add -f[no-]split-cold-code CC1 option to toggle splitting" 2020-10-19 12:31:14 +02:00
InferFunctionAttrs.cpp
Inliner.cpp [CGSCC][Inliner] Handle new non-trivial edges in updateCGAndAnalysisManagerForPass 2020-11-11 13:43:49 -08:00
InlineSimple.cpp Revert "Revert "[llvm][NFC] Cleanup uses of std::function in Inlining-related APIs"" 2020-05-15 12:29:16 -07:00
Internalize.cpp
IPO.cpp [BlockExtract][NewPM] Port -extract-blocks to NPM 2020-10-21 12:51:11 -07:00
LLVMBuild.txt
LoopExtractor.cpp [LoopExtract][NewPM] Port -loop-extract to NPM 2020-10-13 22:55:42 -07:00
LowerTypeTests.cpp [AArch64] Add BTI to CFI jumptables. 2020-09-29 13:50:23 +02:00
MergeFunctions.cpp [llvm][NFC][CallSite] Remove CallSite from a few trivial locations 2020-04-22 08:39:21 -07:00
OpenMPOpt.cpp [OMPIRBuilder] Start 'Create' methods with lower case. NFC. 2020-11-09 19:35:11 -06:00
PartialInlining.cpp [PartialInliner]: Handle code regions in a switch stmt cases 2020-11-02 14:32:45 -05:00
PassManagerBuilder.cpp [LoopFlatten] Run it earlier, just before IndVarSimplify 2020-11-10 20:22:41 +00:00
PruneEH.cpp [PruneEH][NFC] Use CallGraphUpdater in PruneEH 2020-09-14 14:43:19 -07:00
SampleProfile.cpp Revert "Use uint64_t for branch weights instead of uint32_t" 2020-10-31 00:25:32 -07:00
SCCP.cpp
StripDeadPrototypes.cpp
StripSymbols.cpp [NewPM] Port strip* passes to NPM 2020-09-15 18:25:12 -07:00
SyntheticCountsPropagation.cpp [CallGraph] Add support for callback call sites 2020-07-01 13:44:11 -07:00
ThinLTOBitcodeWriter.cpp Revert "Move ModuleSummaryAnalysis from libAnalysis to libObject to break the dependency from Analysis to Object" 2020-04-14 00:27:08 +00:00
WholeProgramDevirt.cpp [WholeProgramDevirt][NewPM] Add NPM testing path to match legacy pass 2020-09-30 17:27:37 -07:00