> I'll investigate and play around with it. I quickly tried:
Index: config/sparc/sparc.h =================================================================== --- config/sparc/sparc.h (revision 180235) +++ config/sparc/sparc.h (working copy) @@ -528,7 +528,18 @@ extern enum cmodel sparc_cmodel; {"tune", "%{!mtune=*:-mtune=%(VALUE)}" }, \ {"float", "%{!msoft-float:%{!mhard-float:%{!mfpu: %{!mno-fpu:-m%(VALUE)-float}}}}" } -/* target machine storage layout */ +/* Target machine storage layout. */ + +/* Define this macro if it is advisable to hold scalars in registers + in a wider mode than that declared by the program. In such cases, + the value is constrained to be within the bounds of the declared + type, but kept valid in the wider mode. The signedness of the + extension may differ from that of the type. */ + +#define PROMOTE_MODE(MODE,UNSIGNEDP,TYPE) \ + if (GET_MODE_CLASS (MODE) == MODE_INT \ + && GET_MODE_SIZE (MODE) < 4) \ + (MODE) = SImode; /* Define this if most significant bit is lowest numbered in instructions that operate on numbered bit-fields. */ and results were mixed. -- Eric Botcazou