[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [avr-gcc-list] Could not identify that register is clobbered already

From: Georg-Johann Lay
Subject: Re: [avr-gcc-list] Could not identify that register is clobbered already
Date: Wed, 13 Feb 2013 10:00:08 +0100
User-agent: Thunderbird (Windows/20100228)

I answered to this on the GCC list:


Please f'up there.

S, Pitchumani a écrit:

I was analyzing an issue for avr target (gcc-4.7.2).

Issue is that already clobbered register is used after the transformation
in post reload pass.

insns after reload pass:

set (reg:HI r24
    (const:HI (plus:HI (symbol_ref:HI ("array"))
                       (const_int 4))
parallel set (reg:HI r14
             (and:HI (reg:HI r14)
                     (const_int 3)))
         clobber:QI r25
set (reg:HI r28
    (const:HI (plus:HI (symbol_ref:HI ("array"))
                       (const_int 4))

After post reload pass, insn-3 transformed as follows:

set (reg:HI r28
     reg:HI r24)

this transformation happened in reload_cse_move2add function.

Since r25 is clobbered in insn-2, above transformation (r28/29 <= r24/25) become incorrect.

Function 'move2add_use_add3_insn' sets only r24 info for insn-1 instead
of setting info for both r24/25. Function 'validate_change' checks only r24
info for insn-3 transformation.
is it possible to identify clobbered register and avoid transformation?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]