This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/15941] [3.4/3.5 regression] new fails gcc.dg/compat/struct-by-value-11 and gcc.dg/compat/struct-by-value-1
- 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: 12 Jun 2004 21:37:36 -0000
- Subject: [Bug target/15941] [3.4/3.5 regression] new fails gcc.dg/compat/struct-by-value-11 and gcc.dg/compat/struct-by-value-1
- References: <20040611160703.15941.danglin@gcc.gnu.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From dave at hiauly1 dot hia dot nrc dot ca 2004-06-12 21:37 -------
Subject: Re: [3.4/3.5 regression] new fails gcc.dg/comp
> > > The 32-bit PA ABI has rather special requirements for passing 5-7 byte
> > > structs. See the comment in function_arg in pa.c. I believe the fail
> > > in test5 is caused by trying to pass a 5 byte struct.
> >
> > So is the PA FUNCTION_ARG_BOUNDARY function lying about the alignment?
>
> Well, it's not defined so how could we be lying ...
Sorry, the last mail was wrong. FUNCTION_ARG_BOUNDARY does the
right thing as far as I can tell. It returns either PARM_BOUNDARY
or MAX_PARM_BOUNDARY (32 or 64 on the 32-bit port).
We need 64 bit alignment for a 5 byte struct on the 32-bit port. It
has to be padded downward. Achieving the required padding for structs
larger than a word was difficult and was an outstanding ABI bug for
years.
Dave
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15941