diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-02-12 15:18:42 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-02-12 15:18:42 +0000 |
commit | d01410d39538ac2a74e8d75875246bda4dea6785 (patch) | |
tree | 4b5772fc52aec53078cc0fa032a5b63ccbeacc2d /gcc/alias.c | |
parent | 774a18762d79d4dee0bbb251871037f416cf208b (diff) | |
download | gcc-d01410d39538ac2a74e8d75875246bda4dea6785.tar.gz |
* alias.c (find_base_value, case ZERO_EXTEND, case SIGN_EXTEND):
Handle #ifdef POINTERS_EXTEND_UNSIGNED.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@49706 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/alias.c')
-rw-r--r-- | gcc/alias.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/gcc/alias.c b/gcc/alias.c index 95b16ca1ae7..ca533ee4d82 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -728,6 +728,7 @@ find_base_value (src) rtx src; { unsigned int regno; + switch (GET_CODE (src)) { case SYMBOL_REF: @@ -846,8 +847,6 @@ find_base_value (src) if (GET_MODE_SIZE (GET_MODE (src)) < GET_MODE_SIZE (Pmode)) break; /* Fall through. */ - case ZERO_EXTEND: - case SIGN_EXTEND: /* used for NT/Alpha pointers */ case HIGH: case PRE_INC: case PRE_DEC: @@ -857,6 +856,19 @@ find_base_value (src) case POST_MODIFY: return find_base_value (XEXP (src, 0)); + case ZERO_EXTEND: + case SIGN_EXTEND: /* used for NT/Alpha pointers */ + { + rtx temp = find_base_value (XEXP (src, 0)); + +#ifdef POINTERS_EXTEND_UNSIGNED + if (temp != 0 && CONSTANT_P (temp) && GET_MODE (temp) != Pmode) + temp = convert_memory_address (Pmode, temp); +#endif + + return temp; + } + default: break; } |