diff options
author | Ilya Verbin <ilya.verbin@intel.com> | 2016-02-25 12:23:52 +0000 |
---|---|---|
committer | Ilya Verbin <iverbin@gcc.gnu.org> | 2016-02-25 12:23:52 +0000 |
commit | e6861a99f8c95aae9e0088c30b574efe03a790d9 (patch) | |
tree | f080211fbe21bc4592195a286afa017b06b0bbba /gcc/config/gnu-user.h | |
parent | cf1fcb76fb5e8064316ef40d3c563c8d8e3fdc36 (diff) | |
download | gcc-e6861a99f8c95aae9e0088c30b574efe03a790d9.zip gcc-e6861a99f8c95aae9e0088c30b574efe03a790d9.tar.gz gcc-e6861a99f8c95aae9e0088c30b574efe03a790d9.tar.bz2 |
re PR driver/68463 (Offloading fails when some objects are compiled with LTO and some without)
gcc/
PR driver/68463
* config/gnu-user.h (CRTOFFLOADBEGIN): Define. Add crtoffloadbegin.o if
offloading is enabled and -fopenacc or -fopenmp is specified.
(CRTOFFLOADEND): Likewise.
(GNU_USER_TARGET_STARTFILE_SPEC): Add CRTOFFLOADBEGIN.
(GNU_USER_TARGET_ENDFILE_SPEC): Add CRTOFFLOADEND.
* lto-wrapper.c (offloadbegin, offloadend): Remove static vars.
(offload_objects_file_name): New static var.
(tool_cleanup): Remove offload_objects_file_name file.
(find_offloadbeginend): Replace with ...
(find_crtoffloadtable): ... this.
(run_gcc): Remove offload_argc and offload_argv.
Get offload_objects_file_name from -foffload-objects=... option.
Read names of object files with offload from this file, pass them to
compile_images_for_offload_targets. Don't call find_offloadbeginend and
don't pass offloadbegin and offloadend to the linker. Don't pass
offload non-LTO files to the linker, because now they're not claimed.
libgcc/
PR driver/68463
* Makefile.in (crtoffloadtable$(objext)): New rule.
* configure.ac (extra_parts): Add crtoffloadtable$(objext) if
enable_offload_targets is not empty.
* configure: Regenerate.
* offloadstuff.c: Move __OFFLOAD_TABLE__ from crtoffloadend to
crtoffloadtable.
libgomp/
PR driver/68463
* testsuite/libgomp.oacc-c-c++-common/parallel-dims-2.c: Remove.
lto-plugin/
PR driver/68463
* lto-plugin.c (struct plugin_offload_file): New.
(offload_files): Change type.
(offload_files_last, offload_files_last_obj): New.
(offload_files_last_lto): New.
(free_2): Adjust accordingly.
(all_symbols_read_handler): Don't add offload files to lto_arg_ptr.
Don't call free_1 for offload_files. Write names of object files with
offloading to the temporary file. Add new option to lto_arg_ptr.
(claim_file_handler): Don't claim file if it contains offload sections
without LTO sections. If it contains offload sections, add to the list.
From-SVN: r233712
Diffstat (limited to 'gcc/config/gnu-user.h')
-rw-r--r-- | gcc/config/gnu-user.h | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/gcc/config/gnu-user.h b/gcc/config/gnu-user.h index 2f1bbcc..b0bf40a 100644 --- a/gcc/config/gnu-user.h +++ b/gcc/config/gnu-user.h @@ -35,6 +35,14 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #undef ASM_APP_OFF #define ASM_APP_OFF "#NO_APP\n" +#if ENABLE_OFFLOADING == 1 +#define CRTOFFLOADBEGIN "%{fopenacc|fopenmp:crtoffloadbegin%O%s}" +#define CRTOFFLOADEND "%{fopenacc|fopenmp:crtoffloadend%O%s}" +#else +#define CRTOFFLOADBEGIN "" +#define CRTOFFLOADEND "" +#endif + /* Provide a STARTFILE_SPEC appropriate for GNU userspace. Here we add the GNU userspace magical crtbegin.o file (see crtstuff.c) which provides part of the support for getting C++ file-scope static @@ -49,14 +57,16 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see %{" NO_PIE_SPEC ":crtbegin.o%s}} \ %{fvtable-verify=none:%s; \ fvtable-verify=preinit:vtv_start_preinit.o%s; \ - fvtable-verify=std:vtv_start.o%s}" + fvtable-verify=std:vtv_start.o%s} \ + " CRTOFFLOADBEGIN #else #define GNU_USER_TARGET_STARTFILE_SPEC \ "%{!shared: %{pg|p|profile:gcrt1.o%s;:crt1.o%s}} \ crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s} \ %{fvtable-verify=none:%s; \ fvtable-verify=preinit:vtv_start_preinit.o%s; \ - fvtable-verify=std:vtv_start.o%s}" + fvtable-verify=std:vtv_start.o%s} \ + " CRTOFFLOADBEGIN #endif #undef STARTFILE_SPEC #define STARTFILE_SPEC GNU_USER_TARGET_STARTFILE_SPEC @@ -73,13 +83,15 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see fvtable-verify=preinit:vtv_end_preinit.o%s; \ fvtable-verify=std:vtv_end.o%s} \ %{shared:crtendS.o%s;: %{" PIE_SPEC ":crtendS.o%s} \ - %{" NO_PIE_SPEC ":crtend.o%s}} crtn.o%s" + %{" NO_PIE_SPEC ":crtend.o%s}} crtn.o%s \ + " CRTOFFLOADEND #else #define GNU_USER_TARGET_ENDFILE_SPEC \ "%{fvtable-verify=none:%s; \ fvtable-verify=preinit:vtv_end_preinit.o%s; \ fvtable-verify=std:vtv_end.o%s} \ - %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s" + %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s \ + " CRTOFFLOADEND #endif #undef ENDFILE_SPEC #define ENDFILE_SPEC GNU_USER_TARGET_ENDFILE_SPEC |