diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5379265a7a4cf6e11be66394d06852850c149d4a..5e0d9137a939503b2af10a82e625ec55a47a55e8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Tue Jul 10 07:27:53 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+	* config/rs6000/rs6000.c (print_operand, case 'L', 'Y', 'Z'): Use
+	adjust_address_nv instead of plus_constant.
+
 2001-07-10  Neil Booth  <neil@daikokuya.demon.co.uk>
 
 	* Makefile.in (toplev.o, sdbout.o, dbxout.o, dwarfout.o,
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 21c9f1810e2bd282d62298829368f2e1d472703a..a01bf6f7501354e54575e57279f63de586dbd0e6 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -4004,7 +4004,9 @@ print_operand (file, x, code)
 	    output_address (plus_constant (XEXP (XEXP (x, 0), 0),
 					   UNITS_PER_WORD));
 	  else
-	    output_address (plus_constant (XEXP (x, 0), UNITS_PER_WORD));
+	    output_address (XEXP (adjust_address_nv (x, SImode,
+						     UNITS_PER_WORD),
+				  0));
 
 	  if (small_data_operand (x, GET_MODE (x)))
 	    fprintf (file, "@%s(%s)", SMALL_DATA_RELOC,
@@ -4383,7 +4385,7 @@ print_operand (file, x, code)
 	      || GET_CODE (XEXP (x, 0)) == PRE_DEC)
 	    output_address (plus_constant (XEXP (XEXP (x, 0), 0), 8));
 	  else
-	    output_address (plus_constant (XEXP (x, 0), 8));
+	    output_address (XEXP (adjust_address_nv (x, SImode, 8), 0));
 	  if (small_data_operand (x, GET_MODE (x)))
 	    fprintf (file, "@%s(%s)", SMALL_DATA_RELOC,
 		     reg_names[SMALL_DATA_REG]);
@@ -4434,7 +4436,7 @@ print_operand (file, x, code)
 	      || GET_CODE (XEXP (x, 0)) == PRE_DEC)
 	    output_address (plus_constant (XEXP (XEXP (x, 0), 0), 12));
 	  else
-	    output_address (plus_constant (XEXP (x, 0), 12));
+	    output_address (XEXP (adjust_address_nv (x, SImode, 12), 0));
 	  if (small_data_operand (x, GET_MODE (x)))
 	    fprintf (file, "@%s(%s)", SMALL_DATA_RELOC,
 		     reg_names[SMALL_DATA_REG]);