diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 82ee9a4c79e0e62aab4c9f667aea7c9a8df33f86..e499e8c7226e05013ee3f087b6d2b83158497555 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2004-12-24  Alan Modra  <amodra@bigpond.net.au>
+
+	PR target/19142
+	* config/rs6000/rs6000.c (legitimate_lo_sum_address_p): Allow
+	DFmode for 32-bit again.
+
 2004-12-23  Roger Sayle  <roger@eyesopen.com>
 
 	* reload.c (regno_clobbered_p): Add a gcc_assert that regno
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index f0c44a658a0b208d012ec596930c93da7f5f33f0..f368b5f405e5e25dd72b48c3c212cef1810ffe7f 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -3325,7 +3325,8 @@ legitimate_lo_sum_address_p (enum machine_mode mode, rtx x, int strict)
       if (GET_MODE_NUNITS (mode) != 1)
 	return false;
       if (GET_MODE_BITSIZE (mode) > 64
-	  || (GET_MODE_BITSIZE (mode) > 32 && !TARGET_POWERPC64))
+	  || (GET_MODE_BITSIZE (mode) > 32 && !TARGET_POWERPC64
+	      && !(TARGET_HARD_FLOAT && TARGET_FPRS && mode == DFmode)))
 	return false;
 
       return CONSTANT_P (x);