https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103973
Hongtao.liu <crazylht at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |crazylht at gmail dot com --- Comment #1 from Hongtao.liu <crazylht at gmail dot com> --- (In reply to Ivan from comment #0) > Hello, I may be missing something here but the generated code seems strange > and suboptimal. It looks like all 4 possible paths can use flags from a > single UCOMISD instruction, not calling it 3 times in worst case. There're also COMISD which is defferent from UCOMISD as ---cut from intel sdm--------- The UCOMISD instruction differs from the COMISD instruction in that it signals a SIMD floating-point invalid oper- ation exception (#I) only when a source operand is an SNaN. The COMISD instruction signals an invalid operation exception only if a source operand is either an SNaN or a QNaN. ----cut end--------------------- And they're different in GCC rtl representation, that's why CSE doesn't helps here.