On Tue, Jul 19, 2011 at 6:30 PM, Jakub Jelinek <ja...@redhat.com> wrote:
> On Tue, Jul 19, 2011 at 06:26:33PM +0200, Uros Bizjak wrote:
>> Sometimes, the compiler is really creative in inventing instructions:
>>
>> (insn 47 46 49 7 (set (reg:SI 68 [ D.1686 ])
>>         (subreg:SI (plus:SF (reg:SF 159 [ D.1685 ])
>>                 (reg:SF 159 [ D.1685 ])) 0)) omp_atomic1.f90:17 247 {*lea_2}
>>      (expr_list:REG_DEAD (reg:SF 159 [ D.1685 ])
>>         (nil)))
>>
>> Really funny.
>
> That's the job of combiner to try all kinds of stuff and it is the
> responsibility of the backend to reject those.  I think it would be better
> to get back to testing Pmode in the legitimate address hook, perhaps
> allowing ptr_mode too in addition to Pmode (which for -m32/-m64 won't mean
> any change, just for -mx32).

Actually, there is a bypass in ix86_decompose_address, and this RTX
squeezed through. IMO constructs like this should be rejected in
i_d_a, which effectively only moves Pmode/ptr_mode check here.

I'm looking into it.

Uros.

Reply via email to