https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113688
--- Comment #24 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- > Would it be possible to backport the VIEW_CONVERT_EXPR change? The VIEW_CONVERT_EXPR is preserved on the mainline thanks to the fix for PR tree-optimization/116412: commit c7b76a076cb2c6ded7ae208464019b04cb0531a2 Author: Andrew Pinski <quic_apin...@quicinc.com> Date: Mon Aug 19 08:06:36 2024 -0700 match: Reject non-ssa name/min invariants in gimple_extract [PR116412] After the conversion for phiopt's conditional operand to use maybe_push_res_to_seq, it was found that gimple_extract will extract out from REALPART_EXPR/IMAGPART_EXPR/VCE and BIT_FIELD_REF, a memory load. But that extraction was not needed as memory loads are not simplified in match and simplify. So gimple_extract should return false in those cases. gcc/ChangeLog: * gimple-match-exports.cc (gimple_extract): Return false if op0 was not a SSA name nor a min invariant for REALPART_EXPR/IMAGPART_EXPR/VCE and BIT_FIELD_REF. (which incidentally doesn't mention VIEW_CONVERT_EXPR). But IMO this only papers over the issue, which is the questionable hole drilled into the type system.