From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cagney To: Daniel Jacobowitz Cc: David B Anderson , gdb-patches@sources.redhat.com Subject: Re: [rfa] mips argument passing fixes for o32 Date: Mon, 16 Jul 2001 07:46:00 -0000 Message-id: <3B52FE50.6050009@cygnus.com> References: <200107130003.RAA57770@quasar.engr.sgi.com> <3B521018.5080706@cygnus.com> <20010715152239.A21579@nevyn.them.org> X-SW-Source: 2001-07/msg00371.html > That's not what it does, though. It only left-shifts the dregs if they > constitute the entire structure; thus the check I used. Little-endian > will left-shift only small structs, while big-endian will left-shift > small structs or leftovers. I which case you definitly need the o32 check. DEC's compiler passes small structs in the LE part of the register. > As for when it is done, GCC says: > if (struct_p && int_size_in_bytes (type) < UNITS_PER_WORD > && ! TARGET_64BIT && mips_abi != ABI_EABI) > > However, there's a comment to the effect that the !TARGET_64BIT is > actually wrong, and being used only for efficiency. So I'm not sure > precisely when this applies. It seems that !MIPS_EABI and > MIPS_SAVED_REGSIZE < 8 would agree with at least the way that GCC does > things, but GCC is not a sterling example of n32 or n64 compatibility. still digging, Andrew