aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-coalesce.c
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2015-08-19 17:00:32 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2015-08-19 17:00:32 +0000
commitc24f5688adae2f885279e8fdce74a030e6944b7b (patch)
tree31f9d298632e1c8a23bdf19a980e7ed54c790474 /gcc/tree-ssa-coalesce.c
parent8dc89e4d7ed340095fa0d27de5de584156b38c0b (diff)
downloadgcc-c24f5688adae2f885279e8fdce74a030e6944b7b.zip
gcc-c24f5688adae2f885279e8fdce74a030e6944b7b.tar.gz
gcc-c24f5688adae2f885279e8fdce74a030e6944b7b.tar.bz2
[PR64164] fix regressions reported on m68k and armeb
Defer stack slot address assignment for all parms that can't live in pseudos, and accept pseudos assignments in assign_param_setup_block. for gcc/ChangeLog PR rtl-optimization/64164 * cfgexpand.c (parm_maybe_byref_p): Renamed to... (parm_in_stack_slot_p): ... this. Disregard mode, what matters is whether the parm will live in a pseudo or a stack slot. (expand_one_ssa_partition): Deal with params without a default def. Disregard mode. * cfgexpand.h: Renamed function declaration. * tree-ssa-coalesce.c: Adjust. * function.c (split_complex_args): Allocate stack slot for unassigned parms before splitting. (parm_in_unassigned_mem_p): New. Use it instead of parm_maybe_byref_p throughout this file. (assign_parm_setup_block): Use it. Accept pseudos in the expand-assigned rtl. (assign_parm_setup_reg): Drop BLKmode requirement. (assign_parm_setup_stack): Allocate and fill in the address of unassigned MEM parms. From-SVN: r227015
Diffstat (limited to 'gcc/tree-ssa-coalesce.c')
-rw-r--r--gcc/tree-ssa-coalesce.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/tree-ssa-coalesce.c b/gcc/tree-ssa-coalesce.c
index 08ce72c..6468012 100644
--- a/gcc/tree-ssa-coalesce.c
+++ b/gcc/tree-ssa-coalesce.c
@@ -1386,8 +1386,8 @@ gimple_can_coalesce_p (tree name1, tree name2)
because it may be passed by reference. */
return ((!var1 || VAR_P (var1)) && (!var2 || VAR_P (var2)))
|| (/* The case var1 == var2 is already covered above. */
- !parm_maybe_byref_p (var1)
- && !parm_maybe_byref_p (var2)
+ !parm_in_stack_slot_p (var1)
+ && !parm_in_stack_slot_p (var2)
&& promote_ssa_mode (name1, NULL) == promote_ssa_mode (name2, NULL));
}