Make sure that OMP builtins are available in offloading compilers.
authorThomas Schwinge <thomas@codesourcery.com>
Thu, 8 Jan 2015 15:41:13 +0000 (16:41 +0100)
committerThomas Schwinge <tschwinge@gcc.gnu.org>
Thu, 8 Jan 2015 15:41:13 +0000 (16:41 +0100)
gcc/
* builtins.def (DEF_GOMP_BUILTIN): Also consider flag_offload_abi
for registering builtins.
* config/i386/intelmic-mkoffload.c (prepare_target_image): Don't
add -fopenmp to the argv_obstack used when invoking
compile_for_target.

From-SVN: r219346

gcc/ChangeLog
gcc/builtins.def
gcc/config/i386/intelmic-mkoffload.c

index 01b6cc6..5bc6591 100644 (file)
@@ -1,5 +1,11 @@
 2015-01-08  Thomas Schwinge  <thomas@codesourcery.com>
 
+       * builtins.def (DEF_GOMP_BUILTIN): Also consider flag_offload_abi
+       for registering builtins.
+       * config/i386/intelmic-mkoffload.c (prepare_target_image): Don't
+       add -fopenmp to the argv_obstack used when invoking
+       compile_for_target.
+
        * config/i386/intelmic-mkoffload.c (compile_for_target): Always
        add "-m32" or "-m64" to argv_obstack.
        (generate_host_descr_file): Likewise, when invoking host_compiler.
index 28b1646..5a7ed10 100644 (file)
@@ -148,11 +148,14 @@ along with GCC; see the file COPYING3.  If not see
 
 /* Builtin used by the implementation of GNU OpenMP.  None of these are
    actually implemented in the compiler; they're all in libgomp.  */
+/* These builtins also need to be enabled in offloading compilers invoked from
+   mkoffload; for that purpose, we're checking the -foffload-abi flag here.  */
 #undef DEF_GOMP_BUILTIN
 #define DEF_GOMP_BUILTIN(ENUM, NAME, TYPE, ATTRS) \
   DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,    \
                false, true, true, ATTRS, false, \
-              (flag_openmp || flag_tree_parallelize_loops))
+              (flag_openmp || flag_tree_parallelize_loops \
+               || flag_offload_abi != OFFLOAD_ABI_UNSET))
 
 /* Builtin used by implementation of Cilk Plus.  Most of these are decomposed
    by the compiler but a few are implemented in libcilkrts.  */ 
index 23bc955..050f2e6 100644 (file)
@@ -390,7 +390,6 @@ prepare_target_image (const char *target_compiler, int argc, char **argv)
   obstack_init (&argv_obstack);
   obstack_ptr_grow (&argv_obstack, target_compiler);
   obstack_ptr_grow (&argv_obstack, "-xlto");
-  obstack_ptr_grow (&argv_obstack, "-fopenmp");
   obstack_ptr_grow (&argv_obstack, "-shared");
   obstack_ptr_grow (&argv_obstack, "-fPIC");
   obstack_ptr_grow (&argv_obstack, opt1);