https://gcc.gnu.org/bugzilla/show_bug.cgi?id=21137
--- Comment #12 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Roger Sayle <sa...@gcc.gnu.org>: https://gcc.gnu.org/g:a0b4e42af26a85da2698e573ac8e32fa0a5709d6 commit r11-2836-ga0b4e42af26a85da2698e573ac8e32fa0a5709d6 Author: Roger Sayle <ro...@nextmovesoftware.com> Date: Tue Aug 25 10:50:48 2020 +0100 middle-end: PR tree-optimization/21137: STRIP_NOPS avoids missed optimization. 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. 2020-08-25 Roger Sayle <ro...@nextmovesoftware.com> gcc/ChangeLog PR tree-optimization/21137 * 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.