https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115836
--- Comment #8 from Uroš Bizjak <ubizjak at gmail dot com> --- Some more explanation: Later in emit_store_flag_1 we have: if (icode != CODE_FOR_nothing) { do_pending_stack_adjust (); rtx tem = emit_cstore (target, icode, code, mode, compare_mode, unsignedp, op0, op1, normalizep, target_mode); if (tem) return tem; if (GET_MODE_CLASS (mode) == MODE_FLOAT) { tem = emit_cstore (target, icode, scode, mode, compare_mode, unsignedp, op1, op0, normalizep, target_mode); if (tem) return tem; } break; } and in our concrete case when the compiler enters emit_store_flag_1 with: op0=(subreg:SF (reg:SI 424 [ _676 ]) 0) op1=(reg:SF 1308) and code=GT, the compiler enters the above part with op0=(reg:SF 1308) op1=(subreg:SF (reg:SI 424 [ _676 ]) 0) and "code" and "scode" equal to LT.