Message ID | 20200302220111.73172-1-wschmidt@linux.ibm.com |
---|---|
State | New |
Headers | show |
Series | rs6000: Fix -mpower9-vector -mno-altivec ICE (PR87560) | expand |
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
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++)