2002-01-10 David Edelsohn <edelsohn@gnu.org>
* alias.c (find_base_value): Add cases for HIGH, PRE_INC, PRE_DEC,
POST_INC, POST_DEC, PRE_MODIFY, and POST_MODIFY.
(find_base_term): Add cases for TRUNCATE, PRE_MODIFY, and POST_MODIFY.
Recurse for any operand of AND as long as constant is non-zero.
From-SVN: r48741
+2002-01-10 David Edelsohn <edelsohn@gnu.org>
+
+ * alias.c (find_base_value): Add cases for HIGH, PRE_INC, PRE_DEC,
+ POST_INC, POST_DEC, PRE_MODIFY, and POST_MODIFY.
+ (find_base_term): Add cases for TRUNCATE, PRE_MODIFY, and POST_MODIFY.
+ Recurse for any operand of AND as long as constant is non-zero.
+
2002-01-10 Kazu Hirata <kazu@hxi.com>
* config/h8300/h8300.md: Remove constraints from expanders.
case ZERO_EXTEND:
case SIGN_EXTEND: /* used for NT/Alpha pointers */
case HIGH:
+ case PRE_INC:
+ case PRE_DEC:
+ case POST_INC:
+ case POST_DEC:
+ case PRE_MODIFY:
+ case POST_MODIFY:
return find_base_value (XEXP (src, 0));
default:
case REG:
return REG_BASE_VALUE (x);
+ case TRUNCATE:
+ if (GET_MODE_SIZE (GET_MODE (x)) < GET_MODE_SIZE (Pmode))
+ return 0;
+ /* Fall through. */
case ZERO_EXTEND:
case SIGN_EXTEND: /* Used for Alpha/NT pointers */
case HIGH:
case PRE_DEC:
case POST_INC:
case POST_DEC:
+ case PRE_MODIFY:
+ case POST_MODIFY:
return find_base_term (XEXP (x, 0));
case VALUE:
}
case AND:
- if (GET_CODE (XEXP (x, 0)) == REG && GET_CODE (XEXP (x, 1)) == CONST_INT)
- return REG_BASE_VALUE (XEXP (x, 0));
+ if (GET_CODE (XEXP (x, 1)) == CONST_INT && INTVAL (XEXP (x, 1)) != 0)
+ return find_base_term (XEXP (x, 0));
return 0;
case SYMBOL_REF: