This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: Compilation failure of 20010119-1.c under hpux at -O1 and above
- To: "John David Anglin" <dave at hiauly1 dot hia dot nrc dot ca>
- Subject: Re: Compilation failure of 20010119-1.c under hpux at -O1 and above
- From: law at redhat dot com
- Date: Mon, 30 Apr 2001 13:22:37 -0700
- cc: gcc-bugs at gcc dot gnu dot org
- Reply-To: law at redhat dot com
In message <200104301940.PAA22385@hiauly1.hia.nrc.ca>you write:
> The test 20010119-1.c fails under hpux 10.20 on the 3.0 branch:
>
> Executing on host: /xxx/gnu/gcc-3.0/objdir/gcc/xgcc -B/xxx/gnu/gcc-3.0/objd
> ir/gcc/ /xxx/gnu/gcc-3.0/gcc/testsuite/gcc.c-torture/execute/20010119-1.c
> -w -O1 -lm -fPIC -o /xxx/gnu/gcc-3.0/objdir/gcc/testsuite/20010119-1.x1
> (timeout = 1200)
> /usr/ccs/bin/ld: Unsatisfied symbols:
> undef (code)
>
> It appears that this test doesn't work under hpux because the constant
> `20000' exceeds the maximum size to load in one insn. In the intial
> rtl, it is loaded in two insns using the high and lo_sum parts.
> Inspite of REG_EQUAL notes on both pseudos, the test `(a) > 20000' and
> the call to undef are not eliminated from the code. The test will pass
> if 20000 is changed to a smaller number, say 11.
>
> I would guess that this shows that comparisons involving two psuedo
> registers containing constants are not being eliminated. This would
> seem like a relatively important optimisation.
There's a whole rats nest of issues here. I've got a plan, but given that
this is an optimization issue and not a regression problem I'm not inclined
to spend time working on it in the short term.
jeff