Ping.

Thanks,
Kyrill

2013-08-14  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>

        PR tree-optimization/58088
        * fold-const.c (mask_with_trailing_zeros): New function.
        (fold_binary_loc): Make sure we don't recurse infinitely
        when the X in (X & C1) | C2 is a tree of the form (Y * K1) & K2.
        Use mask_with_trailing_zeros where appropriate.
        
        
2013-08-14  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>

        PR tree-optimization/58088
        * gcc.c-torture/compile/pr58088.c: New test.


> -----Original Message-----
> From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches-
> ow...@gcc.gnu.org] On Behalf Of Kyrylo Tkachov
> Sent: 07 August 2013 14:22
> To: gcc-patches
> Cc: 'Richard Biener'; pola...@redhat.com
> Subject: [PATCH][tree-optimization] Fix PR58088
> 
> Hi all,
> 
> In PR58088 the constant folder goes into an infinite recursion and runs
> out of
> stack space because of two conflicting optimisations:
> (X * C1) & C2 plays dirty when nested inside an IOR expression like so:
> ((X *
> C1) & C2) | C4. One can undo the other leading to an infinite recursion.
> 
> Thanks to Marek for finding the IOR case.
> 
> This patch fixes that by checking in the IOR case that the change to C2
> will
> not conflict with the AND case transformation. Example testcases in the
> PR on
> bugzilla.
> 
> This issue is present in 4.8.1 as well as trunk. However, I think 4.8
> uses a
> different API for double_int, so this patch will need to be reworked for
> 4.8.
> 
> In the meantime,
> Ok for trunk?
> 
> Bootstrapped on x86_64-linux-gnu and tested arm-none-eabi on qemu.
> 
> 
> Thanks,
> Kyrill
> 
> 2013-08-07  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>
> 
>       * gcc/fold-const.c (mask_with_trailing_zeros): New function.
>       (fold_binary_loc): Make sure we don't recurse infinitely
>       when the X in (X & C1) | C2 is a tree of the form (Y * K1) & K2.
>       Use mask_with_trailing_zeros where appropriate.
> 
> 
> 2013-08-07  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>
> 
>       * gcc.c-torture/compile/pr58088.c: New test.



Reply via email to