Fix --enable-offload-targets/-foffload handling, pt. 1
authorThomas Schwinge <thomas@codesourcery.com>
Wed, 23 Sep 2015 14:52:50 +0000 (16:52 +0200)
committerThomas Schwinge <tschwinge@gcc.gnu.org>
Wed, 23 Sep 2015 14:52:50 +0000 (16:52 +0200)
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.

From-SVN: r228053

gcc/ChangeLog
gcc/config.in
gcc/configure
gcc/configure.ac
gcc/gcc.c
gcc/lto-wrapper.c
libgomp/config.h.in
libgomp/plugin/configfrag.ac

index 0e9b728e6e5df70fc5ee7e560b1ec12dfd9e3c93..df71558a7e532f3b63a707ad4d49b95eefd37902 100644 (file)
@@ -1,3 +1,17 @@
+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>
 
index 431d26218d1dc7b6c88ed3231d5715d99b4ac4dc..c5c1be4e488d45eb1c1652bb46ac7d0d0fb41a11 100644 (file)
 #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
index 6fb11a7c4076a8874d992c778c04cd6a85ddf48d..7493c800f48fab780755290560b1ce83efa9e771 100755 (executable)
@@ -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
 
index a6e078a998a485c25f58ae8166e27d59a7212f63..9d1f6f18ebae8e02f75385d8a49266ef51f19c81 100644 (file)
@@ -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.])
index 757bfc988eb041dba723068ed06e5bfd68030f22..78b68e28aa655fffcdd56be186dfd96d1e3df499 100644 (file)
--- 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.  */
index 150d36845d69f558bbc68a159cde82ac56505421..e13a82a28c8121200b949dee54d743cc098175e4 100644 (file)
@@ -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;
            }
 
index 8533f0345b775e7b6e266775d0b9eb5b82888dd5..2e4c6981aea2b59e85a8fb8bcee24af2a8c33a6e 100644 (file)
@@ -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 */
index 8c2a420d793338337c960edd27fc9d458edf7953..ad70dd1f3e8a1e1068632b7ef6a6e185135aa691 100644 (file)
@@ -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.])