OSDN Git Service

PR target/42416
authorjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 11 Jan 2010 20:29:40 +0000 (20:29 +0000)
committerjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 11 Jan 2010 20:29:40 +0000 (20:29 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@155816 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/rs6000/rs6000.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/warn-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/warn-2.c [new file with mode: 0644]

index 2c1e715..3c59ab1 100644 (file)
@@ -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>
        
index 48f43da..906392e 100644 (file)
@@ -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;
     }
 
index a910ad3..0093948 100644 (file)
@@ -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 (file)
index 0000000..c00aff0
--- /dev/null
@@ -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 (file)
index 0000000..0a9fa1e
--- /dev/null
@@ -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" } } */