summaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>2015-08-03 19:34:31 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>2015-08-03 19:34:31 +0000
commitf27f157541e108b22fd92ac2bed36bbfb72be9e8 (patch)
treea36a9bce7ffcf52891f3053b06bef0050c844f81 /gcc/function.c
parente6d1c8b1cd00189b4643ec548aabc471ee68d7cf (diff)
downloadgcc-f27f157541e108b22fd92ac2bed36bbfb72be9e8.tar.gz
PR middle-end/64744
PR middle-end/48470 PR middle-end/43404 * cfgexpand.c (expand_one_var): Add check if stack is going to be used in naked function. * expr.c (expand_expr_addr_expr_1): Remove excess checking whether expression should not reside in MEM. * function.c (use_register_for_decl): Do not use registers for non-register things (volatile, float, BLKMode) in naked functions. PR middle-end/64744 PR middle-end/48470 PR middle-end/43404 * gcc.target/arm/pr43404.c : New testcase. * gcc.target/arm/pr48470.c : New testcase. * gcc.target/arm/pr64744-1.c : New testcase. * gcc.target/arm/pr64744-2.c : New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@226528 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/function.c')
-rw-r--r--gcc/function.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/function.c b/gcc/function.c
index 536de195acf..20bf3b3a834 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -2105,9 +2105,6 @@ aggregate_value_p (const_tree exp, const_tree fntype)
bool
use_register_for_decl (const_tree decl)
{
- if (!targetm.calls.allocate_stack_slots_for_args ())
- return true;
-
/* Honor volatile. */
if (TREE_SIDE_EFFECTS (decl))
return false;
@@ -2135,6 +2132,9 @@ use_register_for_decl (const_tree decl)
if (flag_float_store && FLOAT_TYPE_P (TREE_TYPE (decl)))
return false;
+ if (!targetm.calls.allocate_stack_slots_for_args ())
+ return true;
+
/* If we're not interested in tracking debugging information for
this decl, then we can certainly put it in a register. */
if (DECL_IGNORED_P (decl))