OSDN Git Service

(simplify_unary_operation): #ifdef POINTERS_EXTEND_UNSIGNED, handle
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 7 Apr 1995 20:04:38 +0000 (20:04 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 7 Apr 1995 20:04:38 +0000 (20:04 +0000)
sign- or zero-extending addresses.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@9333 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cse.c

index b9da905..a4778af 100644 (file)
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -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;