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

Re: HP-UX IA64 Patch to fix earlier patch


> > From: "John David Anglin" <dave@hiauly1.hia.nrc.ca>
> >
> > I agree with Jim here.  Not too long ago, I used this technique to avoid
> > defining FUNCTION_ARG_REG_LITTLE_ENDIAN on the hppa64 port.  I also
> > managed to fix a long standing bug in the 32-bit port passing small
> > structs using the same technique.  Jim's comment is an over simplification
> > of what really happens when a DImode value is used in a PARALLEL on
> > big-endian 32-port.  You actually get right-justified data in this case.
> > See function_arg and function_arg_padding in pa.c.
> 
> I'll give this a try.  Do you know if this behavour keys off of
> WORDS_BIG_ENDIAN, BYTES_BIG_ENDIAN, or BITS_BIG_ENDIAN?  On PA HP-UX all
> of these are 1, but on IA64 HP-UX we are setting BYTES and WORDS to 1
> and leaving BITS at 0.  Setting BITS_BIG_ENDIAN to 1 was causing some
> problems that I don't recall off the top of my head.

emit_group_load and emit_group_store use extract_bit_field and
store_bit_field.  They don't directly key off any of the above
but extract_bit_field and store_bit_field do.

In the 32-bit port, we had the rather unique situation where 5-8 byte
structs needed to be right-justified in the same manner as 1-4 byte
structs.  Structs larger than this are left justified.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)


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