llvm-6502/lib
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
..
Analysis [GVN] Set proper debug locations for some instructions created by GVN. 2015-06-10 17:37:38 +00:00
AsmParser
Bitcode
CodeGen punctuation policing; NFC 2015-06-10 19:52:58 +00:00
DebugInfo
ExecutionEngine
Fuzzer
IR ArgumentPromotion: Drop sret attribute on functions that are only called directly. 2015-06-10 21:14:34 +00:00
IRReader
LibDriver
LineEditor
Linker
LTO
MC Replace string GNU Triples with llvm::Triple in MCSubtargetInfo and create*MCSubtargetInfo(). NFC. 2015-06-10 12:11:26 +00:00
Object
Option
Passes
ProfileData
Support
TableGen
Target [x86] Add a reassociation optimization to increase ILP via the MachineCombiner pass 2015-06-10 20:32:21 +00:00
Transforms ArgumentPromotion: Drop sret attribute on functions that are only called directly. 2015-06-10 21:14:34 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile