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

Reply via email to