rs6000: Fix -mpower9-vector -mno-altivec ICE (PR87560)
authorBill Schmidt <wschmidt@linux.ibm.com>
Wed, 4 Mar 2020 13:30:29 +0000 (07:30 -0600)
committerBill Schmidt <wschmidt@linux.ibm.com>
Wed, 4 Mar 2020 13:30:29 +0000 (07:30 -0600)
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'

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

PR target/87560
* rs6000-cpus.def (OTHER_ALTIVEC_MASKS): New #define.
* rs6000.c (rs6000_disable_incompatible_switches): Add table entry
for OPTION_MASK_ALTIVEC.

gcc/ChangeLog
gcc/config/rs6000/rs6000-cpus.def
gcc/config/rs6000/rs6000.c

index b32bd446a4578bb60f83c9b586ff6cf1fa405248..b7c9d86c90c1a7c43470d34537f575b0c8c4e091 100644 (file)
@@ -1,3 +1,10 @@
+2020-03-04  Bill Schmidt  <wschmidt@linux.ibm.com>
+
+       PR target/87560
+       * rs6000-cpus.def (OTHER_ALTIVEC_MASKS): New #define.
+       * rs6000.c (rs6000_disable_incompatible_switches): Add table entry
+       for OPTION_MASK_ALTIVEC.
+
 2020-03-04  Jakub Jelinek  <jakub@redhat.com>
 
        PR debug/93888
index 193d77eb954b6a83949a7b2829341de2e6b12e6a..ff1db6019de63edc99afb6b510a44ddc57485e6d 100644 (file)
                                 | 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.  */
index 9910b27ed24fe862f9da4ec08b1a9c2e1112e84f..ecbf7ae0c59a32a399b55a9f6c00570902dc0361 100644 (file)
@@ -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++)