Fix bugs in last changes
authorMichael Meissner <meissner@gcc.gnu.org>
Thu, 25 Jan 1996 20:33:51 +0000 (20:33 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Thu, 25 Jan 1996 20:33:51 +0000 (20:33 +0000)
From-SVN: r11103

gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.md

index 24cbc8123c4f8b4a8291371ffca735145e112093..86cdc255a3ece5ddc9c8cb9bcb2cb8d59900c876 100644 (file)
@@ -857,6 +857,11 @@ small_data_operand (op, mode)
 {
   rtx sym_ref, const_part;
 
+#ifdef TARGET_SDATA
+  if (!TARGET_SDATA)
+    return 0;
+#endif
+
   if (DEFAULT_ABI != ABI_V4)
     return 0;
 
@@ -2086,9 +2091,11 @@ print_operand (file, x, code)
             we have already done it, we can just use an offset of four.  */
          if (GET_CODE (XEXP (x, 0)) == PRE_INC
              || GET_CODE (XEXP (x, 0)) == PRE_DEC)
-           print_operand_address (file, plus_constant (XEXP (XEXP (x, 0), 0), 4));
+           output_address (plus_constant (XEXP (XEXP (x, 0), 0), 4));
          else
-           print_operand_address (file, plus_constant (XEXP (x, 0), 4));
+           output_address (plus_constant (XEXP (x, 0), 4));
+         if (DEFAULT_ABI == ABI_V4 && small_data_operand (x, GET_MODE (x)))
+           fprintf (file, "@sda21(%s)", reg_names[0]);
        }
       return;
                            
@@ -2296,9 +2303,11 @@ print_operand (file, x, code)
        {
          if (GET_CODE (XEXP (x, 0)) == PRE_INC
              || GET_CODE (XEXP (x, 0)) == PRE_DEC)
-           print_operand_address (file, plus_constant (XEXP (XEXP (x, 0), 0), 8));
+           output_address (plus_constant (XEXP (XEXP (x, 0), 0), 8));
          else
-           print_operand_address (file, plus_constant (XEXP (x, 0), 8));
+           output_address (plus_constant (XEXP (x, 0), 8));
+         if (DEFAULT_ABI == ABI_V4 && small_data_operand (x, GET_MODE (x)))
+           fprintf (file, "@sda21(%s)", reg_names[0]);
        }
       return;
                            
@@ -2342,9 +2351,11 @@ print_operand (file, x, code)
        {
          if (GET_CODE (XEXP (x, 0)) == PRE_INC
              || GET_CODE (XEXP (x, 0)) == PRE_DEC)
-           print_operand_address (file, plus_constant (XEXP (XEXP (x, 0), 0), 12));
+           output_address (plus_constant (XEXP (XEXP (x, 0), 0), 12));
          else
-           print_operand_address (file, plus_constant (XEXP (x, 0), 12));
+           output_address (plus_constant (XEXP (x, 0), 12));
+         if (DEFAULT_ABI == ABI_V4 && small_data_operand (x, GET_MODE (x)))
+           fprintf (file, "@sda21(%s)", reg_names[0]);
        }
       return;
                            
@@ -2362,10 +2373,10 @@ print_operand (file, x, code)
            fprintf (file, "%d(%d)", - GET_MODE_SIZE (GET_MODE (x)),
                     REGNO (XEXP (XEXP (x, 0), 0)));
          else
-           print_operand_address (file, XEXP (x, 0));
+           output_address (XEXP (x, 0));
        }
       else
-       print_operand_address (file, x);
+       output_addr_const (file, x);
       return;
 
     default:
index daaec5112b8759435903f50fa08ad2c9193d4d4f..0fed0116304949df287ac7a59e226b4e12c03f2f 100644 (file)
 
   /* Use default pattern for address of ELF small data */
   if (TARGET_ELF
-      && TARGET_SDATA
+      && DEFAULT_ABI == ABI_V4
       && (GET_CODE (operands[1]) == SYMBOL_REF || GET_CODE (operands[1]) == CONST)
       && !small_data_operand (operands[1], SImode))
     {