This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] fix a failure for ARM
- From: Geoff Keating <geoffk at geoffk dot org>
- To: Adam Nemet <anemet at Lnxw dot COM>
- Cc: Richard dot Earnshaw at arm dot com, gcc-patches at gcc dot gnu dot org, kenner at nyu dot edu
- Date: 05 Sep 2002 14:51:43 -0700
- Subject: Re: [PATCH] fix a failure for ARM
- References: <200207311232.NAA07048@cam-mail2.cambridge.arm.com><hcvg6v5ald.fsf@anemet1.lynx.com><m3r8hiy6ro.fsf_-_@north-pole.nickc.cambridge.redhat.com><hck7n94sl8.fsf@anemet1.lynx.com><m3ptx1tgb6.fsf@north-pole.nickc.cambridge.redhat.com><hcznw13ead.fsf_-_@anemet1.lynx.com>
Adam Nemet <anemet@Lnxw.COM> writes:
> Hi,
>
> The testcase gcc.c-torture/compile/20000804-1.c fails with -mthumb
> -fPIC -mpic-register=6. It turned out to be a reload issue.
>
> In order to reload the __complex__ long long variable from the stack
> before the asm statement, gen_reload calls gen_move_insn which emits
> one DI move for the real part and one for the imaginary part. The
> problem is that since the address itself has to be reloaded ((fp -
> const_int) in not a legitimate address with Thumb), splitting the move
> kills the substitution of the address part.
>
> I applied Richard Kenner's solution with multi-word moves in the same
> function, see http://gcc.gnu.org/ml/gcc-patches/2000-04/msg00554.html.
You probably want to read
http://gcc.gnu.org/ml/gcc-patches/2000-04/msg01148.html
--
- Geoffrey Keating <geoffk@geoffk.org>