summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-23 14:52:50 +0000
committertschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>2015-09-23 14:52:50 +0000
commitdaa8f58fd840e8d35f362306fb54e1963f4cbd0f (patch)
treee56994358815ca037270fe39c1df903fc8423e3f
parentdf67b98cfa2f5943ddc469380abf4f3821f0f6af (diff)
downloadgcc-daa8f58fd840e8d35f362306fb54e1963f4cbd0f.tar.gz
Fix --enable-offload-targets/-foffload handling, pt. 1
gcc/ * configure.ac (offload_targets, OFFLOAD_TARGETS): Separate offload targets by commas, not colons. * config.in: Regenerate. * configure: Likewise. * gcc.c (driver::maybe_putenv_COLLECT_LTO_WRAPPER): Due to that, instead of setting up the default offload targets here... (process_command): ..., do it here. libgomp/ * plugin/configfrag.ac (OFFLOAD_TARGETS): Clarify that offload targets are separated by commas. * config.h.in: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228053 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog14
-rw-r--r--gcc/config.in2
-rwxr-xr-xgcc/configure2
-rw-r--r--gcc/configure.ac4
-rw-r--r--gcc/gcc.c23
-rw-r--r--gcc/lto-wrapper.c4
-rw-r--r--libgomp/config.h.in2
-rw-r--r--libgomp/plugin/configfrag.ac2
8 files changed, 37 insertions, 16 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0e9b728e6e5..df71558a7e5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,18 @@
2015-09-23 Thomas Schwinge <thomas@codesourcery.com>
+
+ * configure.ac (offload_targets, OFFLOAD_TARGETS): Separate
+ offload targets by commas, not colons.
+ * config.in: Regenerate.
+ * configure: Likewise.
+ * gcc.c (driver::maybe_putenv_COLLECT_LTO_WRAPPER): Due to that,
+ instead of setting up the default offload targets here...
+ (process_command): ..., do it here.
+ libgomp/
+ * plugin/configfrag.ac (OFFLOAD_TARGETS): Clarify that offload
+ targets are separated by commas.
+ * config.h.in: Regenerate.
+
+2015-09-23 Thomas Schwinge <thomas@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>
* omp-low.h (omp_reduction_init_op): Declare.
diff --git a/gcc/config.in b/gcc/config.in
index 431d26218d1..c5c1be4e488 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -1913,7 +1913,7 @@
#endif
-/* Define to hold the list of target names suitable for offloading. */
+/* Define to offload targets, separated by commas. */
#ifndef USED_FOR_TARGET
#undef OFFLOAD_TARGETS
#endif
diff --git a/gcc/configure b/gcc/configure
index 6fb11a7c407..7493c800f48 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -7696,7 +7696,7 @@ for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
if test x"$offload_targets" = x; then
offload_targets=$tgt
else
- offload_targets="$offload_targets:$tgt"
+ offload_targets="$offload_targets,$tgt"
fi
done
diff --git a/gcc/configure.ac b/gcc/configure.ac
index a6e078a998a..9d1f6f18eba 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -941,11 +941,11 @@ for tgt in `echo $enable_offload_targets | sed 's/,/ /g'`; do
if test x"$offload_targets" = x; then
offload_targets=$tgt
else
- offload_targets="$offload_targets:$tgt"
+ offload_targets="$offload_targets,$tgt"
fi
done
AC_DEFINE_UNQUOTED(OFFLOAD_TARGETS, "$offload_targets",
- [Define to hold the list of target names suitable for offloading.])
+ [Define to offload targets, separated by commas.])
if test x"$offload_targets" != x; then
AC_DEFINE(ENABLE_OFFLOADING, 1,
[Define this to enable support for offloading.])
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 757bfc988eb..78b68e28aa6 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -284,7 +284,8 @@ static const char *const spec_version = DEFAULT_TARGET_VERSION;
static const char *spec_machine = DEFAULT_TARGET_MACHINE;
static const char *spec_host_machine = DEFAULT_REAL_TARGET_MACHINE;
-/* List of offload targets. */
+/* List of offload targets. Separated by colon. Empty string for
+ -foffload=disable. */
static char *offload_targets = NULL;
@@ -4376,6 +4377,13 @@ process_command (unsigned int decoded_options_count,
CL_DRIVER, &handlers, global_dc);
}
+#ifdef ENABLE_OFFLOADING
+ /* If the user didn't specify any, default to all configured offload
+ targets. */
+ if (offload_targets == NULL)
+ handle_foffload_option (OFFLOAD_TARGETS);
+#endif
+
if (output_file
&& strcmp (output_file, "-") != 0
&& strcmp (output_file, HOST_BIT_BUCKET) != 0)
@@ -7572,22 +7580,17 @@ driver::maybe_putenv_COLLECT_LTO_WRAPPER () const
void
driver::maybe_putenv_OFFLOAD_TARGETS () const
{
- const char *targets = offload_targets;
-
- /* If no targets specified by -foffload, use all available targets. */
- if (!targets)
- targets = OFFLOAD_TARGETS;
-
- if (strlen (targets) > 0)
+ if (offload_targets && offload_targets[0] != '\0')
{
obstack_grow (&collect_obstack, "OFFLOAD_TARGET_NAMES=",
sizeof ("OFFLOAD_TARGET_NAMES=") - 1);
- obstack_grow (&collect_obstack, targets,
- strlen (targets) + 1);
+ obstack_grow (&collect_obstack, offload_targets,
+ strlen (offload_targets) + 1);
xputenv (XOBFINISH (&collect_obstack, char *));
}
free (offload_targets);
+ offload_targets = NULL;
}
/* Reject switches that no pass was interested in. */
diff --git a/gcc/lto-wrapper.c b/gcc/lto-wrapper.c
index 150d36845d6..e13a82a28c8 100644
--- a/gcc/lto-wrapper.c
+++ b/gcc/lto-wrapper.c
@@ -594,6 +594,8 @@ append_offload_options (obstack *argv_obstack, const char *target,
else
{
opts = strchr (option->arg, '=');
+ /* If there are offload targets specified, but no actual options,
+ there is nothing to do here. */
if (!opts)
continue;
@@ -606,10 +608,12 @@ append_offload_options (obstack *argv_obstack, const char *target,
next = opts;
next = (next > opts) ? opts : next;
+ /* Are we looking for this offload target? */
if (strlen (target) == (size_t) (next - cur)
&& strncmp (target, cur, next - cur) == 0)
break;
+ /* Skip the comma or equal sign. */
cur = next + 1;
}
diff --git a/libgomp/config.h.in b/libgomp/config.h.in
index 8533f0345b7..2e4c6981aea 100644
--- a/libgomp/config.h.in
+++ b/libgomp/config.h.in
@@ -95,7 +95,7 @@
*/
#undef LT_OBJDIR
-/* Define to hold the list of target names suitable for offloading. */
+/* Define to offload targets, separated by commas. */
#undef OFFLOAD_TARGETS
/* Name of package */
diff --git a/libgomp/plugin/configfrag.ac b/libgomp/plugin/configfrag.ac
index 8c2a420d793..ad70dd1f3e8 100644
--- a/libgomp/plugin/configfrag.ac
+++ b/libgomp/plugin/configfrag.ac
@@ -141,7 +141,7 @@ if test x"$enable_offload_targets" != x; then
done
fi
AC_DEFINE_UNQUOTED(OFFLOAD_TARGETS, "$offload_targets",
- [Define to hold the list of target names suitable for offloading.])
+ [Define to offload targets, separated by commas.])
AM_CONDITIONAL([PLUGIN_NVPTX], [test $PLUGIN_NVPTX = 1])
AC_DEFINE_UNQUOTED([PLUGIN_NVPTX], [$PLUGIN_NVPTX],
[Define to 1 if the NVIDIA plugin is built, 0 if not.])