------- Comment #10 from dave at hiauly1 dot hia dot nrc dot ca  2008-10-23 
13:25 -------
Subject: Re:  [4.4 Regression] Small structs are not passed correctly on
hppa64-*-*

> --- function.c.jj10     2008-09-30 16:57:11.000000000 +0200
> +++ function.c  2008-10-22 17:32:26.000000000 +0200
> @@ -2436,7 +2436,9 @@ assign_parm_remove_parallels (struct ass
>    if (GET_CODE (entry_parm) == PARALLEL && GET_MODE (entry_parm) != BLKmode)
>      {
>        rtx parmreg = gen_reg_rtx (GET_MODE (entry_parm));
> -      emit_group_store (parmreg, entry_parm, NULL_TREE,
> +      emit_group_store (parmreg, entry_parm,
> +                       data->nominal_mode == data->passed_mode
> +                       ? data->passed_type : NULL_TREE,
>                         GET_MODE_SIZE (GET_MODE (entry_parm)));
>        entry_parm = parmreg;
>      }
> patch fixes this for me (at least, from eyeballing assembly and/or RTL from a
> cross compiler), though I'm not sure if data->passed_type or 
> data->nominal_type
> should be used and whether the data->nominal_mode == data->passed_mode guard 
> is
> needed or not.

This fixes the PR.  I will try the version without the guard when the
testsuite run completes this morning.

Thanks,
Dave


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37316

Reply via email to