diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-04-07 16:04:38 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-04-07 16:04:38 -0400 |
commit | cceb347c21787a3e5495ca4eabfb17c24e7e4c87 (patch) | |
tree | eba1e6997771bc7f5b61db13e4e7e06f18ee2ab4 /gcc/cse.c | |
parent | 3091ecc1835b877d4c4fd486b109917fca8c46e5 (diff) | |
download | gcc-cceb347c21787a3e5495ca4eabfb17c24e7e4c87.zip gcc-cceb347c21787a3e5495ca4eabfb17c24e7e4c87.tar.gz gcc-cceb347c21787a3e5495ca4eabfb17c24e7e4c87.tar.bz2 |
(simplify_unary_operation): #ifdef POINTERS_EXTEND_UNSIGNED, handle
sign- or zero-extending addresses.
From-SVN: r9333
Diffstat (limited to 'gcc/cse.c')
-rw-r--r-- | gcc/cse.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -3308,7 +3308,23 @@ simplify_unary_operation (code, mode, op, op_mode) && GET_CODE (XEXP (XEXP (op, 0), 0)) == LABEL_REF && GET_CODE (XEXP (XEXP (op, 0), 1)) == LABEL_REF) return XEXP (op, 0); + +#ifdef POINTERS_EXTEND_UNSIGNED + if (! POINTERS_EXTEND_UNSIGNED + && mode == Pmode && GET_MODE (op) == ptr_mode + && CONSTANT_P (op)) + return convert_memory_address (Pmode, op); +#endif + break; + +#ifdef POINTERS_EXTEND_UNSIGNED + case ZERO_EXTEND: + if (POINTERS_EXTEND_UNSIGNED + && mode == Pmode && GET_MODE (op) == ptr_mode + && CONSTANT_P (op)) + return convert_memory_address (Pmode, op); break; +#endif } return 0; |