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?