llvm-project/llvm/lib/Transforms/IPO
Bob Haarman a78ab77b6b remove inalloca parameters in globalopt and simplify argpromotion
Summary:
Inalloca parameters require special handling in some optimizations.
This change causes globalopt to strip the inalloca attribute from
function parameters when it is safe to do so, removes the special
handling for inallocas from argpromotion, and replaces it with a
simple check that causes argpromotion to skip functions that receive
inallocas (for when the pass is invoked on code that didn't run
through globalopt first). This also avoids a case where argpromotion
would incorrectly try to pass an inalloca in a register.

Fixes PR41658.

Reviewers: rnk, efriedma

Reviewed By: rnk

Subscribers: llvm-commits

Tags: #llvm

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

llvm-svn: 359743
2019-05-02 00:37:36 +00:00
..
AlwaysInliner.cpp Provide reason messages for unviable inlining 2019-02-01 10:44:43 +00:00
ArgumentPromotion.cpp remove inalloca parameters in globalopt and simplify argpromotion 2019-05-02 00:37:36 +00:00
BarrierNoopPass.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
BlockExtractor.cpp [BlockExtractor] Expose a constructor for the group extraction 2019-04-29 16:14:02 +00:00
CMakeLists.txt Hot cold splitting pass 2018-09-07 15:03:49 +00:00
CalledValuePropagation.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ConstantMerge.cpp [ConstantMerge] Factor out check for un-mergeable globals, NFC 2019-01-20 02:44:43 +00:00
CrossDSOCFI.cpp [opaque pointer types] Add a FunctionCallee wrapper type, and use it. 2019-02-01 02:28:03 +00:00
DeadArgumentElimination.cpp [opaque pointer types] Pass function types to CallInst creation. 2019-02-01 20:43:25 +00:00
ElimAvailExtern.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ExtractGV.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ForceFunctionAttrs.cpp Revert "[Sanitizers] UBSan unreachable incompatible with ASan in the presence of `noreturn` calls" 2019-01-24 18:04:21 +00:00
FunctionAttrs.cpp [IR] Refactor attribute methods in Function class (NFC) 2019-04-04 22:40:06 +00:00
FunctionImport.cpp [ThinLTO] Restructure AliasSummary to contain ValueInfo of Aliasee 2019-03-15 15:11:38 +00:00
GlobalDCE.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
GlobalOpt.cpp remove inalloca parameters in globalopt and simplify argpromotion 2019-05-02 00:37:36 +00:00
GlobalSplit.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
HotColdSplitting.cpp [IR] Refactor attribute methods in Function class (NFC) 2019-04-04 22:40:06 +00:00
IPConstantPropagation.cpp [IPCP] Don't crash due to arg count/type mismatch between caller/callee 2019-01-29 10:19:44 +00:00
IPO.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
InferFunctionAttrs.cpp [IR] Refactor attribute methods in Function class (NFC) 2019-04-04 22:40:06 +00:00
InlineSimple.cpp [CallSite removal] move InlineCost to CallBase usage 2019-04-23 12:43:27 +00:00
Inliner.cpp [CallSite removal] move InlineCost to CallBase usage 2019-04-23 12:43:27 +00:00
Internalize.cpp [Internalize] Replace uses of std::set with DenseSet 2019-04-02 09:25:31 +00:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
LoopExtractor.cpp [CodeExtractor] Update function's assumption cache after extracting blocks from it 2019-02-08 06:55:18 +00:00
LowerTypeTests.cpp Use llvm::stable_sort 2019-04-23 14:51:27 +00:00
MergeFunctions.cpp Use llvm::stable_sort 2019-04-23 14:51:27 +00:00
PartialInlining.cpp [CallSite removal] move InlineCost to CallBase usage 2019-04-23 12:43:27 +00:00
PassManagerBuilder.cpp [PassManagerBuilder] Add option for interleaved loops, for loop vectorize. 2019-04-30 21:29:20 +00:00
PruneEH.cpp [CallSite removal] Move the legacy PM, call graph, and some inliner 2019-04-19 05:59:42 +00:00
SCCP.cpp [IPSCCP] Add missing `AssumptionCacheTracker` dependency 2019-04-22 17:38:29 +00:00
SampleProfile.cpp [CallSite removal] move InlineCost to CallBase usage 2019-04-23 12:43:27 +00:00
StripDeadPrototypes.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
StripSymbols.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
SyntheticCountsPropagation.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ThinLTOBitcodeWriter.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
WholeProgramDevirt.cpp [ThinLTO] Detect partially split modules during the thin link 2019-02-14 21:22:50 +00:00