[Bug middle-end/37316] [4.4 Regression] Small structs are not passed correctly on hppa64-*-*
dave at hiauly1 dot hia dot nrc dot ca
gcc-bugzilla@gcc.gnu.org
Thu Oct 23 13:26:00 GMT 2008
------- 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
More information about the Gcc-bugs
mailing list