]> gcc.gnu.org Git - gcc.git/commit
ipa/109652 - ICE in modification phase of IPA SRA
authorRichard Biener <rguenther@suse.de>
Fri, 28 Apr 2023 06:40:07 +0000 (08:40 +0200)
committerRichard Biener <rguenther@suse.de>
Fri, 28 Apr 2023 11:35:22 +0000 (13:35 +0200)
commita94dcac59ee4c99b523ae593cb1c0ad43d4a110b
treed91a1169d3d009e4b782b4bef5e2850a734a10a6
parentcacf65d74463600815773255e8b82b4043432bd7
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.
gcc/ipa-param-manipulation.cc
gcc/testsuite/gcc.dg/torture/pr109652.c [new file with mode: 0644]
This page took 0.065856 seconds and 6 git commands to generate.