aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJanis Johnson <janis187@us.ibm.com>2010-01-11 20:29:40 +0000
committerJanis Johnson <janis@gcc.gnu.org>2010-01-11 20:29:40 +0000
commit3767f512426fb5ec2c3459a83e220c3343125fc3 (patch)
tree921eb5ca87c29b685960fc063304f50defe91b99
parenta6ffbb9c263facd86def845b330c33538d7663fa (diff)
downloadgcc-3767f512426fb5ec2c3459a83e220c3343125fc3.zip
gcc-3767f512426fb5ec2c3459a83e220c3343125fc3.tar.gz
gcc-3767f512426fb5ec2c3459a83e220c3343125fc3.tar.bz2
re PR target/42416 (ICE in rs6000_bulitin_vec_perm for 177.mesa with -mvsx)
PR target/42416 * config/rs6000/rs6000.c (rs6000_override_options): On targets that support VSX, warn for -mno-altivec if vsx is not disabled, and disable vsx. * gcc.target/powerpc/warn-1.c: New test. * gcc.target/powerpc/warn-2.c: New test. From-SVN: r155816
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/rs6000/rs6000.c13
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.target/powerpc/warn-1.c18
-rw-r--r--gcc/testsuite/gcc.target/powerpc/warn-2.c18
5 files changed, 58 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2c1e715..3c59ab1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2010-01-11 Janis Johnson <janis187@us.ibm.com>
+
+ PR target/42416
+ * config/rs6000/rs6000.c (rs6000_override_options): On targets
+ that support VSX, warn for -mno-altivec if vsx is not disabled,
+ and disable vsx.
+
2010-01-11 Joseph Myers <joseph@codesourcery.com>
Shujing Zhao <pearly.zhao@oracle.com>
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 48f43da..906392e 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -2407,8 +2407,7 @@ rs6000_override_options (const char *default_cpu)
}
}
- /* Add some warnings for VSX. Enable -maltivec unless the user explicitly
- used -mno-altivec */
+ /* Add some warnings for VSX. */
if (TARGET_VSX)
{
const char *msg = NULL;
@@ -2429,14 +2428,20 @@ rs6000_override_options (const char *default_cpu)
msg = N_("-mvsx used with little endian code");
else if (TARGET_AVOID_XFORM > 0)
msg = N_("-mvsx needs indexed addressing");
+ else if (!TARGET_ALTIVEC && (target_flags_explicit & MASK_ALTIVEC))
+ {
+ if (target_flags_explicit & MASK_VSX)
+ msg = N_("-mvsx and -mno-altivec are incompatible");
+ else
+ msg = N_("-mno-altivec disables vsx");
+ }
if (msg)
{
warning (0, msg);
target_flags &= ~ MASK_VSX;
}
- else if (TARGET_VSX && !TARGET_ALTIVEC
- && (target_flags_explicit & MASK_ALTIVEC) == 0)
+ else if (TARGET_VSX && !TARGET_ALTIVEC)
target_flags |= MASK_ALTIVEC;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a910ad3..0093948 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2010-01-11 Janis Johnson <janis187@us.ibm.com>
+
+ PR target/42416
+ * gcc.target/powerpc/warn-1.c: New test.
+ * gcc.target/powerpc/warn-2.c: New test.
+
2010-01-11 Uros Bizjak <ubizjak@gmail.com>
* gcc.target/x86_64/abi/avx/asm-support.S (snapshot_ret): Preserve
diff --git a/gcc/testsuite/gcc.target/powerpc/warn-1.c b/gcc/testsuite/gcc.target/powerpc/warn-1.c
new file mode 100644
index 0000000..c00aff0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/warn-1.c
@@ -0,0 +1,18 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-options "-O -mvsx -mno-altivec" } */
+
+/* { dg-warning "-mvsx and -mno-altivec are incompatible" "" { target *-*-* } 1 } */
+
+double
+foo (double *x, double *y)
+{
+ double z[2];
+ int i;
+
+ for (i = 0; i < 2; i++)
+ z[i] = x[i] + y[i];
+ return z[0] * z[1];
+}
+
+/* { dg-final { scan-assembler-not "xsadddp" } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/warn-2.c b/gcc/testsuite/gcc.target/powerpc/warn-2.c
new file mode 100644
index 0000000..0a9fa1e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/warn-2.c
@@ -0,0 +1,18 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-options "-O -mcpu=power7 -mno-altivec" } */
+
+/* { dg-warning "-mno-altivec disables vsx" "" { target *-*-* } 1 } */
+
+double
+foo (double *x, double *y)
+{
+ double z[2];
+ int i;
+
+ for (i = 0; i < 2; i++)
+ z[i] = x[i] + y[i];
+ return z[0] * z[1];
+}
+
+/* { dg-final { scan-assembler-not "xsadddp" } } */