This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: 3.4 PATCH: Consistently use _ABIO32 for _MIPS_SIM
Alexandre Oliva writes:
sorry for the late reply: start of term is taking most of my time.
> On Oct 9, 2003, Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> wrote:
>
> > * config/mips/{iris6.h, linux.h} used to define _MIPS_SIM for the O32 ABI
> > in terms of another macro not defined by gcc itself (or SGI's MIPSpro C,
> > for that matter), namely _MIPS_SIM_ABI32.
>
> My understanding is that this made things backward-compatible. Even
> if your sgidefs.h doesn't define _MIPS_SIM_ABI32 (because it pre-dates
> the existence of multiple ABIs), they will still compare equal. If
But do any such systems exist and do we still care for them? Even IRIX 5.3
(which is quite ancient by todays standards) defines _MIPS_SIM in terms of
_ABIO32 and has _MIPS_SIM_ABI32=1 in <sgidefs.h>.
> your code is written with multiple ABIs in mind, it's entitled to
> require _MIPS_SIM to be defined to non-zero, after including
> <sgidefs.h>.
>
> If your proposal still guarantees this set of assumptions, I don't
> have any problem with it.
I'm not sure i really get what you mean: consider this input:
#if _MIPS_SIM == _MIPS_SIM_ABI32
O32 with "_MIPS_SIM_ABI32"
#endif
#if _MIPS_SIM == _ABIO32
O32 with "_ABIO32"
#endif
Right now, with -D_MIPS_SIM=_MIPS_SIM_ABI32 only (i.e. _MIPS_SIM_ABI32 and
_ABIO32 undefined), you get
O32 with "_MIPS_SIM_ABI32"
O32 with "_ABIO32"
because both undefined macros evaluate to 0.
With my proposed patch (-D_MIPS_SIM=_ABIO32 -D_ABIO32=1) and without
<sgidefs.h> (i.e. _MIPS_SIM_ABI32 undefined), you get
O32 with "_ABIO32"
But it is simply wrong to use _MIPS_SIM without <sgidefs.h>, so you get
what you deserve ;-(
With my proposed patch and <sgidefs.h> (i.e. _MIPS_SIM_ABI32 defined), you
get again
O32 with "_MIPS_SIM_ABI32"
O32 with "_ABIO32"
Rainer