[PATCH] middle-end: PR tree-optimization/21137: STRIP_NOPS avoids missed optimization.

Jeff Law law@redhat.com
Mon Aug 24 23:11:44 GMT 2020


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  <roger@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
> 



More information about the Gcc-patches mailing list