https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70941
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- The negation issue is a latent fold-const.c issue which when folding (19 - (unsigned char) b) + (unsigned char) ((signed char) (d != 0 && c != 0) ^ -128(OVF)) runs into the associate: case. We partially fixed this for an ICE with 2016-02-01 Bin Cheng <bin.ch...@arm.com> PR tree-optimization/67921 * fold-const.c (split_tree): New parameters. Convert pointer type variable part to proper type before negating. (fold_binary_loc): Pass new arguments to split_tree. but appearantly the "real" fix never materialized.