https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104937
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jsm28 at gcc dot gnu.org --- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Doesn't seem to be sanitizer specific. Just change the testcase to: _Complex unsigned foo (_Complex unsigned x) { _Complex unsigned y = x; return y / x; } int main () { _Complex unsigned x = foo (6 + 43 * 1i); if (x != 1) __builtin_abort (); return 0; } so that it doesn't get folded to 1 + 0i in the FE and at -O0 you'll get abort as well. I think division just doesn't work at all for _Complex unsigned, seems to work for _Complex signed. Don't we have some PR covering it?