On Fri, 2020-08-21 at 17:55 +0100, Roger Sayle wrote:
> PR tree-optimization/21137 is now an old enhancement request pointing out
> that an optimization I added back in 2006, to optimize "((x>>31)&64) != 0"
> as "x < 0", doesn't fire in the presence of unanticipated type conversions.
> The fix is to call STRIP_NOPS at the appropriate point.
> 
> I'd considered moving this transformation to match.pd, but it's a lot of
> complex logic that (I suspect) would be just as ugly in match.pd as it is
> in fold-const.c.
> 
> This patch has been tested on x86_64-pc-linux-gnu with a "make bootstrap"
> and "make -k check" with no new failures.
> Ok for mainline?
> 
> 2020-08-21  Roger Sayle  <ro...@nextmovesoftware.com>
> 
> gcc/ChangeLog
>       PR tree-optimization/21137
>       * gcc/fold-const.c (fold_binary_loc) [NE_EXPR/EQ_EXPR]: Call
>       STRIP_NOPS when checking whether to simplify ((x>>C1)&C2) != 0.
> 
> gcc/testsuite/ChangeLog
>       PR tree-optimization/21137
>       * gcc.dg/pr21137.c: New test.
OK
jeff
> 

Reply via email to