This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: assign_parm_setup_block handling of parallels


On Wed, Jan 12, 2005 at 11:32:00AM -0800, Richard Henderson wrote:
> On Wed, Jan 12, 2005 at 12:55:17PM -0400, Aldy Hernandez wrote:
> > 	* function.c (assign_parm_setup_block): Relax condition on
> > 	multi-register optimization.
> 
> Ok with the fixed hard_regno_nregs check.

Whooops.

The call to emit_grop_move_into_temps() will change entry_parm to be a
pseudo.  We need to look inside the original entry_parm.

Pretty obvious, but... OK?

	* function.c (assign_parm_setup_block): Look inside original
	entry_parm when inspecting PARALLEL.

Index: function.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/function.c,v
retrieving revision 1.601
diff -c -p -r1.601 function.c
*** function.c	12 Jan 2005 20:01:38 -0000	1.601
--- function.c	12 Jan 2005 20:19:15 -0000
*************** assign_parm_setup_block (struct assign_p
*** 2553,2558 ****
--- 2553,2559 ----
    rtx stack_parm = data->stack_parm;
    HOST_WIDE_INT size;
    HOST_WIDE_INT size_stored;
+   rtx orig_entry_parm = entry_parm;
  
    if (GET_CODE (entry_parm) == PARALLEL)
      entry_parm = emit_group_move_into_temps (entry_parm);
*************** assign_parm_setup_block (struct assign_p
*** 2562,2568 ****
    if (GET_CODE (entry_parm) == PARALLEL
        && data->nominal_mode != BLKmode)
      {
!       rtx elt0 = XEXP (XVECEXP (entry_parm, 0, 0), 0);
  
        if ((XVECLEN (entry_parm, 0) > 1
  	   || hard_regno_nregs[REGNO (elt0)][GET_MODE (elt0)] > 1)
--- 2563,2569 ----
    if (GET_CODE (entry_parm) == PARALLEL
        && data->nominal_mode != BLKmode)
      {
!       rtx elt0 = XEXP (XVECEXP (orig_entry_parm, 0, 0), 0);
  
        if ((XVECLEN (entry_parm, 0) > 1
  	   || hard_regno_nregs[REGNO (elt0)][GET_MODE (elt0)] > 1)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]