However, in s390.c, we have:
static bool
s390_valid_pointer_mode (enum machine_mode mode)
{
return (mode == SImode || (TARGET_64BIT && mode == DImode));
}
Note that more than one mode is supported simultaneously. Thus, it's
legal for the application to specify SI or DI mode for pointer (via
__attribute__((mode))), but cc1plus then aborts.
So... who is right? Are we supposed to support multiple pointer sizes
in the same compilation unit, or not?
Hmm... this worked when I put this in for s390 at one point - for
exactly the reason that you have with the attribute.
-eric