This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
fix middle-end/17367
- From: Richard Henderson <rth at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Thu, 9 Sep 2004 17:54:07 -0700
- Subject: fix middle-end/17367
The PR shows a case in which still assumed ADDRESSOF exists, so that
anything of a type that fits in a register should be put in a register.
The fix is to mind what use_register_for_decl says, and not put
addressable variables into registers.
r~
* function.c (assign_parm_setup_block): Only put PARALLELs into
a register if use_register_for_decl.
Index: function.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/function.c,v
retrieving revision 1.574
diff -c -p -d -r1.574 function.c
*** function.c 8 Sep 2004 19:25:02 -0000 1.574
--- function.c 10 Sep 2004 00:48:50 -0000
*************** assign_parm_setup_block (tree parm, stru
*** 2535,2541 ****
if (GET_CODE (entry_parm) == PARALLEL
&& data->nominal_mode != BLKmode
&& XVECLEN (entry_parm, 0) > 1
! && optimize)
{
rtx parmreg = gen_reg_rtx (data->nominal_mode);
--- 2535,2541 ----
if (GET_CODE (entry_parm) == PARALLEL
&& data->nominal_mode != BLKmode
&& XVECLEN (entry_parm, 0) > 1
! && use_register_for_decl (parm))
{
rtx parmreg = gen_reg_rtx (data->nominal_mode);