rs6000.c (offsettable_addr_operand): Delete.
authorDavid Edelsohn <edelsohn@mhpcc.edu>
Tue, 19 Jan 1999 11:52:49 +0000 (11:52 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Tue, 19 Jan 1999 11:52:49 +0000 (06:52 -0500)
* rs6000.c (offsettable_addr_operand): Delete.
(offsettable_mem_operand): New function.
* rs6000.h (PREDICATE_CODES): Reflect function change.
(RS6000_SAVE_TOC): Represent address as MEM.
* win-nt.h (RS6000_SAVE_TOC): Same.
* rs6000.md (indirect calls): Change offsettable address parameter
to offsettable memory parameter.

From-SVN: r24762

gcc/ChangeLog
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.h
gcc/config/rs6000/rs6000.md
gcc/config/rs6000/win-nt.h

index d52632316256dbc021225222170bbc28278aec17..a8f8ecb355412634a6361d8518d528bf1c558752 100644 (file)
@@ -1,3 +1,13 @@
+Tue Jan 19 14:51:36 1999  David Edelsohn  <edelsohn@mhpcc.edu>
+
+       * rs6000.c (offsettable_addr_operand): Delete.
+       (offsettable_mem_operand): New function.
+       * rs6000.h (PREDICATE_CODES): Reflect function change.
+       (RS6000_SAVE_TOC): Represent address as MEM.
+       * win-nt.h (RS6000_SAVE_TOC): Same.
+       * rs6000.md (indirect calls): Change offsettable address parameter
+       to offsettable memory parameter.
+
 Tue Jan 19 10:24:53 1999  Mark Mitchell  <mark@markmitchell.com>
 
        * rtl.h (rtx_def): Update documentation.
index 806bbadda73431353aa89725f171df3a02e63ce9..2b95156c71f76fd7f03e38b13a2e54318926f7b5 100644 (file)
@@ -832,15 +832,16 @@ volatile_mem_operand (op, mode)
   return memory_address_p (mode, XEXP (op, 0));
 }
 
-/* Return 1 if the operand is an offsettable memory address.  */
+/* Return 1 if the operand is an offsettable memory operand.  */
 
 int
-offsettable_addr_operand (op, mode)
+offsettable_mem_operand (op, mode)
      register rtx op;
      enum machine_mode mode;
 {
-  return offsettable_address_p (reload_completed | reload_in_progress,
-                               mode, op);
+  return ((GET_CODE (op) == MEM)
+         && offsettable_address_p (reload_completed | reload_in_progress,
+                                   mode, XEXP (op, 0)));
 }
 
 /* Return 1 if the operand is either an easy FP constant (see above) or
index e6810f10686fd06d05c4b152ca3656b33aea4417..10e6687c8888f1582459d931723f3dae53f2aa68 100644 (file)
@@ -1249,8 +1249,10 @@ typedef struct rs6000_stack {
 /* Size of the fixed area on the stack */
 #define RS6000_SAVE_AREA (TARGET_32BIT ? 24 : 48)
 
-/* Address to save the TOC register */
-#define RS6000_SAVE_TOC plus_constant (stack_pointer_rtx, (TARGET_32BIT ? 20 : 40))
+/* MEM representing address to save the TOC register */
+#define RS6000_SAVE_TOC gen_rtx_MEM (Pmode, \
+                                    plus_constant (stack_pointer_rtx, \
+                                                   (TARGET_32BIT ? 20 : 40)))
 
 /* Offset & size for fpmem stack locations used for converting between
    float and integral types.  */
@@ -3204,7 +3206,7 @@ do {                                                                      \
   {"reg_or_mem_operand", {SUBREG, MEM, REG}},                  \
   {"lwa_operand", {SUBREG, MEM, REG}},                         \
   {"volatile_mem_operand", {MEM}},                             \
-  {"offsettable_addr_operand", {REG, SUBREG, PLUS}},           \
+  {"offsettable_mem_operand", {MEM}},                          \
   {"mem_or_easy_const_operand", {SUBREG, MEM, CONST_DOUBLE}},  \
   {"add_operand", {SUBREG, REG, CONST_INT}},                   \
   {"non_add_cint_operand", {CONST_INT}},                       \
index 200228aa8e828cb49c4cb3eecae332dae5d582df..47dcc113fe450d2b7dccaad53bc9d08b6a37534c 100644 (file)
   [(call (mem:SI (match_operand:SI 0 "register_operand" "b"))
         (match_operand 1 "const_int_operand" "n"))
    (use (match_operand 2 "const_int_operand" "n"))
-   (use (match_operand 3 "offsettable_addr_operand" "p"))
+   (use (match_operand 3 "offsettable_mem_operand" "o"))
    (use (match_operand 4 "register_operand" "r"))
    (clobber (match_operand 5 "register_operand" "=r"))
    (clobber (match_scratch:SI 6 "=&r"))
    (clobber (match_scratch:SI 7 "=l"))]
   "DEFAULT_ABI == ABI_AIX
    && (INTVAL (operands[2]) == CALL_NORMAL || (INTVAL (operands[2]) & CALL_LONG) != 0)"
-  "{st|stw} %4,%a3\;{l|lwz} %6,0(%0)\;{l|lwz} %4,4(%0)\;mt%7 %6\;{l|lwz} %5,8(%0)\;{brl|blrl}\;{l|lwz} %4,%a3"
+  "{st|stw} %4,%3\;{l|lwz} %6,0(%0)\;{l|lwz} %4,4(%0)\;mt%7 %6\;{l|lwz} %5,8(%0)\;{brl|blrl}\;{l|lwz} %4,%3"
   [(set_attr "type" "load")
    (set_attr "length" "28")])
 
   [(call (mem:SI (match_operand:DI 0 "register_operand" "b"))
         (match_operand 1 "const_int_operand" "n"))
    (use (match_operand 2 "const_int_operand" "n"))
-   (use (match_operand 3 "offsettable_addr_operand" "p"))
+   (use (match_operand 3 "offsettable_mem_operand" "o"))
    (use (match_operand 4 "register_operand" "r"))
    (clobber (match_operand 5 "register_operand" "=r"))
    (clobber (match_scratch:SI 6 "=&r"))
    (clobber (match_scratch:SI 7 "=l"))]
   "TARGET_64BIT && DEFAULT_ABI == ABI_AIX
    && (INTVAL (operands[2]) == CALL_NORMAL || (INTVAL (operands[2]) & CALL_LONG) != 0)"
-  "std %4,%a3\;ld %6,0(%0)\;ld %4,8(%0)\;mt%7 %6\;ld %5,16(%0)\;blrl\;ld %4,%a3"
+  "std %4,%3\;ld %6,0(%0)\;ld %4,8(%0)\;mt%7 %6\;ld %5,16(%0)\;blrl\;ld %4,%3"
   [(set_attr "type" "load")
    (set_attr "length" "28")])
 
        (call (mem:SI (match_operand:SI 1 "register_operand" "b"))
              (match_operand 2 "const_int_operand" "n")))
    (use (match_operand 3 "const_int_operand" "n"))
-   (use (match_operand 4 "offsettable_addr_operand" "p"))
+   (use (match_operand 4 "offsettable_mem_operand" "o"))
    (use (match_operand 5 "register_operand" "r"))
    (clobber (match_operand 6 "register_operand" "=r"))
    (clobber (match_scratch:SI 7 "=&r"))
    (clobber (match_scratch:SI 8 "=l"))]
   "DEFAULT_ABI == ABI_AIX
    && (INTVAL (operands[3]) == CALL_NORMAL || (INTVAL (operands[3]) & CALL_LONG) != 0)"
-  "{st|stw} %5,%a4\;{l|lwz} %7,0(%1)\;{l|lwz} %5,4(%1)\;mt%8 %7\;{l|lwz} %6,8(%1)\;{brl|blrl}\;{l|lwz} %5,%a4"
+  "{st|stw} %5,%4\;{l|lwz} %7,0(%1)\;{l|lwz} %5,4(%1)\;mt%8 %7\;{l|lwz} %6,8(%1)\;{brl|blrl}\;{l|lwz} %5,%4"
   [(set_attr "type" "load")
    (set_attr "length" "28")])
 
        (call (mem:SI (match_operand:DI 1 "register_operand" "b"))
              (match_operand 2 "const_int_operand" "n")))
    (use (match_operand 3 "const_int_operand" "n"))
-   (use (match_operand 4 "offsettable_addr_operand" "p"))
+   (use (match_operand 4 "offsettable_mem_operand" "o"))
    (use (match_operand 5 "register_operand" "r"))
    (clobber (match_operand 6 "register_operand" "=r"))
    (clobber (match_scratch:SI 7 "=&r"))
    (clobber (match_scratch:SI 8 "=l"))]
   "TARGET_64BIT && DEFAULT_ABI == ABI_AIX
    && (INTVAL (operands[3]) == CALL_NORMAL || (INTVAL (operands[3]) & CALL_LONG) != 0)"
-  "std %5,%a4\;ld %7,0(%1)\;ld %5,8(%1)\;mt%8 %7\;ld %6,16(%1)\;blrl\;ld %5,%a4"
+  "std %5,%4\;ld %7,0(%1)\;ld %5,8(%1)\;mt%8 %7\;ld %6,16(%1)\;blrl\;ld %5,%4"
   [(set_attr "type" "load")
    (set_attr "length" "28")])
 
   [(call (mem:SI (match_operand:SI 0 "register_operand" "b"))
         (match_operand 1 "const_int_operand" "n"))
    (use (match_operand 2 "const_int_operand" "n"))
-   (use (match_operand 3 "offsettable_addr_operand" "p"))
+   (use (match_operand 3 "offsettable_mem_operand" "o"))
    (use (match_operand 4 "register_operand" "r"))
    (clobber (match_scratch:SI 5 "=&r"))
    (clobber (match_scratch:SI 6 "=l"))]
        (call (mem:SI (match_operand:SI 1 "register_operand" "b"))
              (match_operand 2 "const_int_operand" "n")))
    (use (match_operand 3 "const_int_operand" "n"))
-   (use (match_operand 4 "offsettable_addr_operand" "p"))
+   (use (match_operand 4 "offsettable_mem_operand" "o"))
    (use (match_operand 5 "register_operand" "r"))
    (clobber (match_scratch:SI 6 "=&r"))
    (clobber (match_scratch:SI 7 "=l"))]
index 742a5e8c5fc67051b5b46a4369b31b6fcdca52ad..796e487b0debd22fbec8ec97aee6747bda902869 100644 (file)
@@ -119,9 +119,11 @@ Boston, MA 02111-1307, USA.  */
 #undef TARGET_DEFAULT 
 #define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS | MASK_NO_FP_IN_TOC | MASK_NO_SUM_IN_TOC)
 
-/* Address to save the TOC register */
+/* MEM representing address to save the TOC register */
 #undef RS6000_SAVE_TOC
-#define RS6000_SAVE_TOC plus_constant (virtual_incoming_args_rtx, -RS6000_SAVE_AREA - 8)
+#define RS6000_SAVE_TOC gen_rtx_MEM (Pmode, \
+                                    plus_constant (virtual_incoming_args_rtx,
+                                                   -RS6000_SAVE_AREA - 8))
 
 /* Windows NT specifies that r13 is reserved to the OS, so it is not available
    to the normal user.  */