On Sun, Aug 09, 2020 at 11:24:54PM +0200, Marc Glisse wrote:
> Odd numbers are invertible in Z / 2^n Z, so X * C1 == C2 can be rewritten as
> X == C2 * inv(C1) when overflow wraps.
> 
> mod_inv should probably be updated to better match the other wide_int
> functions, but that's a separate issue.
> 
> Bootstrap+regtest on x86_64-pc-linux-gnu.
> 
> 2020-08-10  Marc Glisse  <marc.gli...@inria.fr>
> 
>       PR tree-optimization/95433
>       * match.pd (X * C1 == C2): Handle wrapping overflow.
>       * expr.c (maybe_optimize_mod_cmp): Qualify call to mod_inv.
>       (mod_inv): Move...
>       * wide-int.cc (mod_inv): ... here.
>       * wide-int.h (mod_inv): Declare it.
> 
>       * gcc.dg/tree-ssa/pr95433-2.c: New file.

LGTM, thanks.

        Jakub

Reply via email to