This is the mail archive of the
gcc-prs@gcc.gnu.org
mailing list for the GCC project.
Re: ada/6483: ada fails to build under hppa*-hp-hpux*
- From: "zack at codesourcery dot com" <zack at codesourcery dot com>
- To: danglin at gcc dot gnu dot org
- Cc: gcc-prs at gcc dot gnu dot org,
- Date: 30 Apr 2002 18:06:03 -0000
- Subject: Re: ada/6483: ada fails to build under hppa*-hp-hpux*
- Reply-to: "zack at codesourcery dot com" <zack at codesourcery dot com>
The following reply was made to PR ada/6483; it has been noted by GNATS.
From: "zack@codesourcery.com" <zack@codesourcery.com>
To: Mark Mitchell <mark@codesourcery.com>
Cc: John David Anglin <dave@hiauly1.hia.nrc.ca>,
Florian Weimer <fw@deneb.enyo.de>,
"dave.anglin@nrc.ca" <dave.anglin@nrc.ca>,
"gcc-gnats@gcc.gnu.org" <gcc-gnats@gcc.gnu.org>
Subject: Re: ada/6483: ada fails to build under hppa*-hp-hpux*
Date: Tue, 30 Apr 2002 10:55:49 -0700
On Tue, Apr 30, 2002 at 10:14:34AM -0700, Mark Mitchell wrote:
>
> >2001-10-08 Zack Weinberg <zack@codesourcery.com>
> >
> > * aclocal.m4 (gcc_AC_PROG_GNAT): New.
> > * configure.in: Use it.
> > * configure: Regenerated.
> > * config/pa/t-linux, config/pa/t-pa, config/pa/t-pa64,
> > config/pa/t-pro: Set T_ADAFLAGS, not ADA_CFLAGS.
>
> Zack, can you comment on this?
I do not fully understand the issue here.
My *impression* is that this is a host problem, i.e. that switch
should appear in an x-fragment not a t-fragment. My impression is
also that -mdisable-indexing needs to get applied to everything
compiled into gnat1, not just Ada source code.
Therefore, I'd suggest that the right fix is to nuke T_ADAFLAGS and
just set -mdisable-indexing with X_CFLAGS in x-pa. (There isn't an
x-pa right now, but we could create one.)
I can provide a patch if you'd like.
zw
p.s. The description of the effect of -mdisable-indexing, given by
various people on the list, does *not* match what it actually does.
What it actually does is prevent GCC from generating [reg+reg] loads.
(Well, that and this lovely piece of gobbledygook:
/* Since move_operand is only used for source operands, we can always
allow scaled indexing! */
if (! TARGET_DISABLE_INDEXING
&& GET_CODE (op) == PLUS
&& ((GET_CODE (XEXP (op, 0)) == MULT
&& GET_CODE (XEXP (XEXP (op, 0), 0)) == REG
&& GET_CODE (XEXP (XEXP (op, 0), 1)) == CONST_INT
&& INTVAL (XEXP (XEXP (op, 0), 1))
== (HOST_WIDE_INT) GET_MODE_SIZE (mode)
&& GET_CODE (XEXP (op, 1)) == REG)
|| (GET_CODE (XEXP (op, 1)) == MULT
&&GET_CODE (XEXP (XEXP (op, 1), 0)) == REG
&& GET_CODE (XEXP (XEXP (op, 1), 1)) == CONST_INT
&& INTVAL (XEXP (XEXP (op, 1), 1))
== (HOST_WIDE_INT) GET_MODE_SIZE (mode)
&& GET_CODE (XEXP (op, 0)) == REG)))
return 1;
but I think that boils down to the same thing.)
I would think that if [reg+reg] loads are causing problems, there's a
bug in the machine description, and -mdisable-indexing is merely
papering it over.