On Mon, Jun 10, 2019 at 01:23:28PM -0600, Martin Sebor wrote:
> +  else if (integer_zerop (TREE_OPERAND (node, 1))
> +        /* Dump the types of INTEGER_CSTs explicitly, for we can't
> +           infer them and MEM_ATTR caching will share MEM_REFs
> +           with differently-typed op0s.  */
> +        && TREE_CODE (TREE_OPERAND (node, 0)) != INTEGER_CST
> +        /* Released SSA_NAMES have no TREE_TYPE.  */
> +        && TREE_TYPE (TREE_OPERAND (node, 0)) != NULL_TREE
> +        /* Same pointer types, but ignoring POINTER_TYPE vs.
> +           REFERENCE_TYPE.  */
> +        && (TREE_TYPE (TREE_TYPE (TREE_OPERAND (node, 0)))
> +            == TREE_TYPE (TREE_TYPE (TREE_OPERAND (node, 1))))
> +        && (TYPE_MODE (TREE_TYPE (TREE_OPERAND (node, 0)))
> +            == TYPE_MODE (TREE_TYPE (TREE_OPERAND (node, 1))))
> +        && (TYPE_REF_CAN_ALIAS_ALL (TREE_TYPE (TREE_OPERAND (node, 0)))
> +            == TYPE_REF_CAN_ALIAS_ALL (TREE_TYPE (TREE_OPERAND (node, 1))))
> +        /* Same value types ignoring qualifiers.  */
> +        && (TYPE_MAIN_VARIANT (TREE_TYPE (node))
> +            == TYPE_MAIN_VARIANT
> +            (TREE_TYPE (TREE_TYPE (TREE_OPERAND (node, 1)))))

You should be using types_compatible_p rather than type equality, that is
all GIMPLE cares about.

        Jakub

Reply via email to