https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93744
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|middle-end |tree-optimization --- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Unfortunately, code inspection finds other problematic patterns, e.g. since my r10-5256-g49647b7b25673273262fb630598027c6d841690f change: int w; int foo (int x, int y, int z) { int r = z - ((z - w++) & -(x < y)); return r; } int main () { w = 4; if (foo (5, 7, 12) != 4 || w != 5) __builtin_abort (); if (foo (7, 5, 12) != 12 || w != 6) __builtin_abort (); return 0; } or int w; int foo (int x, int y, int z) { int r = z + ((w++ - z) & -(x < y)); return r; } int main () { w = 4; if (foo (5, 7, 12) != 4 || w != 5) __builtin_abort (); if (foo (7, 5, 12) != 12 || w != 6) __builtin_abort (); return 0; }