This is the mail archive of the gcc-bugs@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]

[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


------- 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


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