gcc

~vcs-imports/gcc/+git/gcc:kyukhin/gomp4-offload

Last commit made on 2014-11-12
Get this branch:
git clone -b kyukhin/gomp4-offload https://git.launchpad.net/~vcs-imports/gcc/+git/gcc

Branch merges

Branch information

Name:
kyukhin/gomp4-offload
Repository:
lp:~vcs-imports/gcc/+git/gcc

Recent commits

60f48f1... by Ilya Verbin <email address hidden>

[PATCH 4/4] OpenMP 4.0 offloading to Intel MIC: non-fallback testing

2014-10-30 Andrey Turetskiy <email address hidden>
     Ilya Verbin <email address hidden>

libgomp/
 * Makefile.in: Regenerate.
 * configure: Regenerate.
 * configure.ac: Set up offload_additional_options,
 offload_additional_lib_paths and offload_targets.
 * testsuite/Makefile.am: Overrule site.exp.
 * testsuite/Makefile.in: Regenerate.
 * testsuite/lib/libgomp.exp (libgomp_init): Append
 offload_additional_lib_paths to LD_LIBRARY_PATH. Append
 offload_additional_options to ALWAYS_CFLAGS. Append liboffloadmic
 build directory to LD_LIBRARY_PATH for intelmic offload targets.

6cf3816... by Ilya Verbin <email address hidden>

[PATCH 3/4] OpenMP 4.0 offloading to Intel MIC: libgomp plugin

2014-10-21 Ilya Verbin <email address hidden>
     Andrey Turetskiy <email address hidden>

liboffloadmic/
 * Makefile.in: Regenerate.
 * configure: Regenerate.
 * configure.ac: Add subdirectory 'plugin'.
 * plugin/Makefile.am: New file.
 * plugin/Makefile.in: New file, generated by automake.
 * plugin/aclocal.m4: New file, generated by aclocal.
 * plugin/configure: New file, generated by autoconf.
 * plugin/configure.ac: New file.
 * plugin/libgomp-plugin-intelmic.cpp: New file.
 * plugin/offload_target_main.cpp: New file.

534b201... by Ilya Verbin <email address hidden>

[PATCH 2/4] OpenMP 4.0 offloading to Intel MIC: liboffloadmic

2014-10-21 Ilya Verbin <email address hidden>

 * Makefile.def: Add liboffloadmic to target_modules. Make
 liboffloadmic depend on libgomp's configure, libstdc++ and libgcc.
 * Makefile.in: Regenerate.
 * configure: Regenerate.
 * configure.ac: Add liboffloadmic to target binaries.
 Restrict liboffloadmic for POSIX and i*86, and x86_64 architectures.
 Add liboffloadmic to noconfig list when C++ is not supported.
config/
 * target-posix: New file.
libcilkrts/
 * configure.tgt: Use config/target-posix.
liboffloadmic/
 Initial commit. Imported from upstream:
 https://www.openmprtl.org/sites/default/files/liboffload_oss.tgz
 * Makefile.am: New file.
 * Makefile.in: New file, generated by automake.
 * aclocal.m4: New file, generated by aclocal.
 * configure: New file, generated by autoconf.
 * configure.ac: New file.
 * configure.tgt: Ditto.
 * doc/doxygen/config: Ditto.
 * doc/doxygen/header.tex: Ditto.
 * include/coi/common/COIEngine_common.h: Ditto.
 * include/coi/common/COIMacros_common.h: Ditto.
 * include/coi/common/COIPerf_common.h : Ditto.
 * include/coi/common/COIResult_common.h : Ditto.
 * include/coi/common/COITypes_common.h: Ditto.
 * include/coi/sink/COIBuffer_sink.h: Ditto.
 * include/coi/sink/COIPipeline_sink.h: Ditto.
 * include/coi/sink/COIProcess_sink.h: Ditto.
 * include/coi/source/COIBuffer_source.h: Ditto.
 * include/coi/source/COIEngine_source.h: Ditto.
 * include/coi/source/COIEvent_source.h: Ditto.
 * include/coi/source/COIPipeline_source.h: Ditto.
 * include/coi/source/COIProcess_source.h: Ditto.
 * include/myo/myo.h: Ditto.
 * include/myo/myoimpl.h: Ditto.
 * include/myo/myotypes.h: Ditto.
 * liboffloadmic_host.spec.in: Ditto.
 * liboffloadmic_target.spec.in: Ditto.
 * runtime/cean_util.cpp: Ditto.
 * runtime/cean_util.h: Ditto.
 * runtime/coi/coi_client.cpp: Ditto.
 * runtime/coi/coi_client.h: Ditto.
 * runtime/coi/coi_server.cpp: Ditto.
 * runtime/coi/coi_server.h: Ditto.
 * runtime/compiler_if_host.cpp: Ditto.
 * runtime/compiler_if_host.h: Ditto.
 * runtime/compiler_if_target.cpp: Ditto.
 * runtime/compiler_if_target.h: Ditto.
 * runtime/dv_util.cpp: Ditto.
 * runtime/dv_util.h: Ditto.
 * runtime/emulator/coi_common.h: Ditto.
 * runtime/emulator/coi_device.cpp: Ditto.
 * runtime/emulator/coi_device.h: Ditto.
 * runtime/emulator/coi_host.cpp: Ditto.
 * runtime/emulator/coi_host.h: Ditto.
 * runtime/emulator/coi_version_asm.h: Ditto.
 * runtime/emulator/coi_version_linker_script.map: Ditto.
 * runtime/emulator/myo_client.cpp: Ditto.
 * runtime/emulator/myo_service.cpp: Ditto.
 * runtime/emulator/myo_service.h: Ditto.
 * runtime/emulator/myo_version_asm.h: Ditto.
 * runtime/emulator/myo_version_linker_script.map: Ditto.
 * runtime/liboffload_error.c: Ditto.
 * runtime/liboffload_error_codes.h: Ditto.
 * runtime/liboffload_msg.c: Ditto.
 * runtime/liboffload_msg.h: Ditto.
 * runtime/mic_lib.f90: Ditto.
 * runtime/offload.h: Ditto.
 * runtime/offload_common.cpp: Ditto.
 * runtime/offload_common.h: Ditto.
 * runtime/offload_engine.cpp: Ditto.
 * runtime/offload_engine.h: Ditto.
 * runtime/offload_env.cpp: Ditto.
 * runtime/offload_env.h: Ditto.
 * runtime/offload_host.cpp: Ditto.
 * runtime/offload_host.h: Ditto.
 * runtime/offload_myo_host.cpp: Ditto.
 * runtime/offload_myo_host.h: Ditto.
 * runtime/offload_myo_target.cpp: Ditto.
 * runtime/offload_myo_target.h: Ditto.
 * runtime/offload_omp_host.cpp: Ditto.
 * runtime/offload_omp_target.cpp: Ditto.
 * runtime/offload_orsl.cpp: Ditto.
 * runtime/offload_orsl.h: Ditto.
 * runtime/offload_table.cpp: Ditto.
 * runtime/offload_table.h: Ditto.
 * runtime/offload_target.cpp: Ditto.
 * runtime/offload_target.h: Ditto.
 * runtime/offload_target_main.cpp: Ditto.
 * runtime/offload_timer.h: Ditto.
 * runtime/offload_timer_host.cpp: Ditto.
 * runtime/offload_timer_target.cpp: Ditto.
 * runtime/offload_trace.cpp: Ditto.
 * runtime/offload_trace.h: Ditto.
 * runtime/offload_util.cpp: Ditto.
 * runtime/offload_util.h: Ditto.
 * runtime/ofldbegin.cpp: Ditto.
 * runtime/ofldend.cpp: Ditto.
 * runtime/orsl-lite/include/orsl-lite.h: Ditto.
 * runtime/orsl-lite/lib/orsl-lite.c: Ditto.
 * runtime/orsl-lite/version.txt: Ditto.
 * runtime/use_mpss2.txt: Ditto.

59ac128... by Ilya Verbin <email address hidden>

[PATCH 1/4] OpenMP 4.0 offloading to Intel MIC: mkoffload

2014-10-22 Ilya Verbin <email address hidden>
     Andrey Turetskiy <email address hidden>

gcc/
 * config.gcc (*-intelmic-* | *-intelmicemul-*): Add i386/t-intelmic to
 tmake_file.
 (i[34567]86-*-* | x86_64-*-*): Build mkoffload$(exeext) with the
 accelerator compiler.
 * config/i386/intelmic-mkoffload.c: New file.
 * config/i386/t-intelmic: Ditto.

49ae5b9... by Ilya Verbin <email address hidden>

[PATCH 7] OpenMP 4.0 offloading infrastructure: testsuite

2014-10-15 Andrey Turetskiy <email address hidden>
     Ilya Verbin <email address hidden>
     Kirill Yukhin <email address hidden>
     Ilya Tocar <email address hidden>

libgomp/
 * testsuite/lib/libgomp.exp
 (check_effective_target_offload_device): New.
 * testsuite/libgomp.c++/c++.exp: Include tests from subdirectories.
 * testsuite/libgomp.c++/examples-4/e.51.5.C: New test.
 * testsuite/libgomp.c++/examples-4/e.53.2.C: Ditto.
 * testsuite/libgomp.c/examples-4/e.50.1.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.50.2.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.50.3.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.50.4.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.50.5.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.51.1.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.51.2.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.51.3.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.51.4.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.51.6.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.51.7.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.52.1.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.52.2.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.53.1.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.53.3.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.53.4.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.53.5.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.54.2.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.54.3.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.54.4.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.54.5.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.54.6.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.55.1.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.55.2.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.56.3.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.56.4.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.57.1.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.57.2.c: Ditto.
 * testsuite/libgomp.c/examples-4/e.57.3.c: Ditto.
 * testsuite/libgomp.c/target-7.c: Fix test.
 * testsuite/libgomp.fortran/examples-4/e.50.1.f90: New test.
 * testsuite/libgomp.fortran/examples-4/e.50.2.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.50.3.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.50.4.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.50.5.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.51.1.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.51.2.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.51.3.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.51.4.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.51.5.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.51.6.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.51.7.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.52.1.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.52.2.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.53.1.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.53.2.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.53.3.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.53.4.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.53.5.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.54.2.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.54.3.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.54.4.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.54.5.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.54.6.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.55.1.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.55.2.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.56.3.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.56.4.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.57.1.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.57.2.f90: Ditto.
 * testsuite/libgomp.fortran/examples-4/e.57.3.f90: Ditto.

b427800... by Ilya Verbin <email address hidden>

[PATCH 6] OpenMP 4.0 offloading infrastructure: option handling

2014-10-17 Bernd Schmidt <email address hidden>
     Andrey Turetskiy <email address hidden>
     Ilya Verbin <email address hidden>

gcc/
 * common.opt (foffload, foffload-abi): New options.
 * config/i386/i386.c (ix86_offload_options): New static function.
 (TARGET_OFFLOAD_OPTIONS): Define.
 * coretypes.h (enum offload_abi): New enum.
 * doc/tm.texi: Regenerate.
 * doc/tm.texi.in (TARGET_OFFLOAD_OPTIONS): Document.
 * gcc.c (offload_targets): New static variable.
 (handle_foffload_option): New static function.
 (driver_handle_option): Handle OPT_foffload_.
 (driver::maybe_putenv_OFFLOAD_TARGETS): Set OFFLOAD_TARGET_NAMES
 according to offload_targets.
 * hooks.c (hook_charptr_void_null): New hook.
 * hooks.h (hook_charptr_void_null): Declare.
 * lto-opts.c: Include lto-section-names.h.
 (lto_write_options): Append options from target offload_options hook and
 store them to offload_lto section. Do not store target-specific,
 driver and diagnostic options in offload_lto section.
 * lto-wrapper.c (merge_and_complain): Handle OPT_foffload_ and
 OPT_foffload_abi_.
 (append_compiler_options, append_linker_options)
 (append_offload_options): New static functions.
 (compile_offload_image): Add new arguments with options.
 Call append_compiler_options and append_offload_options.
 (compile_images_for_offload_targets): Add new arguments with options.
 (find_and_merge_options): New static function.
 (run_gcc): Outline options handling into the new functions:
 find_and_merge_options, append_compiler_options, append_linker_options.
 * opts.c (common_handle_option): Don't handle OPT_foffload_.
 Forbid OPT_foffload_abi_ for non-offload compiler.
 * target.def (offload_options): New target hook.

89acabb... by Ilya Verbin <email address hidden>

[PATCH 5] OpenMP 4.0 offloading infrastructure: libgomp

2014-10-06 Jakub Jelinek <email address hidden>
     Ilya Verbin <email address hidden>
     Thomas Schwinge <email address hidden>
     Andrey Turetskiy <email address hidden>

libgomp/
 * libgomp.map (GOMP_4.0.1): New symbol version.
 Add GOMP_offload_register.
 * libgomp_target.h: New file.
 * splay-tree.h: New file.
 * target.c: Include config.h, libgomp_target.h, dlfcn.h, splay-tree.h.
 (gomp_target_init): New forward declaration.
 (gomp_is_initialized): New static variable.
 (splay_tree_node, splay_tree, splay_tree_key): New typedefs.
 (struct target_mem_desc, struct splay_tree_key_s, offload_image_descr):
 New structures.
 (offload_images, num_offload_images, devices, num_devices): New static
 variables.
 (splay_compare): New static function.
 (struct gomp_device_descr): New structure.
 (gomp_get_num_devices): Call gomp_target_init.
 (resolve_device, gomp_map_vars_existing, gomp_map_vars, gomp_unmap_tgt)
 (gomp_unmap_vars, gomp_update, gomp_init_device): New static functions.
 (GOMP_offload_register): New function.
 (GOMP_target): Arrange for host callback to be performed in a separate
 initial thread and contention group, inheriting ICVs from
 gomp_global_icv etc. Call gomp_map_vars and gomp_unmap_vars.
 Add device initialization and lookup for target function in splay tree.
 (GOMP_target_data): Add device initialization and call gomp_map_vars.
 (GOMP_target_end_data): Call gomp_unmap_vars.
 (GOMP_target_update): Add device initialization and call gomp_update.
 (gomp_load_plugin_for_device, gomp_register_images_for_device)
 (gomp_target_init): New static functions.

545cb15... by Ilya Verbin <email address hidden>

[PATCH 4] OpenMP 4.0 offloading infrastructure: lto-wrapper

2014-10-16 Ilya Verbin <email address hidden>
     Bernd Schmidt <email address hidden>
     Andrey Turetskiy <email address hidden>
     Michael Zolotukhin <email address hidden>

gcc/
 * gcc.c (spec_host_machine, accel_dir_suffix): New variables.
 (process_command): Tweak path construction for the possibility
 of being configured as an offload compiler.
 (driver::maybe_putenv_OFFLOAD_TARGETS): New function.
 (driver::main): Call maybe_putenv_OFFLOAD_TARGETS.
 (driver::set_up_specs): Tweak path construction for the possibility of
 being configured as an offload compiler.
 * lto-wrapper.c (OFFLOAD_TARGET_NAMES_ENV): Define.
 (offload_names, offloadbegin, offloadend): New static variables.
 (free_array_of_ptrs, parse_env_var, access_check, compile_offload_image)
 (compile_images_for_offload_targets, copy_file, find_offloadbeginend):
 New static functions.
 (run_gcc): Determine whether offload sections are present. If so, run
 compile_images_for_offload_targets and return the names of new generated
 objects to linker. If there are offload sections, but no LTO sections,
 then return the copies of input objects without link-time recompilation.
lto-plugin/
 * lto-plugin.c (OFFLOAD_SECTION, OFFLOAD_SECTION_LEN): Define.
 (struct plugin_objfile): Add new field "offload".
 (process_offload_section): New static function.
 (claim_file_handler): Claim file if it contains offload sections.

899a408... by Ilya Verbin <email address hidden>

[PATCH 3] OpenMP 4.0 offloading infrastructure: Offload tables

2014-09-30 Ilya Verbin <email address hidden>
     Bernd Schmidt <email address hidden>
     Andrey Turetskiy <email address hidden>
     Michael Zolotukhin <email address hidden>

gcc/
 * Makefile.in (GTFILES): Add omp-low.h to list of GC files.
 * cgraphunit.c: Include omp-low.h.
 (initialize_offload): Collect global variables with "omp declare target"
 attribute into offload_vars vector.
 * doc/tm.texi: Regenerate.
 * doc/tm.texi.in (TARGET_RECORD_OFFLOAD_SYMBOL): Document.
 * gengtype.c (open_base_files): Add omp-low.h to ifiles.
 * lto-cgraph.c (output_offload_tables): New function.
 (input_offload_tables): Likewise.
 * lto-section-in.c (lto_section_name): Add "offload_table".
 * lto-section-names.h (OFFLOAD_VAR_TABLE_SECTION_NAME): Define.
 (OFFLOAD_FUNC_TABLE_SECTION_NAME): Likewise.
 * lto-streamer-out.c (lto_output): Call output_offload_tables.
 * lto-streamer.h (lto_section_type): Add LTO_section_offload_table.
 (output_offload_tables, input_offload_tables): Declare.
 * omp-low.c: Include common/common-target.h and lto-section-names.h.
 (offload_funcs, offload_vars): New global <tree, va_gc> vectors.
 (expand_omp_target): Add child_fn into offload_funcs vector.
 (add_decls_addresses_to_decl_constructor): New function.
 (omp_finish_file): Likewise.
 * omp-low.h (omp_finish_file, offload_funcs, offload_vars): Declare.
 * target.def (record_offload_symbol): New DEFHOOK.
 * toplev.c: Include omp-low.h.
 (compile_file): Call omp_finish_file.
gcc/lto/
 * lto/lto.c (read_cgraph_and_symbols): Call input_offload_tables.

3918aaf... by Ilya Verbin <email address hidden>

[PATCH 2] OpenMP 4.0 offloading infrastructure: LTO streaming

2014-10-01 Ilya Verbin <email address hidden>
     Ilya Tocar <email address hidden>
     Andrey Turetskiy <email address hidden>
     Bernd Schmidt <email address hidden>

gcc/
 * cgraph.h (symtab_node): Add need_lto_streaming flag.
 * cgraphunit.c: Include lto-section-names.h.
 (initialize_offload): New function.
 (ipa_passes): Initialize offload and call ipa_write_summaries if there
 is something to write to OFFLOAD_SECTION_NAME_PREFIX sections.
 (symbol_table::compile): Call lto_streamer_hooks_init under flag_openmp.
 * ipa-inline-analysis.c (inline_generate_summary): Do not exit under
 flag_openmp.
 (inline_free_summary): Always remove hooks.
 * lto-cgraph.c (referenced_from_other_partition_p): Ignore references
 from non-offloadable nodes while streaming a node into offload section.
 (reachable_from_other_partition_p): Likewise.
 (select_what_to_stream): New function.
 (compute_ltrans_boundary): Do not call
 lto_set_symtab_encoder_in_partition if the node should not be streamed.
 * lto-section-names.h (OFFLOAD_SECTION_NAME_PREFIX): Define.
 (section_name_prefix): Declare.
 * lto-streamer.c (section_name_prefix): New variable.
 (lto_get_section_name): Use section_name_prefix instead of
 LTO_SECTION_NAME_PREFIX.
 * lto-streamer.h (select_what_to_stream): Declare.
 * omp-low.c (is_targetreg_ctx): New function.
 (create_omp_child_function, check_omp_nesting_restrictions): Use it.
 (expand_omp_target): Set mark_force_output for the offloaded functions.
 (lower_omp_critical): Add target attribute for omp critical symbol.
 * passes.c (ipa_write_summaries): New argument offload_lto_mode. Call
 select_what_to_stream. Do not call lto_set_symtab_encoder_in_partition
 if the node should not be streamed out.
 * tree-pass.h (ipa_write_summaries): New bool argument.
gcc/lto/
 * lto-object.c (lto_obj_add_section): Use section_name_prefix instead of
 LTO_SECTION_NAME_PREFIX.
 * lto-partition.c (lto_promote_cross_file_statics): Call
 select_what_to_stream.
 * lto.c (lto_section_with_id): Use section_name_prefix instead of
 LTO_SECTION_NAME_PREFIX.
 (read_cgraph_and_symbols): Read OFFLOAD_SECTION_NAME_PREFIX sections, if
 being built as an offload compiler.