summaryrefslogtreecommitdiffstats
path: root/llvm/lib/IR/IRBuilder.cpp
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2015-06-10 21:14:34 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2015-06-10 21:14:34 +0000
commit115fe3762108b7aca37274cb31f10a48d9b35b01 (patch)
tree053d0f65a0b3419b91b2f115362ca7fab301088a /llvm/lib/IR/IRBuilder.cpp
parent95d83959d89df84804500798cb98defc75b9b0be (diff)
downloadbcm5719-llvm-115fe3762108b7aca37274cb31f10a48d9b35b01.tar.gz
bcm5719-llvm-115fe3762108b7aca37274cb31f10a48d9b35b01.zip
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 llvm-svn: 239488
Diffstat (limited to 'llvm/lib/IR/IRBuilder.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud