]> granicus.if.org Git - llvm/commit
remove inalloca parameters in globalopt and simplify argpromotion
authorBob Haarman <llvm@inglorion.net>
Thu, 2 May 2019 00:37:36 +0000 (00:37 +0000)
committerBob Haarman <llvm@inglorion.net>
Thu, 2 May 2019 00:37:36 +0000 (00:37 +0000)
commit5993a0e6f3dbf09db1779bfe518714fe48801b39
tree9267515162fc66291457735d3dc7388428d85bff
parent70d009dbe3f537dbba5ee7c758f7e05f7b98d35d
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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359743 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/IPO/ArgumentPromotion.cpp
lib/Transforms/IPO/GlobalOpt.cpp
test/Transforms/ArgumentPromotion/X86/thiscall.ll [new file with mode: 0644]
test/Transforms/ArgumentPromotion/inalloca.ll
test/Transforms/GlobalOpt/fastcc.ll