https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82153
--- Comment #2 from Arjan van de Ven <arjan at linux dot intel.com> --- When a conversion is inexact, a truncated result is returned. If a converted result is larger than the maximum signed doubleword integer, the floating-point invalid exception is raised, and if this exception is masked, the indefinite integer value (80000000H) is returned. no exception on truncation... 8: 66 0f 3a 0b c0 0b roundsd $0xb,%xmm0,%xmm0 e: f2 0f 2c c0 cvttsd2si %xmm0,%eax is what is generated for tunc() (same code otherwise as above)