[PATCH, avr]PING^2 Fix PR36609 incorrect RTL for test reversal pattern

Andy H hutchinsonandy@aim.com
Sun Sep 7 17:00:00 GMT 2008


Anatoly,

Third posting - no  comment received.

Can you please approve?


Andy


Andy H wrote:
> The attach patch fixes
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36609
>
> where incorrect code is created by AVR test reversal insn pattern when 
> signed oveflow behavior is specified.
>
> New reversed _tst insn is  defined for cc0=CMP 0, r pattern.  RTL 
> generated by avr_reorg is changed to use this for test and jump 
> optimizations. No changes occur in the assembler  created. This RTL is 
> always correct regardless of overflow behavior.
>
> The negated_tst patterns are changed to a single define and split for 
> modes QI-SI. This split  is conditional on compiler options allowing 
> undefined behavior for signed overflow such as Neg -32768.  Tests such 
> as that used in PR24493-1, are now correct and the existing 
> optimization is retained.
>
> Tested on avr-unknown-none target hosted on  i686-pc-linux-gnu with no 
> regressions. Test PR24493-1, now pass.
>
> Ok for 4.4 head?
>
>
>
> 2008-07-04  Andy Hutchinson  <hutchinsonandy@aim.com>
>
>    PR target/36609
>    * config/avr/avr.c (avr_reorg) : Create RTL for reversed compare 
> with 0.
>    * config/avr/avr.md  (QISI) : Define mode iterator.
>    (negated_tst<mode>) : Redefine as split using mode macro.
>    (reversed_tstqi): Define insn as reversed compare with zero.
>    (reversed_tsthi): Ditto.
>    (reversed_tstsi): Ditto.
>
>
>
>
>
>
>



More information about the Gcc-patches mailing list