[Bug driver/68463] Offloading fails when some objects are compiled with LTO and some without

iverbin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Feb 25 12:24:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68463

--- Comment #4 from iverbin at gcc dot gnu.org ---
Author: iverbin
Date: Thu Feb 25 12:23:52 2016
New Revision: 233712

URL: https://gcc.gnu.org/viewcvs?rev=233712&root=gcc&view=rev
Log:
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.

Removed:
    trunk/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-dims-2.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/gnu-user.h
    trunk/gcc/lto-wrapper.c
    trunk/libgcc/ChangeLog
    trunk/libgcc/Makefile.in
    trunk/libgcc/configure
    trunk/libgcc/configure.ac
    trunk/libgcc/offloadstuff.c
    trunk/libgomp/ChangeLog
    trunk/lto-plugin/ChangeLog
    trunk/lto-plugin/lto-plugin.c


More information about the Gcc-bugs mailing list