https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126347
--- Comment #4 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Philipp Tomsich <[email protected]>: https://gcc.gnu.org/g:dcb8c8d3e7333b09081f81c29358e03e73d59a12 commit r17-2669-gdcb8c8d3e7333b09081f81c29358e03e73d59a12 Author: Philipp Tomsich <[email protected]> Date: Tue Jul 21 21:19:53 2026 +0200 ifcvt: do not emit a store flag for an irreversible condition [PR126347] noce_emit_store_flag feeds the possibly-reversed comparison code to a store-flag insn, and to emit_store_flag, without checking that the reversal succeeded. reversed_comparison_code returns UNKNOWN for UNLT/UNLE/UNGT/UNGE, and for a MODE_CC comparison it cannot trace back to its COMPARE -- common for a floating-point condition on targets that compare into a condition-code register. emit_store_flag then reaches its floating-point path and calls swap_condition (UNKNOWN), which aborts. This was latent until r17-2519-ga33f26607eb4f3 made noce_try_shifted_store_flag the first caller to reach noce_emit_store_flag with REVERSEP set for such a condition. Bail out early when the reversal failed. Bootstrapped and regression tested on aarch64-unknown-linux-gnu with no regressions. PR rtl-optimization/126347 gcc/ * ifcvt.cc (noce_emit_store_flag): Return NULL_RTX when the comparison code is UNKNOWN.
