llvm-6502/lib/Transforms/IPO
Peter Collingbourne 6e5bbb57e4 ArgumentPromotion: Drop sret attribute on functions that are only called directly.
If the first argument to a function is a 'this' argument and the second
has the sret attribute, the ArgumentPromotion pass may promote the 'this'
argument to more than one argument, violating the IR constraint that 'sret'
may only be applied to the first or second argument.

Although this IR constraint is arguably unnecessary, it highlighted the fact
that ArgPromotion does not need to preserve this attribute. Dropping the
attribute reduces register pressure in the backend by avoiding the register
copy required by sret. Because sret implies noalias, we also replace the
former with the latter.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239488 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-10 21:14:34 +00:00
..
ArgumentPromotion.cpp ArgumentPromotion: Drop sret attribute on functions that are only called directly. 2015-06-10 21:14:34 +00:00
BarrierNoopPass.cpp
CMakeLists.txt Add new EliminateAvailableExternally module pass, which is performed in 2015-06-10 17:49:28 +00:00
ConstantMerge.cpp DataLayout is mandatory, update the API to reflect it with references. 2015-03-10 02:37:25 +00:00
DeadArgumentElimination.cpp Change typeIncompatible to return an AttrBuilder instead of new-ing an AttributeSet. 2015-05-06 23:19:56 +00:00
ElimAvailExtern.cpp Add new EliminateAvailableExternally module pass, which is performed in 2015-06-10 17:49:28 +00:00
ExtractGV.cpp
FunctionAttrs.cpp [PM/AA] Start refactoring AliasAnalysis to remove the analysis group and 2015-06-04 02:03:15 +00:00
GlobalDCE.cpp GlobalDCE: Improve performance for large modules containing comdats. 2015-03-19 18:23:29 +00:00
GlobalOpt.cpp Recommit r236670: [opaque pointer type] Pass explicit pointer type through GEP constant folding"" 2015-05-07 17:28:58 +00:00
InlineAlways.cpp
Inliner.cpp [Inliner] Discard empty COMDAT groups 2015-05-05 20:14:22 +00:00
InlineSimple.cpp
Internalize.cpp
IPConstantPropagation.cpp
IPO.cpp Introduce bitset metadata format and bitset lowering pass. 2015-02-20 20:30:47 +00:00
LLVMBuild.txt Update libdeps since TLI was moved from Target to Analysis in r226078. 2015-01-15 05:21:00 +00:00
LoopExtractor.cpp [PM] Lift the analyses into the interface for 2015-01-19 03:03:39 +00:00
LowerBitSets.cpp [opaque pointer type] Pass GlobalAlias the actual pointer type rather than decomposing it into pointee type + address space 2015-04-29 21:22:39 +00:00
Makefile
MergeFunctions.cpp MergeFunctions: Don't replace a weak function use by another equivalent weak function 2015-06-09 18:19:17 +00:00
PartialInlining.cpp Add range adapters predecessors() and successors() for BBs 2015-02-04 19:14:57 +00:00
PassManagerBuilder.cpp Add new EliminateAvailableExternally module pass, which is performed in 2015-06-10 17:49:28 +00:00
PruneEH.cpp Don't promote asynch EH invokes of nounwind functions to calls 2015-02-11 01:23:16 +00:00
StripDeadPrototypes.cpp
StripSymbols.cpp IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00