aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2015-01-16 17:46:32 +0100
committerSegher Boessenkool <segher@gcc.gnu.org>2015-01-16 17:46:32 +0100
commit325df0eb7fe68e12e809d1ea9e499dfa807d3a77 (patch)
tree6e7815c58de3e4765abbbb27d9905c301f0de4e4
parent77688d70590330ad4b56d6fb690456d72406c6a2 (diff)
downloadgcc-325df0eb7fe68e12e809d1ea9e499dfa807d3a77.zip
gcc-325df0eb7fe68e12e809d1ea9e499dfa807d3a77.tar.gz
gcc-325df0eb7fe68e12e809d1ea9e499dfa807d3a77.tar.bz2
rs6000.c (rs6000_scalar_mode_supported_p): Disallow TImode for TARGET_32BIT.
* config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Disallow TImode for TARGET_32BIT. From-SVN: r219754
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/rs6000.c8
2 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 55e0315..b4a620b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
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,
TARGET_LIBGCC_SHIFT_COUNT_MODE, TARGET_UNWIND_WORD_MODE): Implement
as ...
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 3a46333..3926b07 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -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