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

Reply via email to