https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118472
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target| |x86_64-*-*
CC| |tnfchris at gcc dot gnu.org
Status|UNCONFIRMED |NEW
Keywords| |needs-bisection,
| |needs-reduction
Ever confirmed|0 |1
Last reconfirmed| |2025-01-14
Target Milestone|--- |15.0
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed with -O3 -fopenmp-simd. The operand_equal_p code isn't good:
3745 /* BIT_INSERT_EXPR has an implict operand as the type
precision
3746 of op1. Need to check to make sure they are the same. */
3747 if (TREE_CODE (TREE_OPERAND (arg0, 1)) == INTEGER_CST
3748 && TREE_CODE (TREE_OPERAND (arg1, 1)) == INTEGER_CST
3749 && TYPE_PRECISION (type0) != TYPE_PRECISION (type1))
3750 return false;
but before the type/arg split we had
if (TREE_CODE (TREE_OPERAND (arg0, 1)) == INTEGER_CST
&& TREE_CODE (TREE_OPERAND (arg1, 1)) == INTEGER_CST
&& TYPE_PRECISION (TREE_TYPE (TREE_OPERAND (arg0, 1)))
!= TYPE_PRECISION (TREE_TYPE (TREE_OPERAND (arg1, 1))))
return false;
subsituting type0/type1 is for the type of operand 1 of arg0/arg1 was wrong.
Tamar?