diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f09fcd74a80d2af3d2ccb069248c4c143ffdb2cb..fe15e311b536e24f4b3ce666920565b411e8f8c3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2006-12-07  Trevor Smigiel  <trevor_smigiel@playstation.sony.com>
+
+	* config/spu/spu.c (array_to_constant): Correct the order of arguments
+	to the calls of hwint_to_const_double.
+
 2006-12-07  Nick Clifton  <nickc@redhat.com>
 
 	* config/elfos.h (TARGET_ASM_RECORD_GCC_SWITCHES): Set to
diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c
index 4aa8e38be9293746773dfddfcfc5307b0bee25d9..03843fd6b3dc39d056837af90f52c02556527771 100644
--- a/gcc/config/spu/spu.c
+++ b/gcc/config/spu/spu.c
@@ -3603,14 +3603,14 @@ array_to_constant (enum machine_mode mode, unsigned char arr[16])
     {
       val = (arr[0] << 24) | (arr[1] << 16) | (arr[2] << 8) | arr[3];
       val = trunc_int_for_mode (val, SImode);
-      return hwint_to_const_double (val, SFmode);
+      return hwint_to_const_double (SFmode, val);
     }
   if (mode == DFmode)
     {
       val = (arr[0] << 24) | (arr[1] << 16) | (arr[2] << 8) | arr[3];
       val <<= 32;
       val |= (arr[4] << 24) | (arr[5] << 16) | (arr[6] << 8) | arr[7];
-      return hwint_to_const_double (val, DFmode);
+      return hwint_to_const_double (DFmode, val);
     }
 
   if (!VECTOR_MODE_P (mode))