aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meissner <meissner@linux.ibm.com>2019-06-11 17:36:58 +0000
committerMichael Meissner <meissner@gcc.gnu.org>2019-06-11 17:36:58 +0000
commit85775141e3d551b880baefc7e6f8151737fc497c (patch)
tree0280dd26feffa2da07cdffcfabf115a9b835038f
parentce9c4ec3c5e70023b27e49c2fb45eafaddec9a14 (diff)
downloadgcc-85775141e3d551b880baefc7e6f8151737fc497c.zip
gcc-85775141e3d551b880baefc7e6f8151737fc497c.tar.gz
gcc-85775141e3d551b880baefc7e6f8151737fc497c.tar.bz2
Do not enable -mpcrel by default at the current time
From-SVN: r272165
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/config/rs6000/rs6000-cpus.def4
-rw-r--r--gcc/config/rs6000/rs6000.c19
-rw-r--r--gcc/testsuite/ChangeLog9
-rw-r--r--gcc/testsuite/gcc.target/powerpc/localentry-1.c7
-rw-r--r--gcc/testsuite/gcc.target/powerpc/localentry-detect-1.c6
-rw-r--r--gcc/testsuite/gcc.target/powerpc/notoc-direct-1.c7
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pcrel-sibcall-1.c11
8 files changed, 51 insertions, 22 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 95cdab7..bf0dc94 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+2019-06-11 Michael Meissner <meissner@linux.ibm.com>
+
+ * config/rs6000/rs6000-cpus.def (ISA_FUTURE_MASKS_SERVER): Delete
+ enabling -mpcrel by default.
+ * config/rs6000/rs6000.c (rs6000_option_override_internal): Update
+ test for -mpcrel and/or -mprefixed-addr needing -mcpu=future, so
+ that the test against -mcpu=future is done first. Then test if
+ -mprefixed-addr is on for -mpcrel.
+ (rs6000_disable_incompatible_switches): Add -mcpu=future support.
+
2019-06-11 Jakub Jelinek <jakub@redhat.com>
PR target/90811
diff --git a/gcc/config/rs6000/rs6000-cpus.def b/gcc/config/rs6000/rs6000-cpus.def
index 14f8a0e..972d19f 100644
--- a/gcc/config/rs6000/rs6000-cpus.def
+++ b/gcc/config/rs6000/rs6000-cpus.def
@@ -75,10 +75,10 @@
| OPTION_MASK_P8_VECTOR \
| OPTION_MASK_P9_VECTOR)
-/* Support for a future processor's features. */
+/* Support for a future processor's features. Do not enable -mpcrel until it
+ is fully functional. */
#define ISA_FUTURE_MASKS_SERVER (ISA_3_0_MASKS_SERVER \
| OPTION_MASK_FUTURE \
- | OPTION_MASK_PCREL \
| OPTION_MASK_PREFIXED_ADDR)
/* Flags that need to be turned off if -mno-future. */
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 91fafc4..f17faeb 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -4245,22 +4245,24 @@ rs6000_option_override_internal (bool global_init_p)
rs6000_isa_flags &= ~OPTION_MASK_FLOAT128_HW;
}
- /* -mpcrel requires prefixed load/store addressing. */
- if (TARGET_PCREL && !TARGET_PREFIXED_ADDR)
+ /* -mprefixed-addr (and hence -mpcrel) requires -mcpu=future. */
+ if (TARGET_PREFIXED_ADDR && !TARGET_FUTURE)
{
if ((rs6000_isa_flags_explicit & OPTION_MASK_PCREL) != 0)
- error ("%qs requires %qs", "-mpcrel", "-mprefixed-addr");
+ error ("%qs requires %qs", "-mpcrel", "-mcpu=future");
+ else if ((rs6000_isa_flags_explicit & OPTION_MASK_PREFIXED_ADDR) != 0)
+ error ("%qs requires %qs", "-mprefixed-addr", "-mcpu=future");
- rs6000_isa_flags &= ~OPTION_MASK_PCREL;
+ rs6000_isa_flags &= ~(OPTION_MASK_PCREL | OPTION_MASK_PREFIXED_ADDR);
}
- /* -mprefixed-addr (and hence -mpcrel) requires -mcpu=future. */
- if (TARGET_PREFIXED_ADDR && !TARGET_FUTURE)
+ /* -mpcrel requires prefixed load/store addressing. */
+ if (TARGET_PCREL && !TARGET_PREFIXED_ADDR)
{
if ((rs6000_isa_flags_explicit & OPTION_MASK_PCREL) != 0)
- error ("%qs requires %qs", "-mprefixed-addr", "-mcpu=future");
+ error ("%qs requires %qs", "-mpcrel", "-mprefixed-addr");
- rs6000_isa_flags &= ~(OPTION_MASK_PCREL | OPTION_MASK_PREFIXED_ADDR);
+ rs6000_isa_flags &= ~OPTION_MASK_PCREL;
}
/* Print the options after updating the defaults. */
@@ -37155,6 +37157,7 @@ rs6000_disable_incompatible_switches (void)
const HOST_WIDE_INT dep_flags; /* flags that depend on this option. */
const char *const name; /* name of the switch. */
} flags[] = {
+ { OPTION_MASK_FUTURE, OTHER_FUTURE_MASKS, "future" },
{ 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" },
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1d54333..d5b9219 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2019-06-11 Michael Meissner <meissner@linux.ibm.com>
+
+ * gcc.target/powerpc/localentry-1.c: Add -mpcrel option.
+ * gcc.target/powerpc/localentry-detect-1.c: Explicitly set and
+ unset -mpcrel in the target pragmas.
+ * gcc.target/powerpc/notoc-direct-1.c: Add -mpcrel option.
+ * gcc.target/powerpc/pcrel-sibcall-1.c: Explicitly set and
+ unset -mpcrel in the target pragmas.
+
2019-06-11 Marc Glisse <marc.glisse@inria.fr>
* gcc.dg/tree-ssa/cmpexactdiv-5.c: New file.
diff --git a/gcc/testsuite/gcc.target/powerpc/localentry-1.c b/gcc/testsuite/gcc.target/powerpc/localentry-1.c
index dc4867d..068b0c0 100644
--- a/gcc/testsuite/gcc.target/powerpc/localentry-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/localentry-1.c
@@ -1,10 +1,11 @@
/* { dg-do compile } */
-/* { dg-options "-mdejagnu-cpu=future -O2" } */
+/* { dg-options "-mdejagnu-cpu=future -O2 -mpcrel" } */
/* { dg-require-effective-target powerpc_elfv2 } */
/* { dg-require-effective-target powerpc_future_ok } */
-/* Ensure we generate ".localentry fn,1" for both leaf and non-leaf
- functions. */
+/* Ensure we generate ".localentry fn,1" for both leaf and non-leaf functions.
+ At present, -mcpu=future does not enable pc-relative mode, so make sure we
+ enable it to be able to check for .localentry. */
extern int y (int);
diff --git a/gcc/testsuite/gcc.target/powerpc/localentry-detect-1.c b/gcc/testsuite/gcc.target/powerpc/localentry-detect-1.c
index 70b18ff..e67e7f8 100644
--- a/gcc/testsuite/gcc.target/powerpc/localentry-detect-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/localentry-detect-1.c
@@ -3,10 +3,12 @@
/* { dg-require-effective-target powerpc_future_ok } */
/* { dg-options "-O2 -mdejagnu-cpu=future" } */
-
+/* At present, -mcpu=future does not enable pc-relative mode. Enable it here
+ explicitly until it is turned on by default. */
+#pragma GCC target ("cpu=future,pcrel")
int localentry1 () { return 5; }
-#pragma GCC target ("cpu=power9")
+#pragma GCC target ("cpu=power9,no-pcrel")
int localentry2 () { return 5; }
/* { dg-final { scan-assembler {\.localentry\tlocalentry1,1\M} } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/notoc-direct-1.c b/gcc/testsuite/gcc.target/powerpc/notoc-direct-1.c
index 0917f30..8603ff7 100644
--- a/gcc/testsuite/gcc.target/powerpc/notoc-direct-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/notoc-direct-1.c
@@ -1,10 +1,11 @@
/* { dg-do compile } */
-/* { dg-options "-mdejagnu-cpu=future -O2" } */
+/* { dg-options "-mdejagnu-cpu=future -O2 -mpcrel" } */
/* { dg-require-effective-target powerpc_elfv2 } */
/* { dg-require-effective-target powerpc_future_ok } */
-/* Test that calls generated from PC-relative code are
- annotated with @notoc. */
+/* Test that calls generated from PC-relative code are annotated with @notoc.
+ At present, -mcpu=future does not enable pc-relative mode. Enable it here
+ explicitly until it is turned on by default. */
extern int yy0 (int);
extern void yy1 (int);
diff --git a/gcc/testsuite/gcc.target/powerpc/pcrel-sibcall-1.c b/gcc/testsuite/gcc.target/powerpc/pcrel-sibcall-1.c
index bd7a0a9..0cb40d4 100644
--- a/gcc/testsuite/gcc.target/powerpc/pcrel-sibcall-1.c
+++ b/gcc/testsuite/gcc.target/powerpc/pcrel-sibcall-1.c
@@ -3,9 +3,12 @@
/* { dg-require-effective-target powerpc_elfv2 } */
/* { dg-require-effective-target powerpc_future_ok } */
-/* Test that potential sibcalls are not generated when the caller preserves
- the TOC and the callee doesn't, or vice versa. */
+/* Test that potential sibcalls are not generated when the caller preserves the
+ TOC and the callee doesn't, or vice versa. At present, -mcpu=future does
+ not enable pc-relative mode. Enable it here explicitly until it is turned
+ on by default. */
+#pragma GCC target ("cpu=future,pcrel")
int x (void) __attribute__((noinline));
int y (void) __attribute__((noinline));
int xx (void) __attribute__((noinline));
@@ -25,7 +28,7 @@ int sib_call (void)
return x ();
}
-#pragma GCC target ("cpu=power9")
+#pragma GCC target ("cpu=power9,no-pcrel")
int normal_call (void)
{
return y ();
@@ -36,7 +39,7 @@ int xx (void)
return 1;
}
-#pragma GCC target ("cpu=future")
+#pragma GCC target ("cpu=future,pcrel")
int notoc_call (void)
{
return xx ();