https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118472
Tamar Christina <tnfchris at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |tnfchris at gcc dot
gnu.org
--- Comment #2 from Tamar Christina <tnfchris at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #1)
> 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?
Yeah that's an overzealous replace... Will fix.
Thanks