aboutsummaryrefslogtreecommitdiff
path: root/gcc/fold-const.cc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2023-04-28 08:40:07 +0200
committerRichard Biener <rguenther@suse.de>2023-04-28 13:35:22 +0200
commita94dcac59ee4c99b523ae593cb1c0ad43d4a110b (patch)
treed91a1169d3d009e4b782b4bef5e2850a734a10a6 /gcc/fold-const.cc
parentcacf65d74463600815773255e8b82b4043432bd7 (diff)
downloadgcc-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.cc')
0 files changed, 0 insertions, 0 deletions