https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65922
Peter Bergner <bergner at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Known to work| |4.7.0 Known to fail| |4.8.0, 4.9.0, 5.1.0, 6.0 --- Comment #1 from Peter Bergner <bergner at gcc dot gnu.org> --- The last tree dump looks ok to me: foo (unsigned char * ptr, unsigned int cond) { unsigned char _5; unsigned char _6; unsigned char _8; unsigned char _9; <bb 2>: switch (cond_2(D)) <default: <L7>, case 0: <L9>, case 1 ... 4: <L1>, case 5: <L6>, case 6: <L1>> <L1>: _5 = *ptr_4(D); _6 = _5 + 1; *ptr_4(D) = _6; goto <bb 6> (<L9>); <L6>: _8 = *ptr_4(D); _9 = _8 + 2; *ptr_4(D) = _9; goto <bb 6> (<L9>); <L7>: __builtin_unreachable (); <L9>: return; } But the first rtl code after expand looks suspect to me.