This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/37316] [4.4 Regression] Small structs are not passed correctly on hppa64-*-*
- From: "dave at hiauly1 dot hia dot nrc dot ca" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 27 Oct 2008 13:49:38 -0000
- Subject: [Bug middle-end/37316] [4.4 Regression] Small structs are not passed correctly on hppa64-*-*
- References: <bug-37316-276@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #23 from dave at hiauly1 dot hia dot nrc dot ca 2008-10-27 13:49 -------
Subject: Re: [4.4 Regression] Small structs are not passed correctly on
hppa64-*-*
> Note that if you pad upward COMPLEX_TYPE (an ABI change), then just the
> assign_parm_remove_parallel fix should be enough and you could avoid passing
> everything in BLKmode (which pessimizes the code), because the emit_group_store
> bug only affects arguments that aren't passed in the first bytes of the
> register.
Changing the padding introduces an inconsistency between GCC versions,
but it's not really an ABI change as it always required upward padding.
The treatment of complex and vector types in function_arg was written
with this in mind.
I did see that complex types were correctly passed without using BLKmode
with your change installed. So, it it goes in, I will look at reverting
the BLKmode change.
Dave
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37316