https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109652
--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Richard Biener <rgue...@gcc.gnu.org>: https://gcc.gnu.org/g:a94dcac59ee4c99b523ae593cb1c0ad43d4a110b commit r14-326-ga94dcac59ee4c99b523ae593cb1c0ad43d4a110b Author: Richard Biener <rguent...@suse.de> Date: Fri Apr 28 08:40:07 2023 +0200 ipa/109652 - ICE in modification phase of IPA SRA There's another questionable IL transform by IPA SRA, replacing foo (p_1(D)->x) with foo (VIEW_CONVERT <union type> (ISRA.PARM.1)) where ISRA.PARM.1 is a register. Conversion of a register to an aggregate type is questionable but not entirely unreasonable and not within the set of IL I am rejecting when fixing PR109644. The following lets this slip through in IPA SRA transform by restricting re-gimplification to the case of register type results. To not break the previous testcase again we need to optimize the BIT_FIELD_REF <VIEW_CONVERT <...>, ...> case to elide the conversion. PR ipa/109652 * ipa-param-manipulation.cc (ipa_param_body_adjustments::modify_expression): Allow conversion of a register to a non-register type. Elide conversions inside BIT_FIELD_REFs. * gcc.dg/torture/pr109652.c: New testcase.