diff options
author | Richard Biener <rguenther@suse.de> | 2023-04-28 08:40:07 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2023-04-28 13:35:22 +0200 |
commit | a94dcac59ee4c99b523ae593cb1c0ad43d4a110b (patch) | |
tree | d91a1169d3d009e4b782b4bef5e2850a734a10a6 /gcc/fold-const.h | |
parent | cacf65d74463600815773255e8b82b4043432bd7 (diff) | |
download | gcc-a94dcac59ee4c99b523ae593cb1c0ad43d4a110b.zip gcc-a94dcac59ee4c99b523ae593cb1c0ad43d4a110b.tar.gz gcc-a94dcac59ee4c99b523ae593cb1c0ad43d4a110b.tar.bz2 |
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.
Diffstat (limited to 'gcc/fold-const.h')
0 files changed, 0 insertions, 0 deletions