PR87560 reports an ICE when a test case is compiled with -mpower9-vector
and -mno-altivec.  This patch terminates compilation with an error when
this combination (and other unreasonable ones) are requested.

Bootstrapped and tested on powerpc64le-unknown-linux-gnu with no
regressions.  Reported error is now:

f951: Error: '-mno-altivec' turns off '-mpower9-vector'

Is this okay for master, and for backport to releases/gcc-9 after the
9.3 release?  There's no urgency in getting this in 9.3.

Thanks,
Bill

2020-03-02  Bill Schmidt  <wschm...@linux.ibm.com>

        * rs6000-cpus.def (OTHER_ALTIVEC_MASKS): New #define.
        * rs6000.c (rs6000_disable_incompatible_switches): Add table entry
        for OPTION_MASK_ALTIVEC.
---
 gcc/config/rs6000/rs6000-cpus.def | 4 ++++
 gcc/config/rs6000/rs6000.c        | 1 +
 2 files changed, 5 insertions(+)

diff --git a/gcc/config/rs6000/rs6000-cpus.def 
b/gcc/config/rs6000/rs6000-cpus.def
index 193d77eb954..ff1db6019de 100644
--- a/gcc/config/rs6000/rs6000-cpus.def
+++ b/gcc/config/rs6000/rs6000-cpus.def
@@ -101,6 +101,10 @@
                                 | OPTION_MASK_FLOAT128_KEYWORD         \
                                 | OPTION_MASK_P8_VECTOR)
 
+/* Flags that need to be turned off if -mno-altivec.  */
+#define OTHER_ALTIVEC_MASKS    (OTHER_VSX_VECTOR_MASKS                 \
+                                | OPTION_MASK_VSX)
+
 #define POWERPC_7400_MASK      (OPTION_MASK_PPC_GFXOPT | OPTION_MASK_ALTIVEC)
 
 /* Deal with ports that do not have -mstrict-align.  */
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 9910b27ed24..ecbf7ae0c59 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -23632,6 +23632,7 @@ rs6000_disable_incompatible_switches (void)
     { OPTION_MASK_P9_VECTOR,   OTHER_P9_VECTOR_MASKS,  "power9-vector" },
     { OPTION_MASK_P8_VECTOR,   OTHER_P8_VECTOR_MASKS,  "power8-vector" },
     { OPTION_MASK_VSX,         OTHER_VSX_VECTOR_MASKS, "vsx"           },
+    { OPTION_MASK_ALTIVEC,     OTHER_ALTIVEC_MASKS,    "altivec"       },
   };
 
   for (i = 0; i < ARRAY_SIZE (flags); i++)
-- 
2.17.1

Reply via email to