rs6000.c (rs6000_scalar_mode_supported_p): Disallow TImode for TARGET_32BIT.
authorSegher Boessenkool <segher@kernel.crashing.org>
Fri, 16 Jan 2015 16:46:32 +0000 (17:46 +0100)
committerSegher Boessenkool <segher@gcc.gnu.org>
Fri, 16 Jan 2015 16:46:32 +0000 (17:46 +0100)
* config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Disallow
TImode for TARGET_32BIT.

From-SVN: r219754

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 55e0315f2dd463a1cd71ae076a6d2a09d58d097b..b4a620bfae42a5dd2abff9f6eeab34d01f3608b1 100644 (file)
@@ -1,3 +1,8 @@
+2015-01-16  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Disallow
+       TImode for TARGET_32BIT.
+
 2015-01-16  Segher Boessenkool  <segher@kernel.crashing.org>
 
        * config/rs6000/rs6000.c (TARGET_LIBGCC_CMP_RETURN_MODE,
index 3a4633303702b000ca465b9acddd7107fcfd211c..3926b079523d648f1f90c4aee9c03af528702d49 100644 (file)
@@ -31967,6 +31967,14 @@ rs6000_eh_return_filter_mode (void)
 static bool
 rs6000_scalar_mode_supported_p (machine_mode mode)
 {
+  /* -m32 does not support TImode.  This is the default, from
+     default_scalar_mode_supported_p.  For -m32 -mpowerpc64 we want the
+     same ABI as for -m32.  But default_scalar_mode_supported_p allows
+     integer modes of precision 2 * BITS_PER_WORD, which matches TImode
+     for -mpowerpc64.  */
+  if (TARGET_32BIT && mode == TImode)
+    return false;
+
   if (DECIMAL_FLOAT_MODE_P (mode))
     return default_decimal_float_supported_p ();
   else