On 05/18/11 06:33, Jakub Jelinek wrote:
> Hi!
>
> The attached testcase ICEs on arm, because extract_fixed_bit_field
> with tmode SImode (and SImode non-NULL target) decides to use DImode for
> the signed shifts, but doesn't clear target and thus attempts to use
> that SImode target for DImode shifts.
> The code apparently already has if (mode != tmode) target = 0;, just
> done at a wrong spot before mode can be changed.
>
> Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux
> and tested with a cross to arm-linux on the testcase, ok for trunk/4.6?
>
> 2011-05-18 Jakub Jelinek <ja...@redhat.com>
>
> PR middle-end/49029
> * expmed.c (extract_fixed_bit_field): Test whether target can be used
> only after deciding which mode to use.
>
> * gcc.c-torture/compile/pr49029.c: New test.
OK.
Jeff