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