target/8520: -mips64 not forcing -mgp64 under mips*-*-linux* target
Daniel Jacobowitz
drow@mvista.com
Mon Nov 11 07:56:00 GMT 2002
The following reply was made to PR target/8520; it has been noted by GNATS.
From: Daniel Jacobowitz <drow@mvista.com>
To: jbr@keyresearch.com
Cc: gcc-gnats@gcc.gnu.org, jbroughton@keyresearch.com,
glindahl@keyresearch.com
Subject: Re: target/8520: -mips64 not forcing -mgp64 under mips*-*-linux* target
Date: Mon, 11 Nov 2002 10:54:07 -0500
On Sun, Nov 10, 2002 at 10:54:02PM -0000, jbr@keyresearch.com wrote:
>
> >Number: 8520
> >Category: target
> >Synopsis: -mips64 not forcing -mgp64 under mips*-*-linux* target
> >Confidential: no
> >Severity: serious
> >Priority: medium
> >Responsible: unassigned
> >State: open
> >Class: sw-bug
> >Submitter-Id: net
> >Arrival-Date: Sun Nov 10 14:56:00 PST 2002
> >Closed-Date:
> >Last-Modified:
> >Originator: Jeff Rubin
> >Release: 3.2
> >Organization:
> >Environment:
> Cross compiler running on i686-pc-linux running Red Hat 7.2
> linux
> >Description:
> In config.gcc, for mips*-*-linux*, tm_file has near the end
> linux.h and then mips/linux.h. The first thing mips/linux.h
> does is to include mips/mips.h. So the header files come
> in in the order ... linux.h mips/mips.h <rest of>linux.h
> In mips/mips.h there is a macro definition for CC1_SPEC
> which has the correct stuff to make -mips64 force -mgp64,
> among other things. However, it is conditionaled on
> #ifndef CC1_SPEC. linux.h also has a macro definition
> for CC1_SPEC (setting it to %{profile:-p}) which is
> conditionaled the same way. Since linux.h comes before
> mips.h, CC1_SPEC gets defined by linux.h and not by
> mips.h.
> >How-To-Repeat:
>
> >Fix:
> Partial fix: add #undef CC1_SPEC to mips/linux.h before the
> #include "mips/mips.h" to undo the definition in linux.h.
> I'm not sure how you would get the profile forces -p effect
> back or even if you want to in this case.
I don't think that -mips64 _should_ force -mgp64 on mips*-linux*.
mips*-linux* is for the 32-bit MIPS/Linux port; there will be a
mips*64-linux* pattern when GCC supports a 64-bit Linux configuration,
which it doesn't yet. There was a discussion last week on the binutils
list about this exact behavior.
It's useful to generate code using instructions from higher ISAs that
still works when your OS only saves and restores 32-bit registers.
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
More information about the Gcc-prs
mailing list