gcc.ld_unaligned-460

Optimization:
Allows a "ld" of an address that is world aligned. There is a penalty
performance, but it still beats a pair of "lwz".

Index: gcc-4.4-e500mc64-20090322/gcc/config/rs6000/rs6000.c
===================================================================
--- gcc-4.4-e500mc64-20090322/gcc/config/rs6000/rs6000.c	(revision 137727)
+++ gcc-4.4-e500mc64-20090322/gcc/config/rs6000/rs6000.c	(working copy)
@@ -10640,7 +10667,9 @@
       else if (bytes >= 8 && TARGET_POWERPC64
 	       /* 64-bit loads and stores require word-aligned
 		  displacements.  */
-	       && (align >= 64 || (!STRICT_ALIGNMENT && align >= 32)))
+	       && (align >= 64 || (!STRICT_ALIGNMENT && align >= 32)
+		   || rs6000_cpu == PROCESSOR_PPCE5500
+		   || rs6000_cpu == PROCESSOR_PPCE6500))
 	{
 	  clear_bytes = 8;
 	  mode = DImode;
@@ -10775,7 +10808,9 @@
       else if (bytes >= 8 && TARGET_POWERPC64
 	       /* 64-bit loads and stores require word-aligned
 		  displacements.  */
-	       && (align >= 64 || (!STRICT_ALIGNMENT && align >= 32)))
+	       && (align >= 64 || (!STRICT_ALIGNMENT && align >= 32)
+		   || rs6000_cpu == PROCESSOR_PPCE5500
+		   || rs6000_cpu == PROCESSOR_PPCE6500))
 	{
 	  move_bytes = 8;
 	  mode = DImode;
