From bd65fc87824ef69e69c6e79cd1323b43b77e0866 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Sat, 8 Mar 2014 09:27:23 +0000 Subject: [PATCH] re PR target/58271 (ICE in gcc for a MIPS target during compilation with -mpaired-single -ftree-vectorize) gcc/ PR target/58271 * config/mips/mips.c (mips_option_override): Promote -mpaired-single warning to an error. Disable TARGET_PAIRED_SINGLE and TARGET_MIPS3D if they can't be used. From-SVN: r208425 --- gcc/ChangeLog | 7 +++++++ gcc/config/mips/mips.c | 21 +++++++++++++++------ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 53c52fd32d5..5611246ed95 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2014-03-08 Richard Sandiford + + PR target/58271 + * config/mips/mips.c (mips_option_override): Promote -mpaired-single + warning to an error. Disable TARGET_PAIRED_SINGLE and TARGET_MIPS3D + if they can't be used. + 2014-03-07 Rainer Orth * configure.ac (HAVE_AS_IX86_TLSLDMPLT): Improve test for Solaris diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index b2f2ef8f6bc..143169bc150 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -17206,15 +17206,24 @@ mips_option_override (void) /* Make sure that when TARGET_PAIRED_SINGLE_FLOAT is true, TARGET_FLOAT64 and TARGET_HARD_FLOAT_ABI are both true. */ if (TARGET_PAIRED_SINGLE_FLOAT && !(TARGET_FLOAT64 && TARGET_HARD_FLOAT_ABI)) - error ("%qs must be used with %qs", - TARGET_MIPS3D ? "-mips3d" : "-mpaired-single", - TARGET_HARD_FLOAT_ABI ? "-mfp64" : "-mhard-float"); + { + error ("%qs must be used with %qs", + TARGET_MIPS3D ? "-mips3d" : "-mpaired-single", + TARGET_HARD_FLOAT_ABI ? "-mfp64" : "-mhard-float"); + target_flags &= ~MASK_PAIRED_SINGLE_FLOAT; + TARGET_MIPS3D = 0; + } - /* Make sure that the ISA supports TARGET_PAIRED_SINGLE_FLOAT when it is - enabled. */ + /* Make sure that -mpaired-single is only used on ISAs that support it. + We must disable it otherwise since it relies on other ISA properties + like ISA_HAS_8CC having their normal values. */ if (TARGET_PAIRED_SINGLE_FLOAT && !ISA_HAS_PAIRED_SINGLE) - warning (0, "the %qs architecture does not support paired-single" + { + error ("the %qs architecture does not support paired-single" " instructions", mips_arch_info->name); + target_flags &= ~MASK_PAIRED_SINGLE_FLOAT; + TARGET_MIPS3D = 0; + } if (mips_r10k_cache_barrier != R10K_CACHE_BARRIER_NONE && !TARGET_CACHE_BUILTIN)