https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39121
joe.carnuccio at qlogic dot com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |joe.carnuccio at qlogic dot com --- Comment #4 from joe.carnuccio at qlogic dot com --- I have found the following: This works: c ^= d ^= c ^= d (where c and d are not pointers) This fails: *a ^= *b ^= *a ^= *b (where a and b are pointers) When compiling using -Os then the failed case now works.