From 45f46750a3513790573791c0eec6b600b42f2042 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Thu, 8 Jan 2015 16:41:13 +0100 Subject: [PATCH] Make sure that OMP builtins are available in offloading compilers. 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 | 6 ++++++ gcc/builtins.def | 5 ++++- gcc/config/i386/intelmic-mkoffload.c | 1 - 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 01b6cc6baaf..5bc6591af55 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2015-01-08 Thomas Schwinge + * 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. diff --git a/gcc/builtins.def b/gcc/builtins.def index 28b164673db..5a7ed10f550 100644 --- a/gcc/builtins.def +++ b/gcc/builtins.def @@ -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. */ diff --git a/gcc/config/i386/intelmic-mkoffload.c b/gcc/config/i386/intelmic-mkoffload.c index 23bc955f4a0..050f2e62d5c 100644 --- a/gcc/config/i386/intelmic-mkoffload.c +++ b/gcc/config/i386/intelmic-mkoffload.c @@ -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); -- 2.30.2