rs6000: Fix -mpower9-vector -mno-altivec ICE (PR87560)

Message ID 20200302220111.73172-1-wschmidt@linux.ibm.com
State New
Headers show
Series
  • rs6000: Fix -mpower9-vector -mno-altivec ICE (PR87560)
Related show

Commit Message

Bill Schmidt March 2, 2020, 10:01 p.m.
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  <wschmidt@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(+)

-- 
2.17.1

Comments

Segher Boessenkool March 3, 2020, 9:37 p.m. | #1
Hi!

On Mon, Mar 02, 2020 at 04:01:11PM -0600, Bill Schmidt wrote:
> 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.


(If this is your commit message: there are a lot of stray tabs in it).

> Bootstrapped and tested on powerpc64le-unknown-linux-gnu with no

> regressions.  Reported error is now:

> 

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


I'm not happy at all with this mechanism, it is yet another place we
put this same info down.  It should be possible to just handle this in
rs6000.opt .  But, this patch just adds an extra entry.

> 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.


Okay for both.  Thanks!

One thing: please add a PR tag to the changelog:

> 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.


(and indent the rest with tabs as well?)


Segher

Patch

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++)