https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68865
Segher Boessenkool <segher at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2015-12-11 Ever confirmed|0 |1 --- Comment #1 from Segher Boessenkool <segher at gcc dot gnu.org> --- It used to ICE before this patch. It has for a long time. This isn't the patch you are looking for. I'll take a look though, sure. Simplified testcase: === static void __attribute__ ((noinline)) testit (void) { static volatile _Atomic unsigned int a = (unsigned int) (-70); if ((a /= (-10)) != (unsigned int) ((unsigned int) (-70) / (-10))) abort (); } int main (void) { testit (); exit (0); } === (compile with -O2 -latomic).