]> git.ipfire.org Git - thirdparty/gcc.git/commit
wrong GIMPLE from (bit_field_ref CTOR ..) simplification
authorRichard Biener <rguenther@suse.de>
Mon, 24 Apr 2023 11:20:25 +0000 (13:20 +0200)
committerRichard Biener <rguenther@suse.de>
Thu, 27 Apr 2023 11:16:48 +0000 (13:16 +0200)
commita82c6ab0aade4124e1903dda6f6f85c4c317fcec
tree4e355d53391fce8898093f58b941f806d004a632
parent0403d2957929fa12bbd379e3839a8d0c2160576f
wrong GIMPLE from (bit_field_ref CTOR ..) simplification

When we simplify a BIT_FIELD_REF of a CTOR like { _1, _2, _3, _4 }
and attempt to produce (view converted) { _1, _2 } for a selected
subset we fail to realize this cannot be done from match.pd since
we have no way to write the resulting CTOR "operation" and the
built CTOR { _1, _2 } isn't a GIMPLE value.

This kind of simplifications have to be done in forwprop (or would
need a match.pd syntax extension) where we can split out the CTOR
to a separate stmt.

The following disables this particular simplification when we are
simplifying GIMPLE.  With enhanced IL checking this otherwise
causes ICEs in the testsuite from vectorized code.

* match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Do not
create a CTOR operand in the result when simplifying GIMPLE.
gcc/match.pd