1. 18 Apr, 2018 1 commit
  2. 03 Jan, 2018 1 commit
  3. 31 Jan, 2017 1 commit
    • libgomp: Provide prototypes for functions implemented by libgomp plugins · dced339c
      	libgomp/
      	* libgomp-plugin.h: #include <stdbool.h>.
      	(GOMP_OFFLOAD_get_name, GOMP_OFFLOAD_get_caps)
      	(GOMP_OFFLOAD_get_type, GOMP_OFFLOAD_get_num_devices)
      	(GOMP_OFFLOAD_init_device, GOMP_OFFLOAD_fini_device)
      	(GOMP_OFFLOAD_version, GOMP_OFFLOAD_load_image)
      	(GOMP_OFFLOAD_unload_image, GOMP_OFFLOAD_alloc, GOMP_OFFLOAD_free)
      	(GOMP_OFFLOAD_dev2host, GOMP_OFFLOAD_host2dev)
      	(GOMP_OFFLOAD_dev2dev, GOMP_OFFLOAD_can_run, GOMP_OFFLOAD_run)
      	(GOMP_OFFLOAD_async_run, GOMP_OFFLOAD_openacc_parallel)
      	(GOMP_OFFLOAD_openacc_register_async_cleanup)
      	(GOMP_OFFLOAD_openacc_async_test)
      	(GOMP_OFFLOAD_openacc_async_test_all)
      	(GOMP_OFFLOAD_openacc_async_wait)
      	(GOMP_OFFLOAD_openacc_async_wait_async)
      	(GOMP_OFFLOAD_openacc_async_wait_all)
      	(GOMP_OFFLOAD_openacc_async_wait_all_async)
      	(GOMP_OFFLOAD_openacc_async_set_async)
      	(GOMP_OFFLOAD_openacc_create_thread_data)
      	(GOMP_OFFLOAD_openacc_destroy_thread_data)
      	(GOMP_OFFLOAD_openacc_get_current_cuda_device)
      	(GOMP_OFFLOAD_openacc_get_current_cuda_context)
      	(GOMP_OFFLOAD_openacc_get_cuda_stream)
      	(GOMP_OFFLOAD_openacc_set_cuda_stream): New prototypes.
      	* libgomp.h (struct acc_dispatch_t, struct gomp_device_descr): Use
      	these.
      	* plugin/plugin-hsa.c (GOMP_OFFLOAD_load_image)
      	(GOMP_OFFLOAD_unload_image): Fix argument types.
      	liboffloadmic/
      	* plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_get_type): Fix
      	return type.
      	(GOMP_OFFLOAD_load_image): Fix argument types.
      
      From-SVN: r245062
      Thomas Schwinge committed
  4. 21 Jan, 2017 1 commit
    • re PR other/79046 (g++ -print-file-name=plugin uses full version number in path) · 73aa401e
      	PR other/79046
      libatomic/
      	* testsuite/Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead
      	of cat to get version from BASE-VER file.
      	* testsuite/Makefile.in: Regenerated.
      libffi/
      	* configure.ac: Add GCC_BASE_VER.
      	* include/Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead
      	of cat to get version from BASE-VER file.
      	* configure: Regenerated.
      	* testsuite/Makefile.in: Regenerated.
      	* include/Makefile.in: Regenerated.
      	* Makefile.in: Regenerated.
      	* man/Makefile.in: Regenerated.
      libgomp/
      	* testsuite/Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead
      	of cat to get version from BASE-VER file.
      	* testsuite/Makefile.in: Regenerated.
      libitm/
      	* testsuite/Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead
      	of cat to get version from BASE-VER file.
      	* testsuite/Makefile.in: Regenerated.
      libmpx/
      	* mpxrt/Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead
      	of cat to get version from BASE-VER file.
      	* mpxwrap/Makefile.am (gcc_version): Likewise.
      	* mpxrt/Makefile.in: Regenerated.
      	* mpxwrap/Makefile.in: Regenerated.
      liboffloadmic/
      	* plugin/configure.ac: Add GCC_BASE_VER.
      	* plugin/Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead
      	of cat to get version from BASE-VER file.
      	* plugin/configure: Regenerated.
      	* plugin/aclocal.m4: Regenerated.
      	* plugin/Makefile.in: Regenerated.
      libsanitizer/
      	* interception/Makefile.am (gcc_version): Use @get_gcc_base_ver@
      	instead of cat to get version from BASE-VER file.
      	* asan/Makefile.am (gcc_version): Likewise.
      	* ubsan/Makefile.am (gcc_version): Likewise.
      	* sanitizer_common/Makefile.am (gcc_version): Likewise.
      	* lsan/Makefile.am (gcc_version): Likewise.
      	* tsan/Makefile.am (gcc_version): Likewise.
      	* interception/Makefile.in: Regenerated.
      	* asan/Makefile.in: Regenerated.
      	* ubsan/Makefile.in: Regenerated.
      	* sanitizer_common/Makefile.in: Regenerated.
      	* lsan/Makefile.in: Regenerated.
      	* tsan/Makefile.in: Regenerated.
      libvtv/
      	* testsuite/Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead
      	of cat to get version from BASE-VER file.
      	* testsuite/Makefile.in: Regenerated.
      
      From-SVN: r244742
      Jakub Jelinek committed
  5. 20 Jan, 2017 1 commit
  6. 17 Jan, 2017 1 commit
    • re PR other/79046 (g++ -print-file-name=plugin uses full version number in path) · 3c36aa6b
      	PR other/79046
      	* configure: Regenerated.
      config/
      	* acx.m4 (GCC_BASE_VER): New m4 function.
      	(ACX_TOOL_DIRS): Require GCC_BASE_VER, for
      	--with-gcc-major-version-only use just major number from BASE-VER.
      gcc/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.in (version): Use @get_gcc_base_ver@ instead of cat to get
      	version from BASE-VER file.
      	(CFLAGS-gcc.o): Add -DBASEVER=$(BASEVER_s).
      	(gcc.o): Depend on $(BASEVER).
      	* common.opt (dumpfullversion): New option.
      	* gcc.c (driver_handle_option): Handle OPT_dumpfullversion.
      	* doc/invoke.texi: Document -dumpfullversion.
      	* doc/install.texi: Document --with-gcc-major-version-only.
      	* configure: Regenerated.
      libatomic/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* testsuite/Makefile.in: Regenerated.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      libgomp/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* testsuite/Makefile.in: Regenerated.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      libgcc/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.in (version): Use @get_gcc_base_ver@ instead of cat to get
      	version from BASE-VER file.
      	* configure: Regenerated.
      libssp/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      liboffloadmic/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* aclocal.m4: Include ../config/acx.m4.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      libquadmath/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      libmpx/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      libada/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.in (version): Use @get_gcc_base_ver@ instead of cat to get
      	version from BASE-VER file.
      	* configure: Regenerated.
      lto-plugin/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      libitm/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* testsuite/Makefile.in: Regenerated.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      fixincludes/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.in (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* configure: Regenerated.
      libcilkrts/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* aclocal.m4: Include ../config/acx.m4.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      libcc1/
      	* configure.ac: Add GCC_BASE_VER.  For --with-gcc-major-version-only
      	use just major number from BASE-VER.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      libobjc/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.in (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* configure: Regenerated.
      libstdc++-v3/
      	* configure.ac: Add GCC_BASE_VER.
      	* fragment.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* po/Makefile.in: Regenerated.
      	* libsupc++/Makefile.in: Regenerated.
      	* testsuite/Makefile.in: Regenerated.
      	* src/Makefile.in: Regenerated.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      	* include/Makefile.in: Regenerated.
      	* doc/Makefile.in: Regenerated.
      	* python/Makefile.in: Regenerated.
      	* src/c++11/Makefile.in: Regenerated.
      	* src/c++98/Makefile.in: Regenerated.
      	* src/filesystem/Makefile.in: Regenerated.
      libvtv/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* testsuite/Makefile.in: Regenerated.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      libsanitizer/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* libbacktrace/Makefile.in: Regenerated.
      	* interception/Makefile.in: Regenerated.
      	* asan/Makefile.in: Regenerated.
      	* ubsan/Makefile.in: Regenerated.
      	* configure: Regenerated.
      	* sanitizer_common/Makefile.in: Regenerated.
      	* lsan/Makefile.in: Regenerated.
      	* Makefile.in: Regenerated.
      	* tsan/Makefile.in: Regenerated.
      libgfortran/
      	* configure.ac: Add GCC_BASE_VER.
      	* Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to
      	get version from BASE-VER file.
      	* configure: Regenerated.
      	* Makefile.in: Regenerated.
      
      From-SVN: r244521
      Jakub Jelinek committed
  7. 15 Nov, 2016 1 commit
    • config-ml.in: Remove references to GCJ. · 84c1b9d3
      <toplevel>
      
      2016-11-15  Matthias Klose  <doko@ubuntu.com>
      
      	* config-ml.in: Remove references to GCJ.
      	* configure.ac: Likewise.
      	* configure: Regenerate.
      
      config/
      
      2016-11-15  Matthias Klose  <doko@ubuntu.com>
      
      	multi.m4: Don't set GCJ.
      
      gcc/
      
      2016-11-15  Matthias Klose  <doko@ubuntu.com>
      
      	* doc/install.texi: Remove references to gcj/libjava.
      	* doc/invoke.texi: Likewise.
      
      */ (where necessary)
      
      2016-11-15  Matthias Klose  <doko@ubuntu.com>
      
      	* configure: Regenerate.
      
      From-SVN: r242433
      Matthias Klose committed
  8. 21 Jul, 2016 1 commit
    • backport: Makefile.am (myo_inc_dir): Remove. · df26a50d
      Merge liboffloadmic from upstream
      
      liboffloadmic/
      	* Makefile.am (myo_inc_dir): Remove.
      	(toolexeclib_LTLIBRARIES): Remove libmyo-client.la and
      	libmyo-service.la.
      	(liboffloadmic_cppflags): Remove -DMYO_SUPPORT.
      	(liboffloadmic_host_la_SOURCES): Remove offload_myo_host.cpp.
      	(liboffloadmic_target_la_SOURCES): Remove offload_myo_target.cpp.
      	(liboffloadmic_target_la_LIBADD): Remove libmyo-service.la.
      	(libmyo_client_la_SOURCES, libmyo_service_la_SOURCES): Remove.
      	(libmyo_client_la_DEPENDENCIES, libmyo_service_la_DEPENDENCIES): Remove.
      	(libmyo_client_la_CPPFLAGS, libmyo_service_la_CPPFLAGS): Remove.
      	(libmyo_client_la_LDFLAGS, libmyo_service_la_LDFLAGS): Remove.
      	* Makefile.in: Regenerate.
      	* doc/doxygen/header.tex: Merge from upstream, version 20160715
      	<https://openmprtl.org/sites/default/files/liboffload_oss_20160715.tgz>.
      	* runtime/cean_util.cpp: Likewise.
      	* runtime/cean_util.h: Likewise.
      	* runtime/coi/coi_client.cpp: Likewise.
      	* runtime/coi/coi_client.h: Likewise.
      	* runtime/coi/coi_server.cpp: Likewise.
      	* runtime/coi/coi_server.h: Likewise.
      	* runtime/compiler_if_host.cpp: Likewise.
      	* runtime/compiler_if_host.h: Likewise.
      	* runtime/compiler_if_target.cpp: Likewise.
      	* runtime/compiler_if_target.h: Likewise.
      	* runtime/dv_util.cpp: Likewise.
      	* runtime/dv_util.h: Likewise.
      	* runtime/liboffload_error.c: Likewise.
      	* runtime/liboffload_error_codes.h: Likewise.
      	* runtime/liboffload_msg.c: Likewise.
      	* runtime/liboffload_msg.h: Likewise.
      	* runtime/mic_lib.f90: Likewise.
      	* runtime/offload.h: Likewise.
      	* runtime/offload_common.cpp: Likewise.
      	* runtime/offload_common.h: Likewise.
      	* runtime/offload_engine.cpp: Likewise.
      	* runtime/offload_engine.h: Likewise.
      	* runtime/offload_env.cpp: Likewise.
      	* runtime/offload_env.h: Likewise.
      	* runtime/offload_host.cpp: Likewise.
      	* runtime/offload_host.h: Likewise.
      	* runtime/offload_iterator.h: Likewise.
      	* runtime/offload_myo_host.cpp: Likewise.
      	* runtime/offload_myo_host.h: Likewise.
      	* runtime/offload_myo_target.cpp: Likewise.
      	* runtime/offload_myo_target.h: Likewise.
      	* runtime/offload_omp_host.cpp: Likewise.
      	* runtime/offload_omp_target.cpp: Likewise.
      	* runtime/offload_orsl.cpp: Likewise.
      	* runtime/offload_orsl.h: Likewise.
      	* runtime/offload_table.cpp: Likewise.
      	* runtime/offload_table.h: Likewise.
      	* runtime/offload_target.cpp: Likewise.
      	* runtime/offload_target.h: Likewise.
      	* runtime/offload_target_main.cpp: Likewise.
      	* runtime/offload_timer.h: Likewise.
      	* runtime/offload_timer_host.cpp: Likewise.
      	* runtime/offload_timer_target.cpp: Likewise.
      	* runtime/offload_trace.cpp: Likewise.
      	* runtime/offload_trace.h: Likewise.
      	* runtime/offload_util.cpp: Likewise.
      	* runtime/offload_util.h: Likewise.
      	* runtime/ofldbegin.cpp: Likewise.
      	* runtime/ofldend.cpp: Likewise.
      	* runtime/orsl-lite/include/orsl-lite.h: Likewise.
      	* runtime/orsl-lite/lib/orsl-lite.c: Likewise.
      	* runtime/use_mpss2.txt: Remove.
      	* include/coi/common/COIEngine_common.h: Merge from upstream, MPSS
      	version 3.7.1
      	<http://registrationcenter-download.intel.com/akdlm/irc_nas/9226/
      	mpss-3.7.1-linux.tar>.
      	* include/coi/common/COIEvent_common.h: Likewise.
      	* include/coi/common/COIMacros_common.h: Likewise.
      	* include/coi/common/COIPerf_common.h: Likewise.
      	* include/coi/common/COIResult_common.h: Likewise.
      	* include/coi/common/COISysInfo_common.h: Likewise.
      	* include/coi/common/COITypes_common.h: Likewise.
      	* include/coi/sink/COIBuffer_sink.h: Likewise.
      	* include/coi/sink/COIPipeline_sink.h: Likewise.
      	* include/coi/sink/COIProcess_sink.h: Likewise.
      	* include/coi/source/COIBuffer_source.h: Likewise.
      	* include/coi/source/COIEngine_source.h: Likewise.
      	* include/coi/source/COIEvent_source.h: Likewise.
      	* include/coi/source/COIPipeline_source.h: Likewise.
      	* include/coi/source/COIProcess_source.h: Likewise.
      	* include/myo/myo.h: Remove.
      	* include/myo/myoimpl.h: Remove.
      	* include/myo/myotypes.h: Remove.
      	* plugin/Makefile.am (AM_LDFLAGS): Remove -lmyo-service.
      	* plugin/Makefile.in: Regenerate.
      	* plugin/libgomp-plugin-intelmic.cpp (LD_LIBRARY_PATH_ENV): Remove.
      	(MIC_LD_LIBRARY_PATH_ENV): Remove.
      	(init): Do not set MIC_LD_LIBRARY_PATH.  Now liboffloadmic uses only
      	LD_LIBRARY_PATH.
      	* plugin/offload_target_main.cpp: Update copyright years.
      	* runtime/emulator/coi_common.h: Likewise.
      	* runtime/emulator/coi_device.cpp: Likewise.
      	* runtime/emulator/coi_device.h: Likewise.
      	* runtime/emulator/coi_host.cpp: Likewise.
      	(COIBufferCreate): Allow COI_BUFFER_OPENCL.
      	(COIEngineGetInfo): Return COI_DEVICE_KNL instead of COI_ISA_x86_64.
      	* runtime/emulator/coi_host.h: Update copyright years.
      	* runtime/emulator/coi_version_asm.h: Likewise.
      	* runtime/emulator/coi_version_linker_script.map: Likewise.
      	* runtime/emulator/myo_client.cpp: Remove.
      	* runtime/emulator/myo_service.cpp: Remove.
      	* runtime/emulator/myo_service.h: Remove.
      	* runtime/emulator/myo_version_asm.h: Remove.
      	* runtime/emulator/myo_version_linker_script.map: Remove.
      
      From-SVN: r238603
      Ilya Verbin committed
  9. 26 May, 2016 1 commit
    • target.c (gomp_device_copy): New function. · 6ce13072
      libgomp/
      2016-05-26  Chung-Lin Tang  <cltang@codesourcery.com>
      
      	* target.c (gomp_device_copy): New function.
      	(gomp_copy_host2dev): Likewise.
      	(gomp_copy_dev2host): Likewise.
      	(gomp_free_device_memory): Likewise.
      	(gomp_map_vars_existing): Adjust to call gomp_copy_host2dev.
      	(gomp_map_pointer): Likewise.
      	(gomp_map_vars): Adjust to call gomp_copy_host2dev, handle
      	NULL value from alloc_func plugin hook.
      	(gomp_unmap_tgt): Adjust to call gomp_free_device_memory.
      	(gomp_copy_from_async): Adjust to call gomp_copy_dev2host.
      	(gomp_unmap_vars): Likewise.
      	(gomp_update): Adjust to call gomp_copy_dev2host and
      	gomp_copy_host2dev functions.
      	(gomp_unload_image_from_device): Handle false value from
      	unload_image_func plugin hook.
      	(gomp_init_device): Handle false value from init_device_func
      	plugin hook.
      	(gomp_exit_data): Adjust to call gomp_copy_dev2host.
      	(omp_target_free): Adjust to call gomp_free_device_memory.
      	(omp_target_memcpy): Handle return values from host2dev_func,
      	dev2host_func, and dev2dev_func plugin hooks.
      	(omp_target_memcpy_rect_worker): Likewise.
      	(gomp_target_fini): Handle false value from fini_device_func
      	plugin hook.
      	* libgomp.h (struct gomp_device_descr): Adjust return type of
      	init_device_func, fini_device_func, unload_image_func, free_func,
      	dev2host_func,host2dev_func, and dev2dev_func plugin hooks to 'bool'.
      	* oacc-init.c (acc_shutdown_1): Handle false value from
      	fini_device_func plugin hook.
      	* oacc-host.c (host_init_device): Change return type to bool.
      	(host_fini_device): Likewise.
      	(host_unload_image): Likewise.
      	(host_free): Likewise.
      	(host_dev2host): Likewise.
      	(host_host2dev): Likewise.
      	* oacc-mem.c (acc_free): Handle plugin hook fatal error case.
      	(acc_memcpy_to_device): Likewise.
      	(acc_memcpy_from_device): Likewise.
      	(delete_copyout): Add libfnname parameter, handle free_func
      	hook fatal error case.
      	(acc_delete): Adjust delete_copyout call.
      	(acc_copyout): Likewise.
      	(update_dev_host): Move gomp_mutex_unlock to after
      	host2dev/dev2host hook calls.
      
      	* plugin/plugin-hsa.c (hsa_warn): Adjust 'hsa_error' local variable
      	to 'hsa_error_msg', for clarity.
      	(hsa_fatal): Likewise.
      	(hsa_error): New function.
      	(init_hsa_context): Change return type to bool, adjust to return
      	false on error.
      	(GOMP_OFFLOAD_get_num_devices): Adjust to handle init_hsa_context
      	return value.
      	(GOMP_OFFLOAD_init_device): Change return type to bool, adjust to
      	return false on error.
      	(get_agent_info): Adjust to return NULL on error.
      	(destroy_hsa_program): Change return type to bool, adjust to
      	return false on error.
      	(GOMP_OFFLOAD_load_image): Adjust to return -1 on error.
      	(destroy_module): Change return type to bool, adjust to
      	return false on error.
      	(GOMP_OFFLOAD_unload_image): Likewise.
      	(GOMP_OFFLOAD_fini_device): Likewise.
      	(GOMP_OFFLOAD_alloc): Change to return NULL when called.
      	(GOMP_OFFLOAD_free): Change to return false when called.
      	(GOMP_OFFLOAD_dev2host): Likewise.
      	(GOMP_OFFLOAD_host2dev): Likewise.
      	(GOMP_OFFLOAD_dev2dev): Likewise.
      
      	* plugin/plugin-nvptx.c (CUDA_CALL_ERET): New convenience macro.
      	(CUDA_CALL): Likewise.
      	(CUDA_CALL_ASSERT): Likewise.
      	(map_init): Change return type to bool, use CUDA_CALL* macros.
      	(map_fini): Likewise.
      	(init_streams_for_device): Change return type to bool, adjust
      	call to map_init.
      	(fini_streams_for_device): Change return type to bool, adjust
      	call to map_fini.
      	(select_stream_for_async): Release stream_lock before calls to
      	GOMP_PLUGIN_fatal, adjust call to map_init.
      	(nvptx_init): Use CUDA_CALL* macros.
      	(nvptx_attach_host_thread_to_device): Change return type to bool,
      	use CUDA_CALL* macros.
      	(nvptx_open_device): Use CUDA_CALL* macros.
      	(nvptx_close_device): Change return type to bool, use CUDA_CALL*
      	macros.
      	(nvptx_get_num_devices): Use CUDA_CALL* macros.
      	(link_ptx): Change return type to bool, use CUDA_CALL* macros.
      	(nvptx_exec): Use CUDA_CALL* macros.
      	(nvptx_alloc): Use CUDA_CALL* macros.
      	(nvptx_free): Change return type to bool, use CUDA_CALL* macros.
      	(nvptx_host2dev): Likewise.
      	(nvptx_dev2host): Likewise.
      	(nvptx_wait): Use CUDA_CALL* macros.
      	(nvptx_wait_async): Likewise.
      	(nvptx_wait_all): Likewise.
      	(nvptx_wait_all_async): Likewise.
      	(nvptx_set_cuda_stream): Adjust order of stream_lock acquire,
      	use CUDA_CALL* macros, adjust call to map_fini.
      	(GOMP_OFFLOAD_init_device): Change return type to bool,
      	adjust code accordingly.
      	(GOMP_OFFLOAD_fini_device): Likewise.
      	(GOMP_OFFLOAD_load_image): Adjust calls to
      	nvptx_attach_host_thread_to_device/link_ptx to handle errors,
      	use CUDA_CALL* macros.
      	(GOMP_OFFLOAD_unload_image): Change return type to bool, adjust
      	return code.
      	(GOMP_OFFLOAD_alloc): Adjust calls to code to handle error return.
      	(GOMP_OFFLOAD_free): Change return type to bool, adjust calls to
      	handle error return.
      	(GOMP_OFFLOAD_dev2host): Likewise.
      	(GOMP_OFFLOAD_host2dev): Likewise.
      	(GOMP_OFFLOAD_openacc_register_async_cleanup): Use CUDA_CALL* macros.
      	(GOMP_OFFLOAD_openacc_create_thread_data): Likewise.
      
      liboffloadmic/
      2016-05-26  Chung-Lin Tang  <cltang@codesourcery.com>
      
      	* plugin/libgomp-plugin-intelmic.cpp (offload): Change return type
      	to bool, adjust return code.
      	(GOMP_OFFLOAD_init_device): Likewise.
      	(GOMP_OFFLOAD_fini_device): Likewise.
      	(get_target_table): Likewise.
      	(offload_image): Likwise.
      	(GOMP_OFFLOAD_load_image): Adjust call to offload_image(), change
      	to return -1 on error.
      	(GOMP_OFFLOAD_unload_image): Change return type to bool, adjust return
      	code.
      	(GOMP_OFFLOAD_alloc): Likewise.
      	(GOMP_OFFLOAD_free): Likewise.
      	(GOMP_OFFLOAD_host2dev): Likewise.
      	(GOMP_OFFLOAD_dev2host): Likewise.
      	(GOMP_OFFLOAD_dev2dev): Likewise.
      
      From-SVN: r236768
      Chung-Lin Tang committed
  10. 20 Jan, 2016 1 commit
  11. 19 Jan, 2016 1 commit
    • Merge of HSA · b2b40051
      2016-01-19  Martin Jambor  <mjambor@suse.cz>
      	    Martin Liska  <mliska@suse.cz>
      	    Michael Matz <matz@suse.de>
      
      libgomp/
      	* plugin/Makefrag.am: Add HSA plugin requirements.
      	* plugin/configfrag.ac (HSA_RUNTIME_INCLUDE): New variable.
      	(HSA_RUNTIME_LIB): Likewise.
      	(HSA_RUNTIME_CPPFLAGS): Likewise.
      	(HSA_RUNTIME_INCLUDE): New substitution.
      	(HSA_RUNTIME_LIB): Likewise.
      	(HSA_RUNTIME_LDFLAGS): Likewise.
      	(hsa-runtime): New configure option.
      	(hsa-runtime-include): Likewise.
      	(hsa-runtime-lib): Likewise.
      	(PLUGIN_HSA): New substitution variable.
      	Fill HSA_RUNTIME_INCLUDE and HSA_RUNTIME_LIB according to the new
      	configure options.
      	(PLUGIN_HSA_CPPFLAGS): Likewise.
      	(PLUGIN_HSA_LDFLAGS): Likewise.
      	(PLUGIN_HSA_LIBS): Likewise.
      	Check that we have access to HSA run-time.
      	* libgomp-plugin.h (offload_target_type): New element
      	OFFLOAD_TARGET_TYPE_HSA.
      	* libgomp.h (gomp_target_task): New fields firstprivate_copies and
      	args.
      	(bool gomp_create_target_task): Updated.
      	(gomp_device_descr): Extra parameter of run_func and async_run_func,
      	new field can_run_func.
      	* libgomp_g.h (GOMP_target_ext): Update prototype.
      	* oacc-host.c (host_run): Added a new parameter args.
      	* target.c (calculate_firstprivate_requirements): New function.
      	(copy_firstprivate_data): Likewise.
      	(gomp_target_fallback_firstprivate): Use them.
      	(gomp_target_unshare_firstprivate): New function.
      	(gomp_get_target_fn_addr): Allow returning NULL for shared memory
      	devices.
      	(GOMP_target): Do host fallback for all shared memory devices.  Do not
      	pass any args to plugins.
      	(GOMP_target_ext): Introduce device-specific argument parameter args.
      	Allow host fallback if device shares memory.  Do not remap data if
      	device has shared memory.
      	(gomp_target_task_fn): Likewise.  Also treat shared memory devices
      	like host fallback for mappings.
      	(GOMP_target_data): Treat shared memory devices like host fallback.
      	(GOMP_target_data_ext): Likewise.
      	(GOMP_target_update): Likewise.
      	(GOMP_target_update_ext): Likewise.  Also pass NULL as args to
      	gomp_create_target_task.
      	(GOMP_target_enter_exit_data): Likewise.
      	(omp_target_alloc): Treat shared memory devices like host fallback.
      	(omp_target_free): Likewise.
      	(omp_target_is_present): Likewise.
      	(omp_target_memcpy): Likewise.
      	(omp_target_memcpy_rect): Likewise.
      	(omp_target_associate_ptr): Likewise.
      	(gomp_load_plugin_for_device): Also load can_run.
      	* task.c (GOMP_PLUGIN_target_task_completion): Free
      	firstprivate_copies.
      	(gomp_create_target_task): Accept new argument args and store it to
      	ttask.
      	* plugin/plugin-hsa.c: New file.
      
      gcc/
      	* Makefile.in (OBJS): Add new source files.
      	(GTFILES): Add hsa.c.
      	* common.opt (disable_hsa): New variable.
      	(-Whsa): New warning.
      	* config.in (ENABLE_HSA): New.
      	* configure.ac: Treat hsa differently from other accelerators.
      	(OFFLOAD_TARGETS): Define ENABLE_OFFLOADING according to
      	$enable_offloading.
      	(ENABLE_HSA): Define ENABLE_HSA according to $enable_hsa.
      	* doc/install.texi (Configuration): Document --with-hsa-runtime,
      	--with-hsa-runtime-include, --with-hsa-runtime-lib and
      	--with-hsa-kmt-lib.
      	* doc/invoke.texi (-Whsa): Document.
      	(hsa-gen-debug-stores): Likewise.
      	* lto-wrapper.c (compile_images_for_offload_targets): Do not attempt
      	to invoke offload compiler for hsa acclerator.
      	* opts.c (common_handle_option): Determine whether HSA offloading
      	should be performed.
      	* params.def (PARAM_HSA_GEN_DEBUG_STORES): New parameter.
      	* builtin-types.def (BT_FN_VOID_UINT_PTR_INT_PTR): New.
      	(BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_INT_INT): Removed.
      	(BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_PTR): New.
      	* gimple-low.c (lower_stmt): Also handle GIMPLE_OMP_GRID_BODY.
      	* gimple-pretty-print.c (dump_gimple_omp_for): Also handle
      	GF_OMP_FOR_KIND_GRID_LOOP.
      	(dump_gimple_omp_block): Also handle GIMPLE_OMP_GRID_BODY.
      	(pp_gimple_stmt_1): Likewise.
      	* gimple-walk.c (walk_gimple_stmt): Likewise.
      	* gimple.c (gimple_build_omp_grid_body): New function.
      	(gimple_copy): Also handle GIMPLE_OMP_GRID_BODY.
      	* gimple.def (GIMPLE_OMP_GRID_BODY): New.
      	* gimple.h (enum gf_mask): Added GF_OMP_PARALLEL_GRID_PHONY,
      	GF_OMP_FOR_KIND_GRID_LOOP, GF_OMP_FOR_GRID_PHONY and
      	GF_OMP_TEAMS_GRID_PHONY.
      	(gimple_statement_omp_single_layout): Updated comments.
      	(gimple_build_omp_grid_body): New function.
      	(gimple_has_substatements): Also handle GIMPLE_OMP_GRID_BODY.
      	(gimple_omp_for_grid_phony): New function.
      	(gimple_omp_for_set_grid_phony): Likewise.
      	(gimple_omp_parallel_grid_phony): Likewise.
      	(gimple_omp_parallel_set_grid_phony): Likewise.
      	(gimple_omp_teams_grid_phony): Likewise.
      	(gimple_omp_teams_set_grid_phony): Likewise.
      	(gimple_return_set_retbnd): Also handle GIMPLE_OMP_GRID_BODY.
      	* omp-builtins.def (BUILT_IN_GOMP_OFFLOAD_REGISTER): New.
      	(BUILT_IN_GOMP_OFFLOAD_UNREGISTER): Likewise.
      	(BUILT_IN_GOMP_TARGET): Updated type.
      	* omp-low.c: Include symbol-summary.h, hsa.h and params.h.
      	(adjust_for_condition): New function.
      	(get_omp_for_step_from_incr): Likewise.
      	(extract_omp_for_data): Moved parts to adjust_for_condition and
      	get_omp_for_step_from_incr.
      	(build_outer_var_ref): Handle GIMPLE_OMP_GRID_BODY.
      	(fixup_child_record_type): Bail out if receiver_decl is NULL.
      	(scan_sharing_clauses): Handle OMP_CLAUSE__GRIDDIM_.
      	(scan_omp_parallel): Do not create child functions for phony
      	constructs.
      	(check_omp_nesting_restrictions): Handle GIMPLE_OMP_GRID_BODY.
      	(scan_omp_1_op): Checking assert we are not remapping to
      	ERROR_MARK.  Also also handle GIMPLE_OMP_GRID_BODY.
      	(parallel_needs_hsa_kernel_p): New function.
      	(expand_parallel_call): Register apprpriate parallel child
      	functions as HSA kernels.
      	(grid_launch_attributes_trees): New type.
      	(grid_attr_trees): New variable.
      	(grid_create_kernel_launch_attr_types): New function.
      	(grid_insert_store_range_dim): Likewise.
      	(grid_get_kernel_launch_attributes): Likewise.
      	(get_target_argument_identifier_1): Likewise.
      	(get_target_argument_identifier): Likewise.
      	(get_target_argument_value): Likewise.
      	(push_target_argument_according_to_value): Likewise.
      	(get_target_arguments): Likewise.
      	(expand_omp_target): Call get_target_arguments instead of looking
      	up for teams and thread limit.
      	(grid_expand_omp_for_loop): New function.
      	(grid_arg_decl_map): New type.
      	(grid_remap_kernel_arg_accesses): New function.
      	(grid_expand_target_kernel_body): New function.
      	(expand_omp): Call it.
      	(lower_omp_for): Do not emit phony constructs.
      	(lower_omp_taskreg): Do not emit phony constructs but create for them
      	a temporary variable receiver_decl.
      	(lower_omp_taskreg): Do not emit phony constructs.
      	(lower_omp_teams): Likewise.
      	(lower_omp_grid_body): New function.
      	(lower_omp_1): Call it.
      	(grid_reg_assignment_to_local_var_p): New function.
      	(grid_seq_only_contains_local_assignments): Likewise.
      	(grid_find_single_omp_among_assignments_1): Likewise.
      	(grid_find_single_omp_among_assignments): Likewise.
      	(grid_find_ungridifiable_statement): Likewise.
      	(grid_target_follows_gridifiable_pattern): Likewise.
      	(grid_remap_prebody_decls): Likewise.
      	(grid_copy_leading_local_assignments): Likewise.
      	(grid_process_kernel_body_copy): Likewise.
      	(grid_attempt_target_gridification): Likewise.
      	(grid_gridify_all_targets_stmt): Likewise.
      	(grid_gridify_all_targets): Likewise.
      	(execute_lower_omp): Call grid_gridify_all_targets.
      	(make_gimple_omp_edges): Handle GIMPLE_OMP_GRID_BODY.
      	* tree-core.h (omp_clause_code): Added OMP_CLAUSE__GRIDDIM_.
      	(tree_omp_clause): Added union field dimension.
      	* tree-pretty-print.c (dump_omp_clause): Handle OMP_CLAUSE__GRIDDIM_.
      	* tree.c (omp_clause_num_ops): Added number of arguments of
      	OMP_CLAUSE__GRIDDIM_.
      	(omp_clause_code_name): Added name of OMP_CLAUSE__GRIDDIM_.
      	(walk_tree_1): Handle OMP_CLAUSE__GRIDDIM_.
      	* tree.h (OMP_CLAUSE_GRIDDIM_DIMENSION): New.
      	(OMP_CLAUSE_SET_GRIDDIM_DIMENSION): Likewise.
      	(OMP_CLAUSE_GRIDDIM_SIZE): Likewise.
      	(OMP_CLAUSE_GRIDDIM_GROUP): Likewise.
      	* passes.def: Schedule pass_ipa_hsa and pass_gen_hsail.
      	* tree-pass.h (make_pass_gen_hsail): Declare.
      	(make_pass_ipa_hsa): Likewise.
      	* ipa-hsa.c: New file.
      	* lto-section-in.c (lto_section_name): Add hsa section name.
      	* lto-streamer.h (lto_section_type): Add hsa section.
      	* timevar.def (TV_IPA_HSA): New.
              * hsa-brig-format.h: New file.
      	* hsa-brig.c: New file.
      	* hsa-dump.c: Likewise.
      	* hsa-gen.c: Likewise.
      	* hsa.c: Likewise.
      	* hsa.h: Likewise.
      	* toplev.c (compile_file): Call hsa_output_brig.
      	* hsa-regalloc.c: New file.
      
      gcc/fortran/
      	* types.def (BT_FN_VOID_UINT_PTR_INT_PTR): New.
      	(BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_INT_INT): Removed.
      	(BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_PTR): New.
      
      gcc/lto/
      	* lto-partition.c: Include "hsa.h"
      	(add_symbol_to_partition_1): Put hsa implementations into the
      	same partition as host implementations.
      
      liboffloadmic/
      	* plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_async_run): New
      	unused parameter.
      	(GOMP_OFFLOAD_run): Likewise.
      
      include/
      	* gomp-constants.h (GOMP_DEVICE_HSA): New macro.
      	(GOMP_VERSION_HSA): Likewise.
      	(GOMP_TARGET_ARG_DEVICE_MASK): Likewise.
      	(GOMP_TARGET_ARG_DEVICE_ALL): Likewise.
      	(GOMP_TARGET_ARG_SUBSEQUENT_PARAM): Likewise.
      	(GOMP_TARGET_ARG_ID_MASK): Likewise.
      	(GOMP_TARGET_ARG_NUM_TEAMS): Likewise.
      	(GOMP_TARGET_ARG_THREAD_LIMIT): Likewise.
      	(GOMP_TARGET_ARG_VALUE_SHIFT): Likewise.
      	(GOMP_TARGET_ARG_HSA_KERNEL_ATTRIBUTES): Likewise.
      
      From-SVN: r232549
      Martin Jambor committed
  12. 14 Dec, 2015 1 commit
    • libgomp.h (gomp_device_state): New enum. · d84ffc0a
      libgomp/
      	* libgomp.h (gomp_device_state): New enum.
      	(struct gomp_device_descr): Replace is_initialized with state.
      	(gomp_fini_device): Remove declaration.
      	* oacc-host.c (host_dispatch): Use state instead of is_initialized.
      	* oacc-init.c (acc_init_1): Use state instead of is_initialized.
      	(acc_shutdown_1): Likewise.  Inline gomp_fini_device.
      	(acc_set_device_type): Use state instead of is_initialized.
      	(acc_set_device_num): Likewise.
      	* target.c (resolve_device): Use state instead of is_initialized.
      	Do not initialize finalized device.
      	(gomp_map_vars): Do nothing if device is finalized.
      	(gomp_unmap_vars): Likewise.
      	(gomp_update): Likewise.
      	(GOMP_offload_register_ver): Use state instead of is_initialized.
      	(GOMP_offload_unregister_ver): Likewise.
      	(gomp_init_device): Likewise.
      	(gomp_unload_device): Likewise.
      	(gomp_fini_device): Remove.
      	(gomp_get_target_fn_addr): Do nothing if device is finalized.
      	(GOMP_target): Go to host fallback if device is finalized.
      	(GOMP_target_ext): Likewise.
      	(gomp_exit_data): Do nothing if device is finalized.
      	(gomp_target_task_fn): Go to host fallback if device is finalized.
      	(gomp_target_fini): New static function.
      	(gomp_target_init): Use state instead of is_initialized.
      	Call gomp_target_fini at exit.
      liboffloadmic/
      	* plugin/libgomp-plugin-intelmic.cpp (unregister_main_image): Remove.
      	(register_main_image): Do not call unregister_main_image at exit.
      	(GOMP_OFFLOAD_fini_device): Allow for OpenMP.  Unregister main image.
      
      From-SVN: r231623
      Ilya Verbin committed
  13. 19 Nov, 2015 1 commit
    • libgomp-plugin-intelmic.cpp (struct TargetImageDesc): New. · 4219ddb3
      liboffloadmic/
      	* plugin/libgomp-plugin-intelmic.cpp (struct TargetImageDesc): New.
      	(ImgDescMap): New typedef.
      	(image_descriptors): New static var.
      	(init): Allocate image_descriptors.
      	(offload): Remove vars2 argument.  Pass NULL to __offload_offload1
      	instead of vars2.
      	(unregister_main_image): New static function.
      	(register_main_image): Call unregister_main_image at exit.
      	(GOMP_OFFLOAD_init_device): Print device number, fix offload args.
      	(GOMP_OFFLOAD_fini_device): Likewise.
      	(get_target_table): Remove vd1g and vd2g, don't pass them to offload.
      	(offload_image): Remove declaration of the struct TargetImage.
      	Free table.  Insert new descriptor into image_descriptors.
      	(GOMP_OFFLOAD_unload_image): Call __offload_unregister_image, free
      	the corresponding descriptor, and remove it from address_table and
      	image_descriptors.
      	(GOMP_OFFLOAD_alloc): Print device number, remove vd1g.
      	(GOMP_OFFLOAD_free): Likewise.
      	(GOMP_OFFLOAD_host2dev): Print device number, remove vd1g and vd2g.
      	(GOMP_OFFLOAD_dev2host): Likewise.
      	(GOMP_OFFLOAD_run): Print device number, remove vd1g.
      	* plugin/offload_target_main.cpp (__offload_target_table_p1): Remove
      	vd2, don't pass it to __offload_target_enter.
      	(__offload_target_table_p2): Likewise.
      	(__offload_target_alloc): Likewise.
      	(__offload_target_free): Likewise.
      	(__offload_target_host2tgt_p1): Likewise.
      	(__offload_target_host2tgt_p2): Likewise.
      	(__offload_target_tgt2host_p1): Likewise.
      	(__offload_target_tgt2host_p2): Likewise.
      	(__offload_target_run): Likewise.
      	(__offload_target_tgt2tgt): Remove vd1g, don't pass it to
      	__offload_target_enter.
      
      From-SVN: r230614
      Ilya Verbin committed
  14. 14 Nov, 2015 1 commit
    • omp-low.c (lower_omp_ordered): Add argument to GOMP_SMD_ORDERED_* internal calls - 0 if... · e4606348
      gcc/
      2015-11-14  Jakub Jelinek  <jakub@redhat.com>
      
      	* omp-low.c (lower_omp_ordered): Add argument to GOMP_SMD_ORDERED_*
      	internal calls - 0 if ordered simd and 1 for ordered threads simd.
      	* tree-vectorizer.c (adjust_simduid_builtins): If GOMP_SIMD_ORDERED_*
      	argument is 1, replace it with GOMP_ordered_* call instead of removing
      	it.
      gcc/c/
      2015-11-14  Jakub Jelinek  <jakub@redhat.com>
      
      	* c-typeck.c (c_finish_omp_clauses): Don't mark
      	GOMP_MAP_FIRSTPRIVATE_POINTER decls addressable.
      gcc/cp/
      2015-11-14  Jakub Jelinek  <jakub@redhat.com>
      
      	* semantics.c (finish_omp_clauses): Don't mark
      	GOMP_MAP_FIRSTPRIVATE_POINTER decls addressable.
      libgomp/
      2015-11-14  Jakub Jelinek  <jakub@redhat.com>
      	    Aldy Hernandez  <aldyh@redhat.com>
      	    Ilya Verbin  <ilya.verbin@intel.com>
      
      	* ordered.c (gomp_doacross_init, GOMP_doacross_post,
      	GOMP_doacross_wait, gomp_doacross_ull_init, GOMP_doacross_ull_post,
      	GOMP_doacross_ull_wait): For GFS_GUIDED don't divide number of
      	iterators or IV by chunk size.
      	* parallel.c (gomp_resolve_num_threads): Don't assume that
      	if thr->ts.team is non-NULL, then pool must be non-NULL.
      	* libgomp-plugin.h (GOMP_PLUGIN_target_task_completion): Declare.
      	* libgomp.map (GOMP_PLUGIN_1.1): New symbol version, export
      	GOMP_PLUGIN_target_task_completion.
      	* Makefile.am (libgomp_la_SOURCES): Add priority_queue.c.
      	* Makefile.in: Regenerate.
      	* libgomp.h: Shuffle prototypes and forward definitions around so
      	priority queues can be defined.
      	(enum gomp_task_kind): Add GOMP_TASK_ASYNC_RUNNING.
      	(enum gomp_target_task_state): New enum.
      	(struct gomp_target_task): Add state, tgt, task and team fields.
      	(gomp_create_target_task): Change return type to bool, add
      	state argument.
      	(gomp_target_task_fn): Change return type to bool.
      	(struct gomp_device_descr): Add async_run_func.
      	(struct gomp_task): Remove children, next_child, prev_child,
      	next_queue, prev_queue, next_taskgroup, prev_taskgroup.
      	Add pnode field.
      	(struct gomp_taskgroup): Remove children.
      	Add taskgroup_queue.
      	(struct gomp_team): Change task_queue type to a priority queue.
      	(splay_compare): Define inline.
      	(priority_queue_offset): New.
      	(priority_node_to_task): New.
      	(task_to_priority_node): New.
      	* oacc-mem.c: Do not include splay-tree.h.
      	* priority_queue.c: New file.
      	* priority_queue.h: New file.
      	* splay-tree.c: Do not include splay-tree.h.
      	(splay_tree_foreach_internal): New.
      	(splay_tree_foreach): New.
      	* splay-tree.h: Become re-entrant if splay_tree_prefix is defined.
      	(splay_tree_callback): Define typedef.
      	* target.c (splay_compare): Move to libgomp.h.
      	(GOMP_target): Don't adjust *thr in any way around running offloaded
      	task.
      	(GOMP_target_ext): Likewise.  Handle target nowait.
      	(GOMP_target_update_ext, GOMP_target_enter_exit_data): Check
      	return value from gomp_create_target_task, if false, fallthrough
      	as if no dependencies exist.
      	(gomp_target_task_fn): Change return type to bool, return true
      	if the task should have another part scheduled later.  Handle
      	target nowait.
      	(gomp_load_plugin_for_device): Initialize async_run.
      	* task.c (gomp_init_task): Initialize children_queue.
      	(gomp_clear_parent_in_list): New.
      	(gomp_clear_parent_in_tree): New.
      	(gomp_clear_parent): Handle priorities.
      	(GOMP_task): Likewise.
      	(priority_queue_move_task_first,
      	gomp_target_task_completion, GOMP_PLUGIN_target_task_completion):
      	New functions.
      	(gomp_create_target_task): Use priority queues.  Change return type
      	to bool, add state argument, return false if for async
      	{{enter,exit} data,update} constructs no dependencies need to be
      	waited for, handle target nowait.  Set task->fn to NULL instead of
      	gomp_target_task_fn.
      	(verify_children_queue): Remove.
      	(priority_list_upgrade_task): New.
      	(priority_queue_upgrade_task): New.
      	(verify_task_queue): Remove.
      	(priority_list_downgrade_task): New.
      	(priority_queue_downgrade_task): New.
      	(gomp_task_run_pre): Use priority queues.
      	Abstract code out to priority_queue_downgrade_task.
      	(gomp_task_run_post_handle_dependers): Use priority queues.
      	(gomp_task_run_post_remove_parent): Likewise.
      	(gomp_task_run_post_remove_taskgroup): Likewise.
      	(gomp_barrier_handle_tasks): Likewise.  Handle target nowait target
      	tasks specially.
      	(GOMP_taskwait): Likewise.
      	(gomp_task_maybe_wait_for_dependencies): Likewise.  Abstract code to
      	priority-queue_upgrade_task.
      	(GOMP_taskgroup_start): Use priority queues.
      	(GOMP_taskgroup_end): Likewise.  Handle target nowait target tasks
      	specially.  If taskgroup is NULL, and thr->ts.level is 0, act as a
      	barrier.
      	* taskloop.c (GOMP_taskloop): Handle priorities.
      	* team.c (gomp_new_team): Call priority_queue_init.
      	(free_team): Call priority_queue_free.
      	(gomp_free_thread): Call gomp_team_end if thr->ts.team is artificial
      	team created for target nowait in implicit parallel region.
      	(gomp_team_start): For nested check, test thr->ts.level instead of
      	thr->ts.team != NULL.
      	* testsuite/libgomp.c/doacross-3.c: New test.
      	* testsuite/libgomp.c/ordered-5.c: New test.
      	* testsuite/libgomp.c/priority.c: New test.
      	* testsuite/libgomp.c/target-31.c: New test.
      	* testsuite/libgomp.c/target-32.c: New test.
      	* testsuite/libgomp.c/target-33.c: New test.
      	* testsuite/libgomp.c/target-34.c: New test.
      liboffloadmic/
      2015-11-14  Ilya Verbin  <ilya.verbin@intel.com>
      
      	* runtime/offload_host.cpp (task_completion_callback): New
      	variable.
      	(offload_proxy_task_completed_ooo): Call task_completion_callback.
      	(__offload_register_task_callback): New function.
      	* runtime/offload_host.h (__offload_register_task_callback): New
      	declaration.
      	* plugin/libgomp-plugin-intelmic.cpp (offload): Add async_data
      	argument, handle async offloading.
      	(register_main_image): Call register_main_image.
      	(GOMP_OFFLOAD_init_device, get_target_table, GOMP_OFFLOAD_alloc,
      	GOMP_OFFLOAD_free, GOMP_OFFLOAD_host2dev, GOMP_OFFLOAD_dev2host,
      	GOMP_OFFLOAD_dev2dev) Adjust offload callers.
      	(GOMP_OFFLOAD_async_run): New function.
      	(GOMP_OFFLOAD_run): Implement using GOMP_OFFLOAD_async_run.
      
      From-SVN: r230381
      Jakub Jelinek committed
  15. 26 Oct, 2015 1 commit
  16. 13 Oct, 2015 1 commit
    • builtin-types.def (BT_FN_BOOL_UINT_LONGPTR_LONGPTR_LONGPTR, [...]): New. · d9a6bd32
      gcc/
      2015-10-13  Jakub Jelinek  <jakub@redhat.com>
      	    Aldy Hernandez  <aldyh@redhat.com>
      	    Ilya Verbin  <ilya.verbin@intel.com>
      
      	* builtin-types.def (BT_FN_BOOL_UINT_LONGPTR_LONGPTR_LONGPTR,
      	BT_FN_BOOL_UINT_ULLPTR_ULLPTR_ULLPTR,
      	BT_FN_BOOL_UINT_LONGPTR_LONG_LONGPTR_LONGPTR,
      	BT_FN_BOOL_UINT_ULLPTR_ULL_ULLPTR_ULLPTR,
      	BT_FN_VOID_INT_SIZE_PTR_PTR_PTR_UINT_PTR,
      	BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR,
      	BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR_INT,
      	BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_UINT_LONG_INT_LONG_LONG_LONG,
      	BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_UINT_LONG_INT_ULL_ULL_ULL,
      	BT_FN_VOID_LONG_VAR, BT_FN_VOID_ULL_VAR): New.
      	(BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR,
      	BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR,
      	BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR): Remove.
      	* cgraph.h (enum cgraph_simd_clone_arg_type): Add
      	SIMD_CLONE_ARG_TYPE_LINEAR_REF_CONSTANT_STEP,
      	SIMD_CLONE_ARG_TYPE_LINEAR_UVAL_CONSTANT_STEP and
      	SIMD_CLONE_ARG_TYPE_LINEAR_VAL_CONSTANT_STEP.
      	(struct cgraph_simd_clone_arg): Adjust comment.
      	* coretypes.h (struct gomp_ordered): New forward decl.
      	* gimple.c (gimple_build_omp_critical): Add CLAUSES argument,
      	set critical clauses to it.
      	(gimple_build_omp_ordered): Return gomp_ordered * instead of
      	gimple *.  Add CLAUSES argument, set ordered clauses to it.
      	(gimple_copy): Unshare clauses on GIMPLE_OMP_CRITICAL and
      	GIMPLE_OMP_ORDERED.
      	* gimple.def (GIMPLE_OMP_ORDERED): Change from GSS_OMP to
      	GSS_OMP_SINGLE_LAYOUT, move it after GIMPLE_OMP_TEAMS.
      	* gimple.h (enum gf_mask): Add GF_OMP_TASK_TASKLOOP.  Add another bit
      	to GF_OMP_FOR_KIND_MASK mask. Add GF_OMP_FOR_KIND_TASKLOOP, renumber
      	GF_OMP_FOR_KIND_CILKFOR and GF_OMP_FOR_KIND_OACC_LOOP.  Adjust
      	GF_OMP_FOR_SIMD, GF_OMP_FOR_COMBINED and GF_OMP_FOR_COMBINED_INTO.
      	Add another bit to GF_OMP_TARGET_KIND_MASK mask.  Add
      	GF_OMP_TARGET_KIND_ENTER_DATA and GF_OMP_TARGET_KIND_EXIT_DATA,
      	renumber
      	GF_OMP_TARGET_KIND_OACC_{PARALLEL,KERNELS,DATA,UPDATE,ENTER_EXIT_DATA}.
      	(gomp_critical): Add clauses field.
      	(gomp_ordered): New struct.
      	(is_a_helper <gomp_ordered *>::test): New inline.
      	(gimple_build_omp_critical): Add CLAUSES argument.
      	(gimple_build_omp_ordered): Likewise.  Return gomp_ordered *
      	instead of gimple *.
      	(gimple_omp_critical_clauses, gimple_omp_critical_clauses_ptr,
      	gimple_omp_critical_set_clauses, gimple_omp_ordered_clauses,
      	gimple_omp_ordered_clauses_ptr, gimple_omp_ordered_set_clauses,
      	gimple_omp_task_taskloop_p, gimple_omp_task_set_taskloop_p): New
      	inline functions.
      	* gimple-pretty-print.c (dump_gimple_omp_for): Handle taskloop.
      	(dump_gimple_omp_target): Handle enter data and exit data.
      	(dump_gimple_omp_block): Don't handle GIMPLE_OMP_ORDERED here.
      	(dump_gimple_omp_critical): Print clauses.
      	(dump_gimple_omp_ordered): New function.
      	(dump_gimple_omp_task): Handle taskloop.
      	(pp_gimple_stmt_1): Use dump_gimple_omp_ordered for
      	GIMPLE_OMP_ORDERED.
      	* gimple-walk.c (walk_gimple_op): Walk clauses on
      	GIMPLE_OMP_CRITICAL and GIMPLE_OMP_ORDERED.
      	* gimplify.c (enum gimplify_omp_var_data): Add GOVD_MAP_0LEN_ARRAY.
      	(enum omp_region_type): Add ORT_COMBINED_TARGET and ORT_NONE.
      	(struct gimplify_omp_ctx): Add loop_iter_var,
      	target_map_scalars_firstprivate, target_map_pointers_as_0len_arrays
      	and target_firstprivatize_array_bases fields.
      	(delete_omp_context): Release loop_iter_var.
      	(gimplify_bind_expr): Handle ORT_NONE.
      	(maybe_fold_stmt): Adjust check for ORT_TARGET for the addition of
      	ORT_COMBINED_TARGET.
      	(is_gimple_stmt): Return true for OMP_TASKLOOP, OMP_TEAMS and
      	OMP_TARGET{,_DATA,_UPDATE,_ENTER_DATA,_EXIT_DATA}.
      	(omp_firstprivatize_variable): Handle ORT_NONE.  Adjust check for
      	ORT_TARGET for the addition of ORT_COMBINED_TARGET.  Handle
      	ctx->target_map_scalars_firstprivate.
      	(omp_add_variable): Handle ORT_NONE.  Allow map clause together with
      	data sharing clauses.  For data sharing clause with VLA decl
      	on omp target/target data don't add firstprivate for the pointer.
      	Call omp_notice_variable on TYPE_SIZE_UNIT only if it is a DECL_P.
      	(omp_notice_threadprivate_variable): Adjust check for ORT_TARGET for
      	the addition of ORT_COMBINED_TARGET.
      	(omp_notice_variable): Handle ORT_NONE.  Adjust check for ORT_TARGET
      	for the addition of ORT_COMBINED_TARGET.  Handle implicit mapping of
      	pointers as zero length array sections and
      	ctx->target_map_scalars_firstprivate mapping of scalars as firstprivate
      	data sharing.
      	(omp_check_private): Handle omp_member_access_dummy_var vars.
      	(find_decl_expr): New function.
      	(gimplify_scan_omp_clauses): Add CODE argument.  For OMP_CLAUSE_IF
      	complain if OMP_CLAUSE_IF_MODIFIER is present and does not match code.
      	Handle OMP_CLAUSE_GANG separately.  Handle
      	OMP_CLAUSE_{PRIORITY,GRAINSIZE,NUM_TASKS,NOGROUP,THREADS,SIMD,SIMDLEN}
      	clauses.  Diagnose linear clause on combined
      	distribute {, parallel for} simd construct, unless it is the loop
      	iterator.  Handle struct element GOMP_MAP_FIRSTPRIVATE_POINTER.
      	Handle map clauses with COMPONENT_REF.  Initialize
      	ctx->target_map_scalars_firstprivate,
      	ctx->target_firstprivatize_array_bases and
      	ctx->target_map_pointers_as_0len_arrays.  Add firstprivate for
      	linear clause even to target region if combined.  Remove
      	map clauses with GOMP_MAP_FIRSTPRIVATE_POINTER kind from
      	OMP_TARGET_{,ENTER_,EXIT_}DATA.  For GOMP_MAP_FIRSTPRIVATE_POINTER
      	map kind with non-INTEGER_CST OMP_CLAUSE_SIZE firstprivatize the bias.
      	Handle OMP_CLAUSE_DEPEND_{SINK,SOURCE}.  Handle
      	OMP_CLAUSE_{{USE,IS}_DEVICE_PTR,DEFAULTMAP,HINT}.
      	For linear clause on worksharing loop combined with parallel add
      	shared clause on the parallel.  Handle OMP_CLAUSE_REDUCTION
      	with MEM_REF OMP_CLAUSE_DECL.  Set DECL_NAME on
      	omp_member_access_dummy_var vars.  Add lastprivate clause to outer
      	taskloop if needed.
      	(gimplify_adjust_omp_clauses_1): Handle GOVD_MAP_0LEN_ARRAY.
      	If gimplify_omp_ctxp->target_firstprivatize_array_bases, use
      	GOMP_MAP_FIRSTPRIVATE_POINTER map kind instead of
      	GOMP_MAP_POINTER.
      	(gimplify_adjust_omp_clauses): Add CODE argument.  Handle removal
      	of GOMP_MAP_FIRSTPRIVATE_POINTER struct elements for struct not seen
      	in target body.  Handle removal of struct mapping if struct is not
      	seen in target body.  Remove GOMP_MAP_STRUCT map clause on
      	OMP_TARGET_EXIT_DATA.  Adjust check for ORT_TARGET for the
      	addition of ORT_COMBINED_TARGET.  Use GOMP_MAP_FIRSTPRIVATE_POINTER
      	instead of GOMP_MAP_POINTER if ctx->target_firstprivatize_array_bases
      	for VLAs.  Set OMP_CLAUSE_MAP_PRIVATE if both data sharing and map
      	clause appear together.  Handle
      	OMP_CLAUSE_{{USE,IS}_DEVICE_PTR,DEFAULTMAP,HINT}.  Don't remove map
      	clause if it has map-type-modifier always.  Handle
      	OMP_CLAUSE_{PRIORITY,GRAINSIZE,NUM_TASKS,NOGROUP,THREADS,SIMD,SIMDLEN}
      	clauses.
      	(gimplify_oacc_cache, gimplify_omp_parallel, gimplify_omp_task):
      	Adjust gimplify_scan_omp_clauses and gimplify_adjust_omp_clauses
      	callers.
      	(gimplify_omp_for): Likewise.  Handle OMP_TASKLOOP.  Initialize
      	loop_iter_var.  Use OMP_FOR_ORIG_DECLS.  Fix handling of lastprivate
      	iterators in doacross loops.
      	(gimplify_omp_workshare): Adjust gimplify_scan_omp_clauses and
      	gimplify_adjust_omp_clauses callers.  Use ORT_COMBINED_TARGET
      	for OMP_TARGET_COMBINED.  Adjust check for ORT_TARGET
      	for the addition of ORT_COMBINED_TARGET.
      	(gimplify_omp_target_update): Adjust gimplify_scan_omp_clauses and
      	gimplify_adjust_omp_clauses callers.  Handle OMP_TARGET_ENTER_DATA
      	and OMP_TARGET_EXIT_DATA.
      	(gimplify_omp_ordered): New function.
      	(gimplify_expr): Handle OMP_TASKLOOP, OMP_TARGET_ENTER_DATA and
      	OMP_TARGET_EXIT_DATA.  Use gimplify_omp_ordered for OMP_ORDERED.
      	Gimplify clauses on OMP_CRITICAL.
      	* internal-fn.c (expand_GOMP_SIMD_ORDERED_START,
      	expand_GOMP_SIMD_ORDERED_END): New functions.
      	* internal-fn.def (GOMP_SIMD_ORDERED_START,
      	GOMP_SIMD_ORDERED_END): New internal functions.
      	* omp-builtins.def (BUILT_IN_GOMP_LOOP_DOACROSS_STATIC_START,
      	BUILT_IN_GOMP_LOOP_DOACROSS_DYNAMIC_START,
      	BUILT_IN_GOMP_LOOP_DOACROSS_GUIDED_START,
      	BUILT_IN_GOMP_LOOP_DOACROSS_RUNTIME_START,
      	BUILT_IN_GOMP_LOOP_ULL_DOACROSS_STATIC_START,
      	BUILT_IN_GOMP_LOOP_ULL_DOACROSS_DYNAMIC_START,
      	BUILT_IN_GOMP_LOOP_ULL_DOACROSS_GUIDED_START,
      	BUILT_IN_GOMP_LOOP_ULL_DOACROSS_RUNTIME_START,
      	BUILT_IN_GOMP_DOACROSS_POST, BUILT_IN_GOMP_DOACROSS_WAIT,
      	BUILT_IN_GOMP_DOACROSS_ULL_POST, BUILT_IN_GOMP_DOACROSS_ULL_WAIT,
      	BUILT_IN_GOMP_TARGET_ENTER_EXIT_DATA, BUILT_IN_GOMP_TASKLOOP,
      	BUILT_IN_GOMP_TASKLOOP_ULL): New built-ins.
      	(BUILT_IN_GOMP_TASK): Add INT argument to the end.
      	(BUILT_IN_GOMP_TARGET): Rename from GOMP_target to GOMP_target_41,
      	adjust type.
      	(BUILT_IN_GOMP_TARGET_DATA): Rename from GOMP_target_data to
      	GOMP_target_data_41, adjust type.
      	(BUILT_IN_GOMP_TARGET_UPDATE): Rename from GOMP_target_update to
      	GOMP_target_update_41, adjust type.
      	* omp-low.c (struct omp_region): Adjust comments, add ord_stmt
      	field.
      	(struct omp_for_data): Add ordered and simd_schedule fields.
      	(omp_member_access_dummy_var, unshare_and_remap_1,
      	unshare_and_remap, is_taskloop_ctx): New functions.
      	(is_taskreg_ctx): Use is_parallel_ctx and is_task_ctx.
      	(extract_omp_for_data): Handle taskloops and doacross loops
      	and simd schedule modifier.
      	(omp_adjust_chunk_size): New function.
      	(get_ws_args_for): Use it.
      	(lookup_sfield): Change first argument to splay_tree_key,
      	add overload with first argument tree.
      	(maybe_lookup_field): Likewise.
      	(use_pointer_for_field): Handle omp_member_access_dummy_var.
      	(omp_copy_decl_2): If var is TREE_ADDRESSABLE listed in
      	task_shared_vars, clear TREE_ADDRESSABLE on the copy.
      	(build_outer_var_ref): Add LASTPRIVATE argument, handle
      	taskloops and omp_member_access_dummy_var vars.
      	(build_sender_ref): Change first argument to splay_tree_key,
      	add overload with first argument tree.
      	(install_var_field): For mask & 8 use &DECL_UID as key instead
      	of the tree itself.
      	(fixup_child_record_type): Const qualify *.omp_data_i.
      	(scan_sharing_clauses): Handle OMP_CLAUSE_SHARED_FIRSTPRIVATE,
      	C/C++ array reductions, OMP_CLAUSE_{IS,USE}_DEVICE_PTR clauses,
      	OMP_CLAUSE_{PRIORITY,GRAINSIZE,NUM_TASKS,SIMDLEN,THREADS,SIMD} and
      	OMP_CLAUSE_{NOGROUP,DEFAULTMAP} clauses, OMP_CLAUSE__LOOPTEMP_ clause
      	on taskloop, GOMP_MAP_FIRSTPRIVATE_POINTER, OMP_CLAUSE_MAP_PRIVATE.
      	(create_omp_child_function): Set TREE_READONLY on .omp_data_i.
      	(find_combined_for): Allow searching for different GIMPLE_OMP_FOR
      	kinds.
      	(add_taskreg_looptemp_clauses): New function.
      	(scan_omp_parallel): Use it.
      	(scan_omp_task): Likewise.
      	(finish_taskreg_scan): Handle OMP_CLAUSE_SHARED_FIRSTPRIVATE.
      	For taskloop, move fields for the first two _LOOPTEMP_ clauses first.
      	(check_omp_nesting_restrictions): Handle GF_OMP_TARGET_KIND_ENTER_DATA
      	and GF_OMP_TARGET_KIND_EXIT_DATA.  Formatting fixes.  Allow the
      	sandwiched taskloop constructs.  Type check
      	OMP_CLAUSE_DEPEND_{KIND,SOURCE}.  Allow ordered simd inside of simd
      	region.  Diagnose depend(source) or depend(sink:...) on
      	target constructs or task/taskloop.
      	(handle_simd_reference): Use get_name.
      	(lower_rec_input_clauses): Likewise.  Ignore all
      	OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE clauses on taskloop construct.
      	Allow _LOOPTEMP_ clause on GOMP_TASK.  Unshare new_var
      	before passing it to omp_clause_{default,copy}_ctor.  Handle
      	OMP_CLAUSE_REDUCTION with MEM_REF OMP_CLAUSE_DECL.  Set
      	lastprivate_firstprivate flag for linear that needs copyin and
      	copyout.  Use BUILT_IN_ALLOCA_WITH_ALIGN instead of BUILT_IN_ALLOCA.
      	(lower_lastprivate_clauses): For OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE
      	on taskloop lookup decl in outer context.  Pass true to
      	build_outer_var_ref lastprivate argument.  Handle
      	OMP_CLAUSE_LASTPRIVATE_TASKLOOP_IV lastprivate if the decl is global
      	outside of outer taskloop for.
      	(lower_reduction_clauses): Handle OMP_CLAUSE_REDUCTION with MEM_REF
      	OMP_CLAUSE_DECL.
      	(lower_send_clauses): Ignore first two _LOOPTEMP_ clauses in taskloop
      	GOMP_TASK.  Handle OMP_CLAUSE_SHARED_FIRSTPRIVATE.  Handle
      	omp_member_access_dummy_var vars.  Handle OMP_CLAUSE_REDUCTION
      	with MEM_REF OMP_CLAUSE_DECL.  Use new lookup_sfield overload.
      	(lower_send_shared_vars): Ignore fields with NULL or FIELD_DECL
      	abstract origin.  Handle omp_member_access_dummy_var vars.
      	(expand_parallel_call): Use expand_omp_build_assign.
      	(expand_task_call): Handle taskloop construct expansion.  Add
      	REGION argument.  Use GOMP_TASK_* defines instead of hardcoded
      	integers.  Add priority argument to GOMP_task* calls.  Or in
      	GOMP_TASK_FLAG_PRIORITY into flags if priority is present for
      	GOMP_task call.
      	(expand_omp_build_assign): Add prototype.  Add AFTER
      	argument, if true emit statements after *GSI_P and continue linking.
      	(expand_omp_taskreg): Adjust expand_task_call caller.
      	(expand_omp_for_init_counts): Rename zero_iter_bb argument to
      	zero_iter1_bb and first_zero_iter to first_zero_iter1, add
      	zero_iter2_bb and first_zero_iter2 arguments, handle computation
      	of counts even for ordered loops.
      	(expand_omp_for_init_vars): Handle GOMP_TASK inner_stmt.
      	(expand_omp_ordered_source, expand_omp_ordered_sink,
      	expand_omp_ordered_source_sink, expand_omp_for_ordered_loops): New
      	functions.
      	(expand_omp_for_generic): Use omp_adjust_chunk_size.  Handle linear
      	clauses on worksharing loop.  Handle DOACROSS loop expansion.
      	(expand_omp_for_static_nochunk): Handle linear clauses on
      	worksharing loop.  Adjust expand_omp_for_init_counts
      	callers.
      	(expand_omp_for_static_chunk): Likewise.  Use omp_adjust_chunk_size.
      	(expand_omp_simd): Handle addressable fd->loop.v.  Adjust
      	expand_omp_for_init_counts callers.
      	(expand_omp_taskloop_for_outer, expand_omp_taskloop_for_inner): New
      	functions.
      	(expand_omp_for): Call expand_omp_taskloop_for_* for taskloop.
      	Handle doacross loops.
      	(expand_omp_target): Handle GF_OMP_TARGET_KIND_ENTER_DATA and
      	GF_OMP_TARGET_KIND_EXIT_DATA.  Pass flags and depend arguments to
      	GOMP_target_{41,update_41,enter_exit_data} libcalls.
      	(expand_omp): Don't expand ordered depend constructs here, record
      	ord_stmt instead for later expand_omp_for_generic.
      	(build_omp_regions_1): Handle GF_OMP_TARGET_KIND_ENTER_DATA and
      	GF_OMP_TARGET_KIND_EXIT_DATA.  Treat GIMPLE_OMP_ORDERED with depend
      	clause as stand-alone directive.
      	(lower_omp_ordered_clauses): New function.
      	(lower_omp_ordered): Handle OMP_CLAUSE_SIMD, for OMP_CLAUSE_DEPEND
      	don't lower anything.
      	(lower_omp_for_lastprivate): Use last _looptemp_ clause
      	on taskloop for comparison.
      	(lower_omp_for): Handle taskloop constructs.  Adjust OMP_CLAUSE_DECL
      	and OMP_CLAUSE_LINEAR_STEP so that expand_omp_for_* can use it during
      	expansion for linear adjustments.
      	(create_task_copyfn): Handle OMP_CLAUSE_SHARED_FIRSTPRIVATE.
      	(lower_depend_clauses): Assert not seeing sink/source depend kinds.
      	Set TREE_ADDRESSABLE on array.  Change first argument from gimple *
      	to tree * pointing to the stmt's clauses.
      	(lower_omp_taskreg): Adjust lower_depend_clauses caller.
      	(lower_omp_target): Handle GF_OMP_TARGET_KIND_ENTER_DATA
      	and GF_OMP_TARGET_KIND_EXIT_DATA, depend clauses,
      	GOMP_MAP_{RELEASE,ALWAYS_{TO,FROM,TOFROM},FIRSTPRIVATE_POINTER,STRUCT}
      	map kinds, OMP_CLAUSE_{FIRSTPRIVATE,PRIVATE,{IS,USE}_DEVICE_PTR
      	clauses.  Always use short kind and 8-bit align shift.
      	(lower_omp_regimplify_p): Use IS_TYPE_OR_DECL_P macro.
      	(struct lower_omp_regimplify_operands_data): New type.
      	(lower_omp_regimplify_operands_p, lower_omp_regimplify_operands):
      	New functions.
      	(lower_omp_1): Use lower_omp_regimplify_operands instead of
      	gimple_regimplify_operands.
      	(make_gimple_omp_edges): Handle GF_OMP_TARGET_KIND_ENTER_DATA and
      	GF_OMP_TARGET_KIND_EXIT_DATA.  Treat GIMPLE_OMP_ORDERED with depend
      	clause as stand-alone directive.
      	(simd_clone_clauses_extract): Honor OMP_CLAUSE_LINEAR_KIND.
      	(simd_clone_mangle): Mangle the various linear kinds
      	per the new ABI.
      	(simd_clone_adjust_argument_types): Handle
      	SIMD_CLONE_ARG_TYPE_LINEAR_*_CONSTANT_STEP.
      	(simd_clone_init_simd_arrays): Don't do anything for uval.
      	(simd_clone_adjust): Handle
      	SIMD_CLONE_ARG_TYPE_LINEAR_REF_CONSTANT_STEP like
      	SIMD_CLONE_ARG_TYPE_LINEAR_CONSTANT_STEP.
      	Handle SIMD_CLONE_ARG_TYPE_LINEAR_UVAL_CONSTANT_STEP.
      	* omp-low.h (omp_member_access_dummy_var): New prototype.
      	* passes.def (pass_simduid_cleanup): Schedule another copy of the
      	pass after all optimizations.
      	* tree.c (omp_clause_code_name): Add entries for
      	OMP_CLAUSE_{TO_DECLARE,LINK,{USE,IS}_DEVICE_PTR,DEFAULTMAP,HINT}
      	and OMP_CLAUSE_{PRIORITY,GRAINSIZE,NUM_TASKS,NOGROUP,THREADS,SIMD}.
      	(omp_clause_num_ops): Likewise.  Bump number of OMP_CLAUSE_REDUCTION
      	arguments to 5 and for OMP_CLAUSE_ORDERED to 1.
      	(walk_tree_1): Adjust for OMP_CLAUSE_ORDERED having 1 argument and
      	OMP_CLAUSE_REDUCTION 5 arguments.  Handle
      	OMP_CLAUSE_{TO_DECLARE,LINK,{USE,IS}_DEVICE_PTR,DEFAULTMAP,HINT}
      	and OMP_CLAUSE_{PRIORITY,GRAINSIZE,NUM_TASKS,NOGROUP,THREADS,SIMD}
      	clauses.
      	* tree-core.h (enum omp_clause_linear_kind): New.
      	(struct tree_omp_clause): Change type of map_kind
      	from unsigned char to unsigned int.  Add subcode.if_modifier
      	and subcode.linear_kind fields.
      	(enum omp_clause_code): Add
      	OMP_CLAUSE_{TO_DECLARE,LINK,{USE,IS}_DEVICE_PTR,DEFAULTMAP,HINT}
      	and OMP_CLAUSE_{PRIORITY,GRAINSIZE,NUM_TASKS,NOGROUP,THREADS,SIMD}.
      	(OMP_CLAUSE_REDUCTION): Document
      	OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER.
      	(enum omp_clause_depend_kind): Add OMP_CLAUSE_DEPEND_{SOURCE,SINK}.
      	* tree.def (OMP_FOR): Add OMP_FOR_ORIG_DECLS operand.
      	(OMP_CRITICAL): Move before OMP_SINGLE.  Add OMP_CRITICAL_CLAUSES
      	operand.
      	(OMP_ORDERED): Move before OMP_SINGLE.  Add OMP_ORDERED_CLAUSES
      	operand.
      	(OMP_TASKLOOP, OMP_TARGET_ENTER_DATA, OMP_TARGET_EXIT_DATA): New tree
      	codes.
      	* tree.h (OMP_BODY): Replace OMP_CRITICAL with OMP_TASKGROUP.
      	(OMP_CLAUSE_SET_MAP_KIND): Cast to unsigned int rather than unsigned
      	char.
      	(OMP_CRITICAL_NAME): Adjust to be 3rd operand instead of 2nd.
      	(OMP_CLAUSE_NUM_TASKS_EXPR): Formatting fix.
      	(OMP_STANDALONE_CLAUSES): Adjust to cover OMP_TARGET_{ENTER,EXIT}_DATA.
      	(OMP_CLAUSE_DEPEND_SINK_NEGATIVE, OMP_TARGET_COMBINED,
      	OMP_CLAUSE_MAP_PRIVATE, OMP_FOR_ORIG_DECLS, OMP_CLAUSE_IF_MODIFIER,
      	OMP_CLAUSE_MAP_MAYBE_ZERO_LENGTH_ARRAY_SECTION, OMP_CRITICAL_CLAUSES,
      	OMP_CLAUSE_PRIVATE_TASKLOOP_IV, OMP_CLAUSE_LASTPRIVATE_TASKLOOP_IV,
      	OMP_CLAUSE_HINT_EXPR, OMP_CLAUSE_SCHEDULE_SIMD,
      	OMP_CLAUSE_LINEAR_KIND, OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER,
      	OMP_CLAUSE_SHARED_FIRSTPRIVATE, OMP_ORDERED_CLAUSES,
      	OMP_TARGET_ENTER_DATA_CLAUSES, OMP_TARGET_EXIT_DATA_CLAUSES,
      	OMP_CLAUSE_NUM_TASKS_EXPR, OMP_CLAUSE_GRAINSIZE_EXPR,
      	OMP_CLAUSE_PRIORITY_EXPR, OMP_CLAUSE_ORDERED_EXPR): Define.
      	* tree-inline.c (remap_gimple_stmt): Handle clauses on
      	GIMPLE_OMP_ORDERED and GIMPLE_OMP_CRITICAL.  For
      	IFN_GOMP_SIMD_ORDERED_{START,END} set has_simduid_loops.
      	* tree-nested.c (convert_nonlocal_omp_clauses): Handle
      	OMP_CLAUSE_{TO_DECLARE,LINK,{USE,IS}_DEVICE_PTR,SIMDLEN,PRIORITY,SIMD}
      	and OMP_CLAUSE_{GRAINSIZE,NUM_TASKS,HINT,NOGROUP,THREADS,DEFAULTMAP}
      	clauses.  Handle OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER.
      	(convert_local_omp_clauses): Likewise.
      	* tree-pretty-print.c (dump_omp_clause): Handle
      	OMP_CLAUSE_{TO_DECLARE,LINK,{USE,IS}_DEVICE_PTR,SIMDLEN,PRIORITY,SIMD}
      	and OMP_CLAUSE_{GRAINSIZE,NUM_TASKS,HINT,NOGROUP,THREADS,DEFAULTMAP}
      	clauses.  Handle OMP_CLAUSE_IF_MODIFIER, OMP_CLAUSE_ORDERED_EXPR,
      	OMP_CLAUSE_SCHEDULE_SIMD, OMP_CLAUSE_LINEAR_KIND,
      	OMP_CLAUSE_DEPEND_{SOURCE,SINK}.  Use "delete" for
      	GOMP_MAP_FORCE_DEALLOC.  Handle
      	GOMP_MAP_{ALWAYS_{TO,FROM,TOFROM},RELEASE,FIRSTPRIVATE_POINTER,STRUCT}.
      	(dump_generic_node): Handle OMP_TASKLOOP, OMP_TARGET_{ENTER,EXIT}_DATA
      	and clauses on OMP_ORDERED and OMP_CRITICAL.
      	* tree-vectorizer.c (adjust_simduid_builtins): Adjust comment.
      	Remove IFN_GOMP_SIMD_ORDERED_{START,END}.
      	(vectorize_loops): Adjust comments.
      	(pass_simduid_cleanup::execute): Likewise.
      	* tree-vect-stmts.c (vectorizable_simd_clone_call): Handle
      	SIMD_CLONE_ARG_TYPE_LINEAR_{REF,VAL,UVAL}_CONSTANT_STEP.
      	* wide-int.h (wi::gcd): New.
      gcc/c-family/
      2015-10-13  Jakub Jelinek  <jakub@redhat.com>
      	    Aldy Hernandez  <aldyh@redhat.com>
      
      	* c-common.c (enum c_builtin_type): Define DEF_FUNCTION_TYPE_9,
      	DEF_FUNCTION_TYPE_10 and DEF_FUNCTION_TYPE_11.
      	(c_define_builtins): Likewise.
      	* c-common.h (enum c_omp_clause_split): Add
      	C_OMP_CLAUSE_SPLIT_TASKLOOP.
      	(c_finish_omp_critical, c_finish_omp_ordered): Add CLAUSES argument.
      	(c_finish_omp_for): Add ORIG_DECLV argument.
      	* c-cppbuiltin.c (c_cpp_builtins): Predefine _OPENMP as
      	201511 instead of 201307.
      	* c-omp.c (c_finish_omp_critical): Add CLAUSES argument, set
      	OMP_CRITICAL_CLAUSES to it.
      	(c_finish_omp_ordered): Add CLAUSES argument, set
      	OMP_ORDERED_CLAUSES to it.
      	(c_finish_omp_for): Add ORIG_DECLV argument, set OMP_FOR_ORIG_DECLS
      	to it if OMP_FOR.  Clear DECL_INITIAL on the IVs.
      	(c_omp_split_clauses): Handle OpenMP 4.5 combined/composite
      	constructs and new OpenMP 4.5 clauses.  Clear
      	OMP_CLAUSE_SCHEDULE_SIMD if not combined with OMP_SIMD.  Add
      	verification code.
      	* c-pragma.c (omp_pragmas_simd): Add taskloop.
      	* c-pragma.h (enum pragma_kind): Add PRAGMA_OMP_TASKLOOP.
      	(enum pragma_omp_clause): Add
      	PRAGMA_OMP_CLAUSE_{DEFAULTMAP,GRAINSIZE,HINT,{IS,USE}_DEVICE_PTR}
      	and PRAGMA_OMP_CLAUSE_{LINK,NOGROUP,NUM_TASKS,PRIORITY,SIMD,THREADS}.
      gcc/c/
      2015-10-13  Jakub Jelinek  <jakub@redhat.com>
      	    Aldy Hernandez  <aldyh@redhat.com>
      
      	* c-parser.c (c_parser_pragma): Handle PRAGMA_OMP_ORDERED here.
      	(c_parser_omp_clause_name): Handle OpenMP 4.5 clauses.
      	(c_parser_omp_variable_list): Handle structure elements for
      	map, to and from clauses.  Handle array sections in reduction
      	clause.  Formatting fixes.
      	(c_parser_omp_clause_if): Add IS_OMP argument, handle parsing of
      	if clause modifiers.
      	(c_parser_omp_clause_num_tasks, c_parser_omp_clause_grainsize,
      	c_parser_omp_clause_priority, c_parser_omp_clause_hint,
      	c_parser_omp_clause_defaultmap, c_parser_omp_clause_use_device_ptr,
      	c_parser_omp_clause_is_device_ptr): New functions.
      	(c_parser_omp_clause_ordered): Parse optional parameter.
      	(c_parser_omp_clause_reduction): Handle array reductions.
      	(c_parser_omp_clause_schedule): Parse optional simd modifier.
      	(c_parser_omp_clause_nogroup, c_parser_omp_clause_orderedkind): New
      	functions.
      	(c_parser_omp_clause_linear): Parse linear clause modifiers.
      	(c_parser_omp_clause_depend_sink): New function.
      	(c_parser_omp_clause_depend): Parse source/sink depend kinds.
      	(c_parser_omp_clause_map): Parse release/delete map kinds and
      	optional always modifier.
      	(c_parser_oacc_all_clauses): Adjust c_parser_omp_clause_if
      	and c_finish_omp_clauses callers.
      	(c_parser_omp_all_clauses): Likewise.  Parse OpenMP 4.5 clauses.
      	Parse "to" as OMP_CLAUSE_TO_DECLARE if on declare target directive.
      	(c_parser_oacc_cache): Adjust c_finish_omp_clauses caller.
      	(OMP_CRITICAL_CLAUSE_MASK): Define.
      	(c_parser_omp_critical): Parse critical clauses.
      	(c_parser_omp_for_loop): Handle doacross loops, adjust
      	c_finish_omp_for and c_finish_omp_clauses callers.
      	(OMP_SIMD_CLAUSE_MASK): Add simdlen clause.
      	(c_parser_omp_simd): Allow ordered clause if it has no parameter.
      	(OMP_FOR_CLAUSE_MASK): Add linear clause.
      	(c_parser_omp_for): Disallow ordered clause when combined with
      	distribute.  Disallow linear clause when combined with distribute
      	and not combined with simd.
      	(OMP_ORDERED_CLAUSE_MASK, OMP_ORDERED_DEPEND_CLAUSE_MASK): Define.
      	(c_parser_omp_ordered): Add CONTEXT argument, remove LOC argument,
      	parse clauses and if depend clause is found, don't parse a body.
      	(c_parser_omp_parallel): Disallow copyin clause on target parallel.
      	Allow target parallel without for after it.
      	(OMP_TASK_CLAUSE_MASK): Add priority clause.
      	(OMP_TARGET_DATA_CLAUSE_MASK): Add use_device_ptr clause.
      	(c_parser_omp_target_data): Diagnose no map clauses or clauses with
      	invalid kinds.
      	(OMP_TARGET_UPDATE_CLAUSE_MASK): Add depend and nowait clauses.
      	(OMP_TARGET_ENTER_DATA_CLAUSE_MASK,
      	OMP_TARGET_EXIT_DATA_CLAUSE_MASK): Define.
      	(c_parser_omp_target_enter_data, c_parser_omp_target_exit_data): New
      	functions.
      	(OMP_TARGET_CLAUSE_MASK): Add depend, nowait, private, firstprivate,
      	defaultmap and is_device_ptr clauses.
      	(c_parser_omp_target): Parse target parallel and target simd.  Set
      	OMP_TARGET_COMBINED on combined constructs.  Parse target enter data
      	and target exit data.  Diagnose invalid map kinds.
      	(OMP_DECLARE_TARGET_CLAUSE_MASK): Define.
      	(c_parser_omp_declare_target): Parse OpenMP 4.5 forms of this
      	construct.
      	(c_parser_omp_declare_reduction): Use STRIP_NOPS when checking for
      	&omp_priv.
      	(OMP_TASKLOOP_CLAUSE_MASK): Define.
      	(c_parser_omp_taskloop): New function.
      	(c_parser_omp_construct): Don't handle PRAGMA_OMP_ORDERED here,
      	handle PRAGMA_OMP_TASKLOOP.
      	(c_parser_cilk_for): Adjust c_finish_omp_clauses callers.
      	* c-tree.h (c_finish_omp_clauses): Add two new arguments.
      	* c-typeck.c (handle_omp_array_sections_1): Fix comment typo.
      	Add IS_OMP argument, handle structure element bases, diagnose
      	bitfields, pass IS_OMP recursively, diagnose known zero length
      	array sections in depend clauses, handle array sections in reduction
      	clause, diagnose negative length even for pointers.
      	(handle_omp_array_sections): Add IS_OMP argument, use auto_vec for
      	types, pass IS_OMP down to handle_omp_array_sections_1, handle
      	array sections in reduction clause, set
      	OMP_CLAUSE_MAP_MAYBE_ZERO_LENGTH_ARRAY_SECTION if map could be zero
      	length array section, use GOMP_MAP_FIRSTPRIVATE_POINTER for IS_OMP.
      	(c_finish_omp_clauses): Add IS_OMP and DECLARE_SIMD arguments.
      	Handle new OpenMP 4.5 clauses and new restrictions for the old ones.
      gcc/cp/
      2015-10-13  Jakub Jelinek  <jakub@redhat.com>
      	    Aldy Hernandez  <aldyh@redhat.com>
      
      	* class.c (finish_struct_1): Call finish_omp_declare_simd_methods.
      	* cp-gimplify.c (cp_gimplify_expr): Handle OMP_TASKLOOP.
      	(cp_genericize_r): Likewise.
      	(cxx_omp_finish_clause): Don't diagnose references.
      	(cxx_omp_disregard_value_expr): New function.
      	* cp-objcp-common.h (LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR): Redefine.
      	* cp-tree.h (OMP_FOR_GIMPLIFYING_P): Document for OMP_TASKLOOP.
      	(DECL_OMP_PRIVATIZED_MEMBER): Define.
      	(finish_omp_declare_simd_methods, push_omp_privatization_clauses,
      	pop_omp_privatization_clauses, save_omp_privatization_clauses,
      	restore_omp_privatization_clauses, omp_privatize_field,
      	cxx_omp_disregard_value_expr): New prototypes.
      	(finish_omp_clauses): Add two new arguments.
      	(finish_omp_for): Add ORIG_DECLV argument.
      	* parser.c (cp_parser_lambda_body): Call
      	save_omp_privatization_clauses and restore_omp_privatization_clauses.
      	(cp_parser_omp_clause_name): Handle OpenMP 4.5 clauses.
      	(cp_parser_omp_var_list_no_open): Handle structure elements for
      	map, to and from clauses.  Handle array sections in reduction
      	clause.  Parse this keyword.  Formatting fixes.
      	(cp_parser_omp_clause_if): Add IS_OMP argument, handle parsing of
      	if clause modifiers.
      	(cp_parser_omp_clause_num_tasks, cp_parser_omp_clause_grainsize,
      	cp_parser_omp_clause_priority, cp_parser_omp_clause_hint,
      	cp_parser_omp_clause_defaultmap): New functions.
      	(cp_parser_omp_clause_ordered): Parse optional parameter.
      	(cp_parser_omp_clause_reduction): Handle array reductions.
      	(cp_parser_omp_clause_schedule): Parse optional simd modifier.
      	(cp_parser_omp_clause_nogroup, cp_parser_omp_clause_orderedkind):
      	New functions.
      	(cp_parser_omp_clause_linear): Parse linear clause modifiers.
      	(cp_parser_omp_clause_depend_sink): New function.
      	(cp_parser_omp_clause_depend): Parse source/sink depend kinds.
      	(cp_parser_omp_clause_map): Parse release/delete map kinds and
      	optional always modifier.
      	(cp_parser_oacc_all_clauses): Adjust cp_parser_omp_clause_if
      	and finish_omp_clauses callers.
      	(cp_parser_omp_all_clauses): Likewise.  Parse OpenMP 4.5 clauses.
      	Parse "to" as OMP_CLAUSE_TO_DECLARE if on declare target directive.
      	(OMP_CRITICAL_CLAUSE_MASK): Define.
      	(cp_parser_omp_critical): Parse critical clauses.
      	(cp_parser_omp_for_incr): Use cp_tree_equal if
      	processing_template_decl.
      	(cp_parser_omp_for_loop_init): Return tree instead of bool.  Handle
      	non-static data member iterators.
      	(cp_parser_omp_for_loop): Handle doacross loops, adjust
      	finish_omp_for and finish_omp_clauses callers.
      	(cp_omp_split_clauses): Adjust finish_omp_clauses caller.
      	(OMP_SIMD_CLAUSE_MASK): Add simdlen clause.
      	(cp_parser_omp_simd): Allow ordered clause if it has no parameter.
      	(OMP_FOR_CLAUSE_MASK): Add linear clause.
      	(cp_parser_omp_for): Disallow ordered clause when combined with
      	distribute.  Disallow linear clause when combined with distribute
      	and not combined with simd.
      	(OMP_ORDERED_CLAUSE_MASK, OMP_ORDERED_DEPEND_CLAUSE_MASK): Define.
      	(cp_parser_omp_ordered): Add CONTEXT argument, return bool instead
      	of tree, parse clauses and if depend clause is found, don't parse
      	a body.
      	(cp_parser_omp_parallel): Disallow copyin clause on target parallel.
      	Allow target parallel without for after it.
      	(OMP_TASK_CLAUSE_MASK): Add priority clause.
      	(OMP_TARGET_DATA_CLAUSE_MASK): Add use_device_ptr clause.
      	(cp_parser_omp_target_data): Diagnose no map clauses or clauses with
      	invalid kinds.
      	(OMP_TARGET_UPDATE_CLAUSE_MASK): Add depend and nowait clauses.
      	(OMP_TARGET_ENTER_DATA_CLAUSE_MASK,
      	OMP_TARGET_EXIT_DATA_CLAUSE_MASK): Define.
      	(cp_parser_omp_target_enter_data, cp_parser_omp_target_exit_data): New
      	functions.
      	(OMP_TARGET_CLAUSE_MASK): Add depend, nowait, private, firstprivate,
      	defaultmap and is_device_ptr clauses.
      	(cp_parser_omp_target): Parse target parallel and target simd.  Set
      	OMP_TARGET_COMBINED on combined constructs.  Parse target enter data
      	and target exit data.  Diagnose invalid map kinds.
      	(cp_parser_oacc_cache): Adjust finish_omp_clauses caller.
      	(OMP_DECLARE_TARGET_CLAUSE_MASK): Define.
      	(cp_parser_omp_declare_target): Parse OpenMP 4.5 forms of this
      	construct.
      	(OMP_TASKLOOP_CLAUSE_MASK): Define.
      	(cp_parser_omp_taskloop): New function.
      	(cp_parser_omp_construct): Don't handle PRAGMA_OMP_ORDERED here,
      	handle PRAGMA_OMP_TASKLOOP.
      	(cp_parser_pragma): Handle PRAGMA_OMP_ORDERED here directly,
      	handle PRAGMA_OMP_TASKLOOP, call push_omp_privatization_clauses
      	and pop_omp_privatization_clauses around parsing calls.
      	(cp_parser_cilk_for): Adjust finish_omp_clauses caller.
      	* pt.c (apply_late_template_attributes): Adjust tsubst_omp_clauses
      	and finish_omp_clauses callers.
      	(tsubst_omp_clause_decl): Return NULL if decl is NULL.
      	For TREE_LIST, copy over OMP_CLAUSE_DEPEND_SINK_NEGATIVE bit.
      	Use tsubst_expr instead of tsubst_copy, undo convert_from_reference
      	effects.
      	(tsubst_omp_clauses): Add ALLOW_FIELDS argument.  Handle new
      	OpenMP 4.5 clauses.  Use tsubst_omp_clause_decl for more clauses.
      	If ALLOW_FIELDS, handle non-static data members in the clauses.
      	Clear OMP_CLAUSE_LINEAR_STEP if it has been cleared before.
      	(omp_parallel_combined_clauses): New variable.
      	(tsubst_omp_for_iterator): Add ORIG_DECLV argument, recur on
      	OMP_FOR_ORIG_DECLS, handle non-static data member iterators.
      	Improve handling of clauses on combined constructs.
      	(tsubst_expr): Call push_omp_privatization_clauses and
      	pop_omp_privatization_clauses around instantiation of certain
      	OpenMP constructs, improve handling of clauses on combined
      	constructs, handle OMP_TASKLOOP, adjust tsubst_omp_for_iterator,
      	tsubst_omp_clauses and finish_omp_for callers, handle clauses on
      	critical and ordered, handle OMP_TARGET_{ENTER,EXIT}_DATA.
      	(instantiate_decl): Call save_omp_privatization_clauses and
      	restore_omp_privatization_clauses around instantiation.
      	(dependent_omp_for_p): Fix up comment typo.  Handle SCOPE_REF.
      	* semantics.c (omp_private_member_map, omp_private_member_vec,
      	omp_private_member_ignore_next): New variables.
      	(finish_non_static_data_member): Return dummy decl for privatized
      	non-static data members.
      	(omp_clause_decl_field, omp_clause_printable_decl,
      	omp_note_field_privatization, omp_privatize_field): New functions.
      	(handle_omp_array_sections_1): Fix comment typo.
      	Add IS_OMP argument, handle structure element bases, diagnose
      	bitfields, pass IS_OMP recursively, diagnose known zero length
      	array sections in depend clauses, handle array sections in reduction
      	clause, diagnose negative length even for pointers.
      	(handle_omp_array_sections): Add IS_OMP argument, use auto_vec for
      	types, pass IS_OMP down to handle_omp_array_sections_1, handle
      	array sections in reduction clause, set
      	OMP_CLAUSE_MAP_MAYBE_ZERO_LENGTH_ARRAY_SECTION if map could be zero
      	length array section, use GOMP_MAP_FIRSTPRIVATE_POINTER for IS_OMP.
      	(finish_omp_reduction_clause): Handle array sections and arrays.
      	Use omp_clause_printable_decl.
      	(finish_omp_declare_simd_methods, cp_finish_omp_clause_depend_sink):
      	New functions.
      	(finish_omp_clauses): Add ALLOW_FIELDS and DECLARE_SIMD arguments.
      	Handle new OpenMP 4.5 clauses and new restrictions for the old
      	ones, handle non-static data members, reject this keyword when not
      	allowed.
      	(push_omp_privatization_clauses, pop_omp_privatization_clauses,
      	save_omp_privatization_clauses, restore_omp_privatization_clauses):
      	New functions.
      	(handle_omp_for_class_iterator): Handle OMP_TASKLOOP class iterators.
      	Add collapse and ordered arguments.  Fix handling of lastprivate
      	iterators in doacross loops.
      	(finish_omp_for): Add ORIG_DECLV argument, handle doacross loops,
      	adjust c_finish_omp_for, handle_omp_for_class_iterator and
      	finish_omp_clauses callers.  Fill in OMP_CLAUSE_LINEAR_STEP on simd
      	loops with non-static data member iterators.
      gcc/fortran/
      2015-10-13  Jakub Jelinek  <jakub@redhat.com>
      	    Ilya Verbin  <ilya.verbin@intel.com>
      
      	* f95-lang.c (DEF_FUNCTION_TYPE_9, DEF_FUNCTION_TYPE_10,
      	DEF_FUNCTION_TYPE_11, DEF_FUNCTION_TYPE_VAR_1): Define.
      	* trans-openmp.c (gfc_trans_omp_clauses): Set
      	OMP_CLAUSE_IF_MODIFIER to ERROR_MARK, OMP_CLAUSE_ORDERED_EXPR
      	to NULL.
      	(gfc_trans_omp_critical): Adjust for addition of clauses.
      	(gfc_trans_omp_ordered): Likewise.
      	* types.def (BT_FN_BOOL_UINT_LONGPTR_LONGPTR_LONGPTR,
      	BT_FN_BOOL_UINT_ULLPTR_ULLPTR_ULLPTR,
      	BT_FN_BOOL_UINT_LONGPTR_LONG_LONGPTR_LONGPTR,
      	BT_FN_BOOL_UINT_ULLPTR_ULL_ULLPTR_ULLPTR,
      	BT_FN_VOID_INT_SIZE_PTR_PTR_PTR_UINT_PTR,
      	BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR,
      	BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR_INT,
      	BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_UINT_LONG_INT_LONG_LONG_LONG,
      	BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_UINT_LONG_INT_ULL_ULL_ULL,
      	BT_FN_VOID_LONG_VAR, BT_FN_VOID_ULL_VAR): New.
      	(BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR,
      	BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR,
      	BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR): Remove.
      gcc/lto/
      2015-10-13  Jakub Jelinek  <jakub@redhat.com>
      
      	* lto-lang.c (DEF_FUNCTION_TYPE_9, DEF_FUNCTION_TYPE_10,
      	DEF_FUNCTION_TYPE_11): Define.
      gcc/jit/
      2015-10-13  Jakub Jelinek  <jakub@redhat.com>
      
      	* jit-builtins.c (DEF_FUNCTION_TYPE_9, DEF_FUNCTION_TYPE_10,
      	DEF_FUNCTION_TYPE_11): Define.
      	* jit-builtins.h (DEF_FUNCTION_TYPE_9, DEF_FUNCTION_TYPE_10,
      	DEF_FUNCTION_TYPE_11): Define.
      gcc/ada/
      2015-10-13  Jakub Jelinek  <jakub@redhat.com>
      
      	* gcc-interface/utils.c (DEF_FUNCTION_TYPE_9, DEF_FUNCTION_TYPE_10,
      	DEF_FUNCTION_TYPE_11): Define.
      gcc/testsuite/
      2015-10-13  Jakub Jelinek  <jakub@redhat.com>
      	    Aldy Hernandez  <aldyh@redhat.com>
      
      	* c-c++-common/gomp/cancel-1.c (f2): Add map clause to target data.
      	* c-c++-common/gomp/clauses-1.c: New test.
      	* c-c++-common/gomp/clauses-2.c: New test.
      	* c-c++-common/gomp/clauses-3.c: New test.
      	* c-c++-common/gomp/clauses-4.c: New test.
      	* c-c++-common/gomp/declare-target-1.c: New test.
      	* c-c++-common/gomp/declare-target-2.c: New test.
      	* c-c++-common/gomp/depend-3.c: New test.
      	* c-c++-common/gomp/depend-4.c: New test.
      	* c-c++-common/gomp/doacross-1.c: New test.
      	* c-c++-common/gomp/if-1.c: New test.
      	* c-c++-common/gomp/if-2.c: New test.
      	* c-c++-common/gomp/linear-1.c: New test.
      	* c-c++-common/gomp/map-2.c: New test.
      	* c-c++-common/gomp/map-3.c: New test.
      	* c-c++-common/gomp/nesting-1.c (f_omp_parallel,
      	f_omp_target_data): Add map clause to target data.
      	* c-c++-common/gomp/nesting-warn-1.c (f_omp_target): Likewise.
      	* c-c++-common/gomp/ordered-1.c: New test.
      	* c-c++-common/gomp/ordered-2.c: New test.
      	* c-c++-common/gomp/ordered-3.c: New test.
      	* c-c++-common/gomp/pr61486-1.c (foo): Remove linear clause
      	on non-iterator.
      	* c-c++-common/gomp/pr61486-2.c (test, test2): Remove ordered
      	clause and ordered construct where no longer allowed.
      	* c-c++-common/gomp/priority-1.c: New test.
      	* c-c++-common/gomp/reduction-1.c: New test.
      	* c-c++-common/gomp/schedule-simd-1.c: New test.
      	* c-c++-common/gomp/sink-1.c: New test.
      	* c-c++-common/gomp/sink-2.c: New test.
      	* c-c++-common/gomp/sink-3.c: New test.
      	* c-c++-common/gomp/sink-4.c: New test.
      	* c-c++-common/gomp/udr-1.c: New test.
      	* c-c++-common/taskloop-1.c: New test.
      	* c-c++-common/cpp/openmp-define-3.c: Adjust for the new
      	value of _OPENMP macro.
      	* c-c++-common/cilk-plus/PS/body.c (foo): Adjust expected diagnostics.
      	* c-c++-common/goacc-gomp/nesting-fail-1.c (f_acc_parallel,
      	f_acc_kernels, f_acc_data, f_acc_loop): Add map clause to target data.
      	* gcc.dg/gomp/clause-1.c:
      	* gcc.dg/gomp/reduction-1.c: New test.
      	* gcc.dg/gomp/sink-fold-1.c: New test.
      	* gcc.dg/gomp/sink-fold-2.c: New test.
      	* gcc.dg/gomp/sink-fold-3.c: New test.
      	* gcc.dg/vect/vect-simd-clone-15.c: New test.
      	* g++.dg/gomp/clause-1.C (T::test): Remove dg-error on privatization
      	of non-static data members.
      	* g++.dg/gomp/clause-3.C (foo): Remove one dg-error directive.
      	Add some linear clause tests.
      	* g++.dg/gomp/declare-simd-3.C: New test.
      	* g++.dg/gomp/linear-1.C: New test.
      	* g++.dg/gomp/member-1.C: New test.
      	* g++.dg/gomp/member-2.C: New test.
      	* g++.dg/gomp/pr66571-2.C: New test.
      	* g++.dg/gomp/pr67504.C (foo): Add test for ordered clause with
      	dependent argument.
      	* g++.dg/gomp/pr67522.C (foo): Add test for invalid array section
      	in reduction clause.
      	* g++.dg/gomp/reference-1.C: New test.
      	* g++.dg/gomp/sink-1.C: New test.
      	* g++.dg/gomp/sink-2.C: New test.
      	* g++.dg/gomp/sink-3.C: New test.
      	* g++.dg/gomp/task-1.C: Remove both dg-error directives.
      	* g++.dg/gomp/this-1.C: New test.
      	* g++.dg/gomp/this-2.C: New test.
      	* g++.dg/vect/simd-clone-2.cc: New test.
      	* g++.dg/vect/simd-clone-2.h: New test.
      	* g++.dg/vect/simd-clone-3.cc: New test.
      	* g++.dg/vect/simd-clone-4.cc: New test.
      	* g++.dg/vect/simd-clone-4.h: New test.
      	* g++.dg/vect/simd-clone-5.cc: New test.
      include/
      2015-10-13  Jakub Jelinek  <jakub@redhat.com>
      	    Ilya Verbin  <ilya.verbin@intel.com>
      
      	* gomp-constants.h (GOMP_MAP_FLAG_ALWAYS): Define.
      	(enum gomp_map_kind): Add GOMP_MAP_FIRSTPRIVATE,
      	GOMP_MAP_FIRSTPRIVATE_INT, GOMP_MAP_USE_DEVICE_PTR,
      	GOMP_MAP_ZERO_LEN_ARRAY_SECTION, GOMP_MAP_ALWAYS_TO,
      	GOMP_MAP_ALWAYS_FROM, GOMP_MAP_ALWAYS_TOFROM, GOMP_MAP_STRUCT,
      	GOMP_MAP_DELETE_ZERO_LEN_ARRAY_SECTION, GOMP_MAP_DELETE,
      	GOMP_MAP_RELEASE, GOMP_MAP_FIRSTPRIVATE_POINTER.
      	(GOMP_MAP_ALWAYS_TO_P, GOMP_MAP_ALWAYS_FROM_P): Define.
      	(GOMP_TASK_FLAG_UNTIED, GOMP_TASK_FLAG_FINAL, GOMP_TASK_FLAG_MERGEABLE,
      	GOMP_TASK_FLAG_DEPEND, GOMP_TASK_FLAG_PRIORITY, GOMP_TASK_FLAG_UP,
      	GOMP_TASK_FLAG_GRAINSIZE, GOMP_TASK_FLAG_IF, GOMP_TASK_FLAG_NOGROUP,
      	GOMP_TARGET_FLAG_NOWAIT, GOMP_TARGET_FLAG_EXIT_DATA,
      	GOMP_TARGET_FLAG_UPDATE): Define.
      libgomp/
      2015-10-13  Jakub Jelinek  <jakub@redhat.com>
      	    Aldy Hernandez  <aldyh@redhat.com>
      	    Ilya Verbin  <ilya.verbin@intel.com>
      
      	* config/linux/affinity.c (omp_get_place_num_procs,
      	omp_get_place_proc_ids, gomp_get_place_proc_ids_8): New functions.
      	* config/linux/doacross.h: New file.
      	* config/posix/affinity.c (omp_get_place_num_procs,
      	omp_get_place_proc_ids, gomp_get_place_proc_ids_8): New functions.
      	* config/posix/doacross.h: New file.
      	* env.c: Include gomp-constants.h.
      	(struct gomp_task_icv): Rename run_sched_modifier to
      	run_sched_chunk_size.
      	(gomp_max_task_priority_var): New variable.
      	(parse_schedule): Rename run_sched_modifier to run_sched_chunk_size.
      	(handle_omp_display_env): Change _OPENMP value from 201307 to
      	201511.  Print OMP_MAX_TASK_PRIORITY.
      	(initialize_env): Parse OMP_MAX_TASK_PRIORITY.
      	(omp_set_schedule, omp_get_schedule): Rename modifier argument to
      	chunk_size and run_sched_modifier to run_sched_chunk_size.
      	(omp_get_max_task_priority, omp_get_initial_device,
      	omp_get_num_places, omp_get_place_num, omp_get_partition_num_places,
      	omp_get_partition_place_nums): New functions.
      	* fortran.c (omp_set_schedule_, omp_set_schedule_8_,
      	omp_get_schedule_, omp_get_schedule_8_): Rename modifier argument
      	to chunk_size.
      	(omp_get_num_places_, omp_get_place_num_procs_,
      	omp_get_place_num_procs_8_, omp_get_place_proc_ids_,
      	omp_get_place_proc_ids_8_, omp_get_place_num_,
      	omp_get_partition_num_places_, omp_get_partition_place_nums_,
      	omp_get_partition_place_nums_8_, omp_get_initial_device_,
      	omp_get_max_task_priority_): New functions.
      	* libgomp_g.h (GOMP_loop_doacross_static_start,
      	GOMP_loop_doacross_dynamic_start, GOMP_loop_doacross_guided_start,
      	GOMP_loop_doacross_runtime_start, GOMP_loop_ull_doacross_static_start,
      	GOMP_loop_ull_doacross_dynamic_start,
      	GOMP_loop_ull_doacross_guided_start,
      	GOMP_loop_ull_doacross_runtime_start, GOMP_doacross_post,
      	GOMP_doacross_wait, GOMP_doacross_ull_post, GOMP_doacross_wait,
      	GOMP_taskloop, GOMP_taskloop_ull, GOMP_target_41,
      	GOMP_target_data_41, GOMP_target_update_41,
      	GOMP_target_enter_exit_data): New prototypes.
      	(GOMP_task): Add prototype argument.
      	* libgomp.h (_LIBGOMP_CHECKING_): Define to 0 if not yet defined.
      	(struct gomp_doacross_work_share): New type.
      	(struct gomp_work_share): Add doacross field.
      	(struct gomp_task_icv): Rename run_sched_modifier to
      	run_sched_chunk_size.
      	(enum gomp_task_kind): Rename GOMP_TASK_IFFALSE to
      	GOMP_TASK_UNDEFERRED.  Add comments.
      	(struct gomp_task_depend_entry): Add comments.
      	(struct gomp_task): Likewise.
      	(struct gomp_taskgroup): Likewise.
      	(struct gomp_target_task): New type.
      	(struct gomp_team): Add comment.
      	(gomp_get_place_proc_ids_8, gomp_doacross_init,
      	gomp_doacross_ull_init, gomp_task_maybe_wait_for_dependencies,
      	gomp_create_target_task, gomp_target_task_fn): New prototypes.
      	(struct target_var_desc): New type.
      	(struct target_mem_desc): Adjust comment.  Use struct
      	target_var_desc instead of splay_tree_key for list.
      	(REFCOUNT_INFINITY): Define.
      	(struct splay_tree_key_s): Remove copy_from field.
      	(struct gomp_device_descr): Add dev2dev_func field.
      	(enum gomp_map_vars_kind): New enum.
      	(gomp_map_vars): Add one argument.
      	* libgomp.map (OMP_4.5): Export omp_get_max_task_priority,
      	omp_get_max_task_priority_, omp_get_num_places, omp_get_num_places_,
      	omp_get_place_num_procs, omp_get_place_num_procs_,
      	omp_get_place_num_procs_8_, omp_get_place_proc_ids,
      	omp_get_place_proc_ids_, omp_get_place_proc_ids_8_, omp_get_place_num,
      	omp_get_place_num_, omp_get_partition_num_places,
      	omp_get_partition_num_places_, omp_get_partition_place_nums,
      	omp_get_partition_place_nums_, omp_get_partition_place_nums_8_,
      	omp_get_initial_device, omp_get_initial_device_, omp_target_alloc,
      	omp_target_free, omp_target_is_present, omp_target_memcpy,
      	omp_target_memcpy_rect, omp_target_associate_ptr and
      	omp_target_disassociate_ptr.
      	(GOMP_4.0.2): Renamed to ...
      	(GOMP_4.5): ... this.  Export GOMP_target_41, GOMP_target_data_41,
      	GOMP_target_update_41, GOMP_target_enter_exit_data, GOMP_taskloop,
      	GOMP_taskloop_ull, GOMP_loop_doacross_dynamic_start,
      	GOMP_loop_doacross_guided_start, GOMP_loop_doacross_runtime_start,
      	GOMP_loop_doacross_static_start, GOMP_doacross_post,
      	GOMP_doacross_wait, GOMP_loop_ull_doacross_dynamic_start,
      	GOMP_loop_ull_doacross_guided_start,
      	GOMP_loop_ull_doacross_runtime_start,
      	GOMP_loop_ull_doacross_static_start, GOMP_doacross_ull_post and
      	GOMP_doacross_ull_wait.
      	* libgomp.texi: Document omp_get_max_task_priority.
      	Rename modifier argument to chunk_size for omp_set_schedule and
      	omp_get_schedule.  Document OMP_MAX_TASK_PRIORITY env var.
      	* loop.c (GOMP_loop_runtime_start): Adjust for run_sched_modifier
      	to run_sched_chunk_size renaming.
      	(GOMP_loop_ordered_runtime_start): Likewise.
      	(gomp_loop_doacross_static_start, gomp_loop_doacross_dynamic_start,
      	gomp_loop_doacross_guided_start, GOMP_loop_doacross_runtime_start,
      	GOMP_parallel_loop_runtime_start): New functions.
      	(GOMP_parallel_loop_runtime): Adjust for run_sched_modifier
      	to run_sched_chunk_size renaming.
      	(GOMP_loop_doacross_static_start, GOMP_loop_doacross_dynamic_start,
      	GOMP_loop_doacross_guided_start): New functions or aliases.
      	* loop_ull.c (GOMP_loop_ull_runtime_start): Adjust for
      	run_sched_modifier to run_sched_chunk_size renaming.
      	(GOMP_loop_ull_ordered_runtime_start): Likewise.
      	(gomp_loop_ull_doacross_static_start,
      	gomp_loop_ull_doacross_dynamic_start,
      	gomp_loop_ull_doacross_guided_start,
      	GOMP_loop_ull_doacross_runtime_start): New functions.
      	(GOMP_loop_ull_doacross_static_start,
      	GOMP_loop_ull_doacross_dynamic_start,
      	GOMP_loop_ull_doacross_guided_start): New functions or aliases.
      	* oacc-mem.c (acc_map_data, present_create_copy,
      	gomp_acc_insert_pointer): Pass GOMP_MAP_VARS_OPENACC instead of false
      	to gomp_map_vars.
      	(gomp_acc_remove_pointer): Use copy_from from target_var_desc.
      	* oacc-parallel.c (GOACC_data_start): Pass GOMP_MAP_VARS_OPENACC
      	instead of false to gomp_map_vars.
      	(GOACC_parallel_keyed): Likewise.  Use copy_from from target_var_desc.
      	* omp.h.in (omp_lock_hint_t): New type.
      	(omp_init_lock_with_hint, omp_init_nest_lock_with_hint,
      	omp_get_num_places, omp_get_place_num_procs, omp_get_place_proc_ids,
      	omp_get_place_num, omp_get_partition_num_places,
      	omp_get_partition_place_nums, omp_get_initial_device,
      	omp_get_max_task_priority, omp_target_alloc, omp_target_free,
      	omp_target_is_present, omp_target_memcpy, omp_target_memcpy_rect,
      	omp_target_associate_ptr, omp_target_disassociate_ptr): New
      	prototypes.
      	* omp_lib.f90.in (omp_lock_hint_kind): New parameter.
      	(omp_lock_hint_none, omp_lock_hint_uncontended,
      	omp_lock_hint_contended, omp_lock_hint_nonspeculative,
      	omp_lock_hint_speculative): New parameters.
      	(omp_init_lock_with_hint, omp_init_nest_lock_with_hint,
      	omp_get_num_places, omp_get_place_num_procs, omp_get_place_proc_ids,
      	omp_get_place_num, omp_get_partition_num_places,
      	omp_get_partition_place_nums, omp_get_initial_device,
      	omp_get_max_task_priority): New interfaces.
      	(omp_set_schedule, omp_get_schedule): Rename modifier argument
      	to chunk_size.
      	* omp_lib.h.in (omp_lock_hint_kind): New parameter.
      	(omp_lock_hint_none, omp_lock_hint_uncontended,
      	omp_lock_hint_contended, omp_lock_hint_nonspeculative,
      	omp_lock_hint_speculative): New parameters.
      	(omp_init_lock_with_hint, omp_init_nest_lock_with_hint,
      	omp_get_num_places, omp_get_place_num_procs, omp_get_place_proc_ids,
      	omp_get_place_num, omp_get_partition_num_places,
      	omp_get_partition_place_nums, omp_get_initial_device,
      	omp_get_max_task_priority): New functions and subroutines.
      	* ordered.c: Include stdarg.h and string.h.
      	(MAX_COLLAPSED_BITS): Define.
      	(gomp_doacross_init, GOMP_doacross_post, GOMP_doacross_wait,
      	gomp_doacross_ull_init, GOMP_doacross_ull_post,
      	GOMP_doacross_ull_wait): New functions.
      	* target.c: Include errno.h.
      	(resolve_device): If device is not initialized, call
      	gomp_init_device on it.
      	(gomp_map_lookup): New function.
      	(gomp_map_vars_existing): Add tgt_var argument, fill it in.
      	Don't bump refcount if REFCOUNT_INFINITY.  Handle
      	GOMP_MAP_ALWAYS_TO_P.
      	(get_kind): Rename is_openacc argument to short_mapkind.
      	(gomp_map_pointer): Use gomp_map_lookup.
      	(gomp_map_fields_existing): New function.
      	(gomp_map_vars): Rename is_openacc argument to short_mapkind
      	and is_target to pragma_kind.  Handle GOMP_MAP_VARS_ENTER_DATA,
      	handle GOMP_MAP_FIRSTPRIVATE_INT, GOMP_MAP_STRUCT,
      	GOMP_MAP_USE_DEVICE_PTR, GOMP_MAP_ZERO_LEN_ARRAY_SECTION.
      	Adjust for tgt->list changed type and copy_from living in there.
      	(gomp_copy_from_async): Adjust for tgt->list changed type and
      	copy_from living in there.
      	(gomp_unmap_vars): Likewise.
      	(gomp_update): Likewise.  Rename is_openacc argument to
      	short_mapkind.  Don't fail if object is not mapped.
      	(gomp_load_image_to_device): Initialize refcount to
      	REFCOUNT_INFINITY.
      	(gomp_target_fallback): New function.
      	(gomp_get_target_fn_addr): Likewise.
      	(GOMP_target): Adjust gomp_map_vars caller, use
      	gomp_get_target_fn_addr and gomp_target_fallback.
      	(GOMP_target_41): New function.
      	(gomp_target_data_fallback): New function.
      	(GOMP_target_data): Use it, adjust gomp_map_vars caller.
      	(GOMP_target_data_41): New function.
      	(GOMP_target_update): Adjust gomp_update caller.
      	(GOMP_target_update_41): New function.
      	(gomp_exit_data, GOMP_target_enter_exit_data,
      	gomp_target_task_fn, omp_target_alloc, omp_target_free,
      	omp_target_is_present, omp_target_memcpy,
      	omp_target_memcpy_rect_worker, omp_target_memcpy_rect,
      	omp_target_associate_ptr, omp_target_disassociate_ptr,
      	gomp_load_plugin_for_device): New functions.
      	* task.c: Include gomp-constants.h.  Include taskloop.c
      	twice to get GOMP_taskloop and GOMP_taskloop_ull definitions.
      	(gomp_task_handle_depend): New function.
      	(GOMP_task): Use it.  Add priority argument.  Use
      	gomp-constant.h constants instead of hardcoded numbers.
      	Rename GOMP_TASK_IFFALSE to GOMP_TASK_UNDEFERRED.
      	(gomp_create_target_task): New function.
      	(verify_children_queue, verify_taskgroup_queue,
      	verify_task_queue): New functions.
      	(gomp_task_run_pre): Call verify_*_queue functions.
      	If an upcoming tied task is about to leave the sibling or
      	taskgroup queues in an invalid state, adjust appropriately.
      	Remove taskgroup argument.  Add comments.
      	(gomp_task_run_post_handle_dependers): Add comments.
      	(gomp_task_run_post_remove_parent): Likewise.
      	(gomp_barrier_handle_tasks): Adjust gomp_task_run_pre caller.
      	(GOMP_taskwait): Likewise.  Add comments.
      	(gomp_task_maybe_wait_for_dependencies): Fix scheduling
      	problem such that the first non parent_depends_on task does not
      	end up at the end of the children queue.
      	(GOMP_taskgroup_start): Rename GOMP_TASK_IFFALSE to
      	GOMP_TASK_UNDEFERRED.
      	(GOMP_taskgroup_end): Adjust gomp_task_run_pre caller.
      	* taskloop.c: New file.
      	* testsuite/lib/libgomp.exp
      	(check_effective_target_offload_device_nonshared_as): New proc.
      	* testsuite/libgomp.c/affinity-2.c: New test.
      	* testsuite/libgomp.c/doacross-1.c: New test.
      	* testsuite/libgomp.c/doacross-2.c: New test.
      	* testsuite/libgomp.c/examples-4/declare_target-1.c (fib_wrapper):
      	Add map clause to target.
      	* testsuite/libgomp.c/examples-4/declare_target-4.c (accum): Likewise.
      	* testsuite/libgomp.c/examples-4/declare_target-5.c (accum): Likewise.
      	* testsuite/libgomp.c/examples-4/device-1.c (main): Likewise.
      	* testsuite/libgomp.c/examples-4/device-3.c (main): Likewise.
      	* testsuite/libgomp.c/examples-4/target_data-3.c (gramSchmidt):
      	Likewise.
      	* testsuite/libgomp.c/examples-4/teams-2.c (dotprod): Likewise.
      	* testsuite/libgomp.c/examples-4/teams-3.c (dotprod): Likewise.
      	* testsuite/libgomp.c/examples-4/teams-4.c (dotprod): Likewise.
      	* testsuite/libgomp.c/for-2.h (OMPTGT, OMPTO, OMPFROM): Define if
      	not defined.  Use those where needed.
      	* testsuite/libgomp.c/for-4.c: New test.
      	* testsuite/libgomp.c/for-5.c: New test.
      	* testsuite/libgomp.c/for-6.c: New test.
      	* testsuite/libgomp.c/linear-1.c: New test.
      	* testsuite/libgomp.c/ordered-4.c: New test.
      	* testsuite/libgomp.c/pr66199-2.c (f2): Adjust for linear clause
      	only allowed on the loop iterator.
      	* testsuite/libgomp.c/pr66199-3.c: New test.
      	* testsuite/libgomp.c/pr66199-4.c: New test.
      	* testsuite/libgomp.c/reduction-7.c: New test.
      	* testsuite/libgomp.c/reduction-8.c: New test.
      	* testsuite/libgomp.c/reduction-9.c: New test.
      	* testsuite/libgomp.c/reduction-10.c: New test.
      	* testsuite/libgomp.c/target-1.c (fn2, fn3, fn4): Add
      	map(tofrom:s).
      	* testsuite/libgomp.c/target-2.c (fn2, fn3, fn4): Likewise.
      	* testsuite/libgomp.c/target-7.c (foo): Add map(h) where needed.
      	* testsuite/libgomp.c/target-11.c: New test.
      	* testsuite/libgomp.c/target-12.c: New test.
      	* testsuite/libgomp.c/target-13.c: New test.
      	* testsuite/libgomp.c/target-14.c: New test.
      	* testsuite/libgomp.c/target-15.c: New test.
      	* testsuite/libgomp.c/target-16.c: New test.
      	* testsuite/libgomp.c/target-17.c: New test.
      	* testsuite/libgomp.c/target-18.c: New test.
      	* testsuite/libgomp.c/target-19.c: New test.
      	* testsuite/libgomp.c/target-20.c: New test.
      	* testsuite/libgomp.c/target-21.c: New test.
      	* testsuite/libgomp.c/target-22.c: New test.
      	* testsuite/libgomp.c/target-23.c: New test.
      	* testsuite/libgomp.c/target-24.c: New test.
      	* testsuite/libgomp.c/target-25.c: New test.
      	* testsuite/libgomp.c/target-26.c: New test.
      	* testsuite/libgomp.c/target-27.c: New test.
      	* testsuite/libgomp.c/taskloop-1.c: New test.
      	* testsuite/libgomp.c/taskloop-2.c: New test.
      	* testsuite/libgomp.c/taskloop-3.c: New test.
      	* testsuite/libgomp.c/taskloop-4.c: New test.
      	* testsuite/libgomp.c++/ctor-13.C: New test.
      	* testsuite/libgomp.c++/doacross-1.C: New test.
      	* testsuite/libgomp.c++/examples-4/declare_target-2.C:
      	Replace offload_device with offload_device_nonshared_as.
      	* testsuite/libgomp.c++/for-12.C: New test.
      	* testsuite/libgomp.c++/for-13.C: New test.
      	* testsuite/libgomp.c++/for-14.C: New test.
      	* testsuite/libgomp.c++/linear-1.C: New test.
      	* testsuite/libgomp.c++/member-1.C: New test.
      	* testsuite/libgomp.c++/member-2.C: New test.
      	* testsuite/libgomp.c++/member-3.C: New test.
      	* testsuite/libgomp.c++/member-4.C: New test.
      	* testsuite/libgomp.c++/member-5.C: New test.
      	* testsuite/libgomp.c++/ordered-1.C: New test.
      	* testsuite/libgomp.c++/reduction-5.C: New test.
      	* testsuite/libgomp.c++/reduction-6.C: New test.
      	* testsuite/libgomp.c++/reduction-7.C: New test.
      	* testsuite/libgomp.c++/reduction-8.C: New test.
      	* testsuite/libgomp.c++/reduction-9.C: New test.
      	* testsuite/libgomp.c++/reduction-10.C: New test.
      	* testsuite/libgomp.c++/reference-1.C: New test.
      	* testsuite/libgomp.c++/simd14.C: New test.
      	* testsuite/libgomp.c++/target-2.C (fn2): Add map(tofrom: s) clause.
      	* testsuite/libgomp.c++/target-5.C: New test.
      	* testsuite/libgomp.c++/target-6.C: New test.
      	* testsuite/libgomp.c++/target-7.C: New test.
      	* testsuite/libgomp.c++/target-8.C: New test.
      	* testsuite/libgomp.c++/target-9.C: New test.
      	* testsuite/libgomp.c++/target-10.C: New test.
      	* testsuite/libgomp.c++/target-11.C: New test.
      	* testsuite/libgomp.c++/target-12.C: New test.
      	* testsuite/libgomp.c++/taskloop-1.C: New test.
      	* testsuite/libgomp.c++/taskloop-2.C: New test.
      	* testsuite/libgomp.c++/taskloop-3.C: New test.
      	* testsuite/libgomp.c++/taskloop-4.C: New test.
      	* testsuite/libgomp.c++/taskloop-5.C: New test.
      	* testsuite/libgomp.c++/taskloop-6.C: New test.
      	* testsuite/libgomp.c++/taskloop-7.C: New test.
      	* testsuite/libgomp.c++/taskloop-8.C: New test.
      	* testsuite/libgomp.c++/taskloop-9.C: New test.
      	* testsuite/libgomp.fortran/affinity1.f90: New test.
      	* testsuite/libgomp.fortran/affinity2.f90: New test.
      liboffloadmic/
      2015-10-13  Ilya Verbin  <ilya.verbin@intel.com>
      
      	* plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_dev2dev): New
      	function.
      	* plugin/offload_target_main.cpp (__offload_target_tgt2tgt): New
      	static function, register it in liboffloadmic.
      
      From-SVN: r228777
      Jakub Jelinek committed
  17. 08 Oct, 2015 1 commit
    • liboffloadmic: Add missed checks for malloc and strdup return values · 6fd2e66a
      liboffloadmic/
      	* runtime/offload_engine.cpp (Engine::init_process): Use strdup instead
      	of sizeof+malloc+sprintf, check for return value.
      	* runtime/offload_env.cpp (MicEnvVar::get_env_var_kind): Check for
      	strdup return value.
      	* runtime/offload_host.cpp (__offload_init_library_once): Check for
      	strdup return value.  Fix size calculation of COI_HOST_THREAD_AFFINITY.
      	* runtime/emulator/coi_device.cpp (COIProcessWaitForShutdown): Check for
      	malloc return value.
      
      From-SVN: r228622
      Ilya Verbin committed
  18. 29 Sep, 2015 1 commit
    • libgomp-plugin-intelmic.cpp (OFFLOAD_ACTIVE_WAIT_ENV): New define. · 44799f87
      liboffloadmic/
      	* plugin/libgomp-plugin-intelmic.cpp (OFFLOAD_ACTIVE_WAIT_ENV): New
      	define.
      	(init): Set OFFLOAD_ACTIVE_WAIT env var to 0, if it is not set.
      	* runtime/emulator/coi_common.h (PIPE_HOST_PATH): Replace with ...
      	(PIPE_HOST2TGT_NAME): ... this.
      	(PIPE_TARGET_PATH): Replace with ...
      	(PIPE_TGT2HOST_NAME): ... this.
      	(MALLOCN): New define.
      	(READN): Likewise.
      	(WRITEN): Likewise.
      	(enum cmd_t): Replace CMD_RUN_FUNCTION with CMD_PIPELINE_RUN_FUNCTION.
      	Add CMD_PIPELINE_CREATE, CMD_PIPELINE_DESTROY.
      	* runtime/emulator/coi_device.cpp (engine_dir): New static variable.
      	(pipeline_thread_routine): New static function.
      	(COIProcessWaitForShutdown): Use global engine_dir instead of mic_dir.
      	Rename pipe_host and pipe_target to pipe_host2tgt and pipe_tgt2host.
      	If cmd is CMD_PIPELINE_CREATE, create a new thread for the pipeline.
      	Remove cmd == CMD_RUN_FUNCTION case.
      	* runtime/emulator/coi_device.h (COIERRORN): New define.
      	* runtime/emulator/coi_host.cpp: Include set, map, queue.
      	Replace typedefs with enums and structs.
      	(struct Function): Remove name, add num_buffers, bufs_size,
      	bufs_data_target, misc_data_len, misc_data, return_value_len,
      	return_value, completion_event.
      	(struct Callback): New.
      	(struct Process): Remove pipeline.  Add pipe_host2tgt and pipe_tgt2host.
      	(struct Pipeline): Remove pipe_host and pipe_target.  Add thread,
      	destroy, is_destroyed, pipe_host2tgt_path, pipe_tgt2host_path,
      	pipe_host2tgt, pipe_tgt2host, queue, process.
      	(max_pipeline_num): New static variable.
      	(pipelines): Likewise.
      	(max_event_num): Likewise.
      	(non_signalled_events): Likewise.
      	(errored_events): Likewise.
      	(callbacks): Likewise.
      	(cleanup): Do not check tmp_dirs before free.
      	(start_critical_section): New static function.
      	(finish_critical_section): Likewise.
      	(pipeline_is_destroyed): Likewise.
      	(maybe_invoke_callback): Likewise.
      	(signal_event): Likewise.
      	(get_event_result): Likewise.
      	(COIBufferCopy): Rename arguments according to headers.  Add asserts.
      	Use process' main pipes, instead of pipeline's pipes.  Signal completion
      	event.
      	(COIBufferCreate): Rename arguments according to headers.  Add asserts.
      	Use process' main pipes, instead of pipeline's pipes.
      	(COIBufferCreateFromMemory): Rename arguments according to headers.
      	Add asserts.
      	(COIBufferDestroy): Rename arguments according to headers.  Add asserts.
      	Use process' main pipes, instead of pipeline's pipes.
      	(COIBufferGetSinkAddress): Rename arguments according to headers.
      	Add asserts.
      	(COIBufferMap): Rename arguments according to headers.  Add asserts.
      	Signal completion event.
      	(COIBufferRead): Likewise.
      	(COIBufferSetState): Likewise.
      	(COIBufferUnmap): Likewise.
      	(COIBufferWrite): Likewise.
      	(COIEngineGetCount): Add assert.
      	(COIEngineGetHandle): Rename arguments according to headers.
      	Add assert.
      	(COIEventWait): Rename arguments according to headers.  Add asserts.
      	Implement waiting for events with zero or infinite timeout.
      	(COIEventRegisterCallback): New function.
      	(pipeline_thread_routine): New static function.
      	(COIPipelineCreate): Create a new thread for the pipeline.
      	(COIPipelineDestroy): Exit pipeline thread.
      	(COIPipelineRunFunction): Add the function into pipeline's queue,
      	instead running it here.  Wait for it's completion in case of
      	synchronous execution.
      	(COIProcessCreateFromMemory): Rename arguments according to headers.
      	Add asserts.  Create process' main pipes, instead of pipeline's pipes.
      	(COIProcessDestroy): Rename arguments according to headers.
      	Add asserts.  Destroy all undestroyed pipelines.
      	(COIProcessGetFunctionHandles): Rename arguments according to headers.
      	Add asserts.  Use process' main pipes, instead of pipeline's pipes.
      	Remove useless function names.
      	(COIProcessLoadLibraryFromMemory): Add asserts.  Use process' main
      	pipes, instead of pipeline's pipes.
      	(COIProcessUnloadLibrary): Likewise.
      	(COIEngineGetInfo): Add assert.
      	* runtime/emulator/coi_host.h (COIERRORN): New define.
      
      From-SVN: r228248
      Ilya Verbin committed
  19. 28 Sep, 2015 1 commit
  20. 08 Sep, 2015 1 commit
    • backport: Makefile.am (liboffloadmic_host_la_DEPENDENCIES): Remove libcoi_host and libmyo-client. · 2eab9666
      Merge liboffloadmic from upstream, version 20150803.
      
      liboffloadmic/
      	* Makefile.am (liboffloadmic_host_la_DEPENDENCIES): Remove libcoi_host
      	and libmyo-client.  liboffloadmic_host loads them dynamically.
      	* Makefile.in: Regenerate.
      	* doc/doxygen/header.tex: Merge from upstream, version 20150803
      	<https://openmprtl.org/sites/default/files/liboffload_oss_20150803.tgz>.
      	* runtime/cean_util.cpp: Likewise.
      	* runtime/cean_util.h: Likewise.
      	* runtime/coi/coi_client.cpp: Likewise.
      	* runtime/coi/coi_client.h: Likewise.
      	* runtime/coi/coi_server.cpp: Likewise.
      	* runtime/coi/coi_server.h: Likewise.
      	* runtime/compiler_if_host.cpp: Likewise.
      	* runtime/compiler_if_host.h: Likewise.
      	* runtime/compiler_if_target.cpp: Likewise.
      	* runtime/compiler_if_target.h: Likewise.
      	* runtime/dv_util.cpp: Likewise.
      	* runtime/dv_util.h: Likewise.
      	* runtime/liboffload_error.c: Likewise.
      	* runtime/liboffload_error_codes.h: Likewise.
      	* runtime/liboffload_msg.c: Likewise.
      	* runtime/liboffload_msg.h: Likewise.
      	* runtime/mic_lib.f90: Likewise.
      	* runtime/offload.h: Likewise.
      	* runtime/offload_common.cpp: Likewise.
      	* runtime/offload_common.h: Likewise.
      	* runtime/offload_engine.cpp: Likewise.
      	* runtime/offload_engine.h: Likewise.
      	* runtime/offload_env.cpp: Likewise.
      	* runtime/offload_env.h: Likewise.
      	* runtime/offload_host.cpp: Likewise.
      	* runtime/offload_host.h: Likewise.
      	* runtime/offload_iterator.h: Likewise.
      	* runtime/offload_myo_host.cpp: Likewise.
      	* runtime/offload_myo_host.h: Likewise.
      	* runtime/offload_myo_target.cpp: Likewise.
      	* runtime/offload_myo_target.h: Likewise.
      	* runtime/offload_omp_host.cpp: Likewise.
      	* runtime/offload_omp_target.cpp: Likewise.
      	* runtime/offload_orsl.cpp: Likewise.
      	* runtime/offload_orsl.h: Likewise.
      	* runtime/offload_table.cpp: Likewise.
      	* runtime/offload_table.h: Likewise.
      	* runtime/offload_target.cpp: Likewise.
      	* runtime/offload_target.h: Likewise.
      	* runtime/offload_target_main.cpp: Likewise.
      	* runtime/offload_timer.h: Likewise.
      	* runtime/offload_timer_host.cpp: Likewise.
      	* runtime/offload_timer_target.cpp: Likewise.
      	* runtime/offload_trace.cpp: Likewise.
      	* runtime/offload_trace.h: Likewise.
      	* runtime/offload_util.cpp: Likewise.
      	* runtime/offload_util.h: Likewise.
      	* runtime/ofldbegin.cpp: Likewise.
      	* runtime/ofldend.cpp: Likewise.
      	* runtime/orsl-lite/include/orsl-lite.h: Likewise.
      	* runtime/orsl-lite/lib/orsl-lite.c: Likewise.
      	* runtime/use_mpss2.txt: Likewise.
      	* include/coi/common/COIEngine_common.h: Merge from upstream, MPSS
      	version 3.5
      	<http://registrationcenter.intel.com/irc_nas/7445/mpss-src-3.5.tar>.
      	* include/coi/common/COIEvent_common.h: Likewise.
      	* include/coi/common/COIMacros_common.h: Likewise.
      	* include/coi/common/COIPerf_common.h: Likewise.
      	* include/coi/common/COIResult_common.h: Likewise.
      	* include/coi/common/COISysInfo_common.h: Likewise.
      	* include/coi/common/COITypes_common.h: Likewise.
      	* include/coi/sink/COIBuffer_sink.h: Likewise.
      	* include/coi/sink/COIPipeline_sink.h: Likewise.
      	* include/coi/sink/COIProcess_sink.h: Likewise.
      	* include/coi/source/COIBuffer_source.h: Likewise.
      	* include/coi/source/COIEngine_source.h: Likewise.
      	* include/coi/source/COIEvent_source.h: Likewise.
      	* include/coi/source/COIPipeline_source.h: Likewise.
      	* include/coi/source/COIProcess_source.h: Likewise.
      	* include/myo/myo.h: Likewise.
      	* include/myo/myoimpl.h: Likewise.
      	* include/myo/myotypes.h: Likewise.
      	* plugin/Makefile.am (myo_inc_dir): Remove.
      	(libgomp_plugin_intelmic_la_CPPFLAGS): Do not define MYO_SUPPORT.
      	(AM_CPPFLAGS): Likewise for offload_target_main.
      	* plugin/Makefile.in: Regenerate.
      	* runtime/emulator/coi_common.h: Update copyright years.
      	(OFFLOAD_EMUL_KNC_NUM_ENV): Replace with ...
      	(OFFLOAD_EMUL_NUM_ENV): ... this.
      	(enum cmd_t): Add CMD_CLOSE_LIBRARY.
      	* runtime/emulator/coi_device.cpp: Update copyright years.
      	(COIProcessWaitForShutdown): Add space between string constants.
      	Return handle to host in CMD_OPEN_LIBRARY.
      	Support CMD_CLOSE_LIBRARY.
      	* runtime/emulator/coi_device.h: Update copyright years.
      	* runtime/emulator/coi_host.cpp: Update copyright years.
      	(knc_engines_num): Replace with ...
      	(num_engines): ... this.
      	(init): Replace OFFLOAD_EMUL_KNC_NUM_ENV with OFFLOAD_EMUL_NUM_ENV.
      	(COIEngineGetCount): Replace COI_ISA_KNC with COI_ISA_MIC, and
      	knc_engines_num with num_engines.
      	(COIEngineGetHandle): Likewise.
      	(COIProcessCreateFromMemory): Add space between string constants.
      	(COIProcessCreateFromFile): New function.
      	(COIProcessLoadLibraryFromMemory): Rename arguments according to
      	COIProcess_source.h.  Return handle, received from target.
      	(COIProcessUnloadLibrary): New function.
      	(COIPipelineClearCPUMask): New function.
      	(COIPipelineSetCPUMask): New function.
      	(COIEngineGetInfo): New function.
      	* runtime/emulator/coi_host.h: Update copyright years.
      	* runtime/emulator/coi_version_asm.h: Regenerate.
      	* runtime/emulator/coi_version_linker_script.map: Regenerate.
      	* runtime/emulator/myo_client.cpp: Update copyright years.
      	* runtime/emulator/myo_service.cpp: Update copyright years.
      	(myoArenaRelease): New function.
      	(myoArenaAcquire): New function.
      	(myoArenaAlignedFree): New function.
      	(myoArenaAlignedMalloc): New function.
      	* runtime/emulator/myo_service.h: Update copyright years.
      	* runtime/emulator/myo_version_asm.h: Regenerate.
      	* runtime/emulator/myo_version_linker_script.map: Regenerate.
      
      From-SVN: r227532
      Ilya Verbin committed
  21. 24 Aug, 2015 2 commits
    • libgomp.map: Add 4.0.2 version. · 2a21ff19
      	libgomp/
      	* libgomp.map: Add 4.0.2 version.
      	* target.c (offload_image_descr): Add version field.
      	(gomp_load_image_to_device): Add version argument.  Adjust plugin
      	call.  Improve load mismatch diagnostic.
      	(gomp_unload_image_from_device): Add version argument.  Adjust plugin
      	call.
      	(GOMP_offload_regster): Make stub function, move bulk to ...
      	(GOMP_offload_register_ver): ... here.  Process version argument.
      	(GOMP_offload_unregister): Make stub function, move bulk to ...
      	(GOMP_offload_unregister_ver): ... here.  Process version argument.
      	(gomp_init_device): Process version field.
      	(gomp_unload_device): Process version field.
      	(gomp_load_plugin_for_device): Reimplement DLSYM & DLSYM_OPT
      	macros.  Check plugin version.
      	* libgomp.h (gomp_device_descr): Add version function field.  Adjust
      	loader and unloader types.
      	* oacc-host.c: Include gomp-constants.h.
      	(host_version): New.
      	(host_load_image, host_unload_image): Adjust.
      	(host_dispatch): Add host_version.
      	* plugin/plugin-nvptx.c: Include gomp-constants.h.
      	(GOMP_OFFLOAD_version): New.
      	(GOMP_OFFLOAD_load_image): Add version arg and check it.
      	(GOMP_OFFLOAD_unload_image): Likewise.
      	* plugin/plugin-host.c: Include gomp-constants.h.
      	(GOMP_OFFLOAD_version): New.
      	(GOMP_OFFLOAD_load_image): Add version arg.
      	(GOMP_OFFLOAD_unload_image): Likewise.
      
      	liboffloadmic/
      	* plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_version): New.
      	(GOMP_OFFLOAD_load_image): Add version arg and check it.
      	(GOMP_OFFLOAD_unload_image): Likewise.
      
      	include/
      	* gomp-constants.h (GOMP_VERSION, GOMP_VERSION_NVIDIA_PTX,
      	GOMP_VERSION_INTEL_MIC): New.
      	(GOMP_VERSION_PACK, GOMP_VERSION_LIB, GOMP_VERSION_DEV): New.
      
      	gcc/
      	* config/nvptx/mkoffload.c (process): Replace
      	GOMP_offload_{,un}register with GOMP_offload_{,un}register_ver.
      
      From-SVN: r227137
      Nathan Sidwell committed
    • Makefile.am (include_src_dir): Set. · 8e87588a
      	* plugin/Makefile.am (include_src_dir): Set.
      	[PLUGIN_HOST] (libgomp_plugin_intelmic_la_CPPFLAGS): Use it.
      	* plugin/Makefile.in: Regenerate.
      	* plugin/libgomp-plugin-intelmic.cpp: Include "gomp-constants.h".
      
      From-SVN: r227125
      Thomas Schwinge committed
  22. 24 Jul, 2015 1 commit
    • re PR other/66259 (Combined gcc and binutils build from git-master fails, with… · 6b1786aa
      re PR other/66259 (Combined gcc and binutils build from git-master fails, with gas/as-new not existing)
      
      	PR other/66259
      	* config-ml.in: Reflects renaming of configure.in to configure.ac
      	* configure: Likewise
      	* configure.ac: Likewise
      
      boehm-gc/
      
      	PR other/66259
      	* Makefile.direct: Reflects renaming of configure.in to configure.ac
      	* Makefile.dist: Likewise
      	* version.h: Likewise
      	* doc/README: Likewise
      
      config/
      
      	PR other/66259
      	* gettext.m4: Reflects renaming of configure.in to configure.ac
      	* po.m4: Likewise
      	* stdint.m4: Likewise
      	* tcl.m4: Likewise
      
      gcc/
      
      	PR other/66259
      	* acinclude.m4: Reflects renaming of configure.in to configure.ac
      	* configure: Likewise
      	* configure.ac: Likewise
      	* doc/install.texi: Likewise
      	* doc/tm.texi: Likewise
      	* doc/tm.texi.in: Likewise
      
      gcc/ada/
      
      	PR other/66259
      	* prj-nmsc.adb: Reflects renaming of configure.in to configure.ac
      	* gcc-interface/Makefile.in: Likewise
      
      intl/
      
      	PR other/66259
      	* configure: Reflects renaming of configure.in to configure.ac
      
      libjava/
      
      	PR other/66259
      	* configure: Reflects renaming of configure.in to configure.ac
      
      libjava/classpath
      
      	PR other/66259
      	* INSTALL: Reflects renaming of configure.in to configure.ac
      	* ltconfig: Likewise
      	* missing: Likewise
      	* m4/ac_prog_javac.m4: Likewise
      	* m4/ac_prog/javac_works.m4: Likewise
      	* resource/META-INF/mimetypes.default: Likewise
      
      libjava/libltdl
      
      	PR other/66259
      	* THREADS: Reflects renaming of configure.in to configure.ac
      
      liboffloadmic/
      
      	PR other/66259
      	* configure: Reflects renaming of configure.in to configure.ac
      
      From-SVN: r226183
      Jeff Law committed
  23. 17 Jul, 2015 1 commit
    • mkoffload.c (process): Constify target data. · afb2d80b
      	gcc/
      	* config/nvptx/mkoffload.c (process): Constify target data.
      	* config/i386/intelmic-mkoffload.c (generate_target_descr_file):
      	Constify target data.
      	(generate_target_offloadend_file): Likewise.
      
      	libgomp/
      	* libgomp.h (gomp_device_descr): Constify target data arguments.
      	* target.c (struct offload_image_descr): Constify target_data.
      	(gomp_offload_image_to_device): Likewise.
      	(GOMP_offload_register): Likewise.
      	(GOMP_offload_unrefister): Likewise.
      	* plugin/plugin-host.c (GOMP_OFFLOAD_load_image,
      	GOMP_OFFLOAD_unload_image): Constify target data.
      	* plugin/plugin-nvptx.c (struct ptx_image_data): Constify target data.
      	(GOMP_OFFLOAD_load_image, GOMP_OFFLOAD_unload_image): Likewise.
      
      	liboffloadmic/
      	* plugin/libgomp-plugin-intelmic.cpp (ImgDevAddrMap): Constify.
      	(offload_image, GOMP_OFFLOAD_load_image,
      	OMP_OFFLOAD_unload_image): Constify target data.
      
      From-SVN: r225936
      Nathan Sidwell committed
  24. 08 Jul, 2015 1 commit
    • liboffloadmic plugin: Address -Wnarrowing diagnostics · bb927664
          libtool: compile:  [...]/build-gcc/./gcc/xg++ [...] -c [...]/source-gcc/liboffloadmic/plugin/libgomp-plugin-intelmic.cpp [...]
          In file included from [...]/source-gcc/liboffloadmic/plugin/libgomp-plugin-intelmic.cpp:40:0:
          [...]/install/offload-x86_64-intelmicemul-linux-gnu/lib/gcc/x86_64-intelmicemul-linux-gnu/6.0.0/include/main_target_image.h:8628:1: error: narrowing conversion of '192' from 'int' to 'char' inside { } [-Wnarrowing]
           };
           ^
          [...]/install/offload-x86_64-intelmicemul-linux-gnu/lib/gcc/x86_64-intelmicemul-linux-gnu/6.0.0/include/main_target_image.h:8628:1: error: narrowing conversion of '192' from 'int' to 'char' inside { } [-Wnarrowing]
          [...]/install/offload-x86_64-intelmicemul-linux-gnu/lib/gcc/x86_64-intelmicemul-linux-gnu/6.0.0/include/main_target_image.h:8628:1: error: narrowing conversion of '164' from 'int' to 'char' inside { } [-Wnarrowing]
          [many more]
      
      	liboffloadmic/
      	* plugin/Makefile.am (main_target_image.h): Change type of data
      	member in struct MainTargetImage to uint8_t.
      	* plugin/Makefile.in: Regenerate.
      
      From-SVN: r225562
      Thomas Schwinge committed
  25. 13 May, 2015 1 commit
  26. 06 Apr, 2015 1 commit
    • libgomp: rework initialization of offloading · a51df54e
      gcc/
      	* config/i386/intelmic-mkoffload.c (generate_host_descr_file): Call
      	GOMP_offload_unregister from the destructor.
      libgomp/
      	* libgomp-plugin.h (struct mapping_table): Replace with addr_pair.
      	* libgomp.h (struct gomp_memory_mapping): Remove.
      	(struct target_mem_desc): Change type of mem_map from
      	gomp_memory_mapping * to splay_tree_s *.
      	(struct gomp_device_descr): Remove register_image_func, get_table_func.
      	Add load_image_func, unload_image_func.
      	Change type of mem_map from gomp_memory_mapping to splay_tree_s.
      	Remove offload_regions_registered.
      	(gomp_init_tables): Remove.
      	(gomp_free_memmap): Change type of argument from gomp_memory_mapping *
      	to splay_tree_s *.
      	* libgomp.map (GOMP_4.0.1): Add GOMP_offload_unregister.
      	* oacc-host.c (host_dispatch): Do not initialize register_image_func,
      	get_table_func, mem_map.is_initialized, mem_map.splay_tree.root,
      	offload_regions_registered.
      	Initialize load_image_func, unload_image_func, mem_map.root.
      	(goacc_host_init): Do not initialize host_dispatch.mem_map.lock.
      	* oacc-init.c (lazy_open): Don't call gomp_init_tables.
      	(acc_shutdown_1): Use dev's lock and splay_tree instead of mem_map's.
      	* oacc-mem.c (lookup_host): Get gomp_device_descr *dev instead of
      	gomp_memory_mapping *.  Use dev's lock and splay_tree.
      	(lookup_dev): Use dev's lock.
      	(acc_deviceptr): Pass dev to lookup_host instead of mem_map.
      	(acc_is_present): Likewise.
      	(acc_map_data): Likewise.
      	(acc_unmap_data): Likewise.  Use dev's lock.
      	(present_create_copy): Likewise.
      	(delete_copyout): Pass dev to lookup_host instead of mem_map.
      	(update_dev_host): Likewise.
      	(gomp_acc_remove_pointer): Likewise.  Use dev's lock.
      	* oacc-parallel.c (GOACC_parallel): Use dev's lock and splay_tree.
      	* plugin/plugin-host.c (GOMP_OFFLOAD_register_image): Remove.
      	(GOMP_OFFLOAD_get_table): Remove
      	(GOMP_OFFLOAD_load_image): New function.
      	(GOMP_OFFLOAD_unload_image): New function.
      	* target.c (register_lock): New mutex for offload image registration.
      	(num_devices): Do not guard with PLUGIN_SUPPORT.
      	(gomp_realloc_unlock): New static function.
      	(gomp_map_vars_existing): Add device descriptor argument.  Unlock mutex
      	before gomp_fatal.
      	(gomp_map_vars): Use dev's lock and splay_tree instead of mem_map's.
      	Pass devicep to gomp_map_vars_existing.  Unlock mutex before gomp_fatal.
      	(gomp_copy_from_async): Use dev's lock and splay_tree instead of
      	mem_map's.
      	(gomp_unmap_vars): Likewise.
      	(gomp_update): Remove gomp_memory_mapping argument.  Use dev's lock and
      	splay_tree instead of mm's.  Unlock mutex before gomp_fatal.
      	(gomp_offload_image_to_device): New static function.
      	(GOMP_offload_register): Add mutex lock.
      	Call gomp_offload_image_to_device for all initialized devices.
      	Replace gomp_realloc with gomp_realloc_unlock.
      	(GOMP_offload_unregister): New function.
      	(gomp_init_tables): Replace with gomp_init_device.  Replace a call to
      	get_table_func from the plugin with calls to init_device_func and
      	gomp_offload_image_to_device.
      	(gomp_free_memmap): Change type of argument from gomp_memory_mapping *
      	to splay_tree_s *.
      	(GOMP_target): Do not call gomp_init_tables.  Use dev's lock and
      	splay_tree instead of mem_map's.  Unlock mutex before gomp_fatal.
      	(GOMP_target_data): Do not call gomp_init_tables.
      	(GOMP_target_update): Likewise.  Remove argument from gomp_update.
      	(gomp_load_plugin_for_device): Replace register_image and get_table
      	with load_image and unload_image in DLSYM ().
      	(gomp_register_images_for_device): Remove function.
      	(gomp_target_init): Do not initialize current_device.mem_map.*,
      	current_device.offload_regions_registered.
      	Remove call to gomp_register_images_for_device.
      	Do not free offload_images and num_offload_images.
      liboffloadmic/
      	* plugin/libgomp-plugin-intelmic.cpp: Include map.
      	(AddrVect, DevAddrVect, ImgDevAddrMap): New typedefs.
      	(num_devices, num_images, address_table): New static vars.
      	(num_libraries, lib_descrs): Remove static vars.
      	(set_mic_lib_path): Rename to ...
      	(init): ... this.  Allocate address_table and get num_devices.
      	(GOMP_OFFLOAD_get_num_devices): return num_devices.
      	(load_lib_and_get_table): Remove static function.
      	(offload_image): New static function.
      	(GOMP_OFFLOAD_get_table): Remove function.
      	(GOMP_OFFLOAD_load_image, GOMP_OFFLOAD_unload_image): New functions.
      
      From-SVN: r221878
      Ilya Verbin committed
  27. 15 Jan, 2015 1 commit
    • Merge current set of OpenACC changes from gomp-4_0-branch. · 41dbbb37
      	contrib/
      	* gcc_update (files_and_dependencies): Update rules for new
      	libgomp/plugin/Makefrag.am and libgomp/plugin/configfrag.ac files.
      	gcc/
      	* builtin-types.def (BT_FN_VOID_INT_INT_VAR)
      	(BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR_INT_INT_VAR)
      	(BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR_INT_INT_INT_INT_INT_VAR):
      	New function types.
      	* builtins.c: Include "gomp-constants.h".
      	(expand_builtin_acc_on_device): New function.
      	(expand_builtin, is_inexpensive_builtin): Handle
      	BUILT_IN_ACC_ON_DEVICE.
      	* builtins.def (DEF_GOACC_BUILTIN, DEF_GOACC_BUILTIN_COMPILER):
      	New macros.
      	* cgraph.c (cgraph_node::create): Consider flag_openacc next to
      	flag_openmp.
      	* config.gcc <nvptx-*> (tm_file): Add nvptx/offload.h.
      	<*-intelmic-* | *-intelmicemul-*> (tm_file): Add
      	i386/intelmic-offload.h.
      	* gcc.c (LINK_COMMAND_SPEC, GOMP_SELF_SPECS): For -fopenacc, link
      	to libgomp and its dependencies.
      	* config/arc/arc.h (LINK_COMMAND_SPEC): Likewise.
      	* config/darwin.h (LINK_COMMAND_SPEC_A): Likewise.
      	* config/i386/mingw32.h (GOMP_SELF_SPECS): Likewise.
      	* config/ia64/hpux.h (LIB_SPEC): Likewise.
      	* config/pa/pa-hpux11.h (LIB_SPEC): Likewise.
      	* config/pa/pa64-hpux.h (LIB_SPEC): Likewise.
      	* doc/generic.texi: Update for OpenACC changes.
      	* doc/gimple.texi: Likewise.
      	* doc/invoke.texi: Likewise.
      	* doc/sourcebuild.texi: Likewise.
      	* gimple-pretty-print.c (dump_gimple_omp_for): Handle
      	GF_OMP_FOR_KIND_OACC_LOOP.
      	(dump_gimple_omp_target): Handle GF_OMP_TARGET_KIND_OACC_KERNELS,
      	GF_OMP_TARGET_KIND_OACC_PARALLEL, GF_OMP_TARGET_KIND_OACC_DATA,
      	GF_OMP_TARGET_KIND_OACC_UPDATE,
      	GF_OMP_TARGET_KIND_OACC_ENTER_EXIT_DATA.
      	Dump more data.
      	* gimple.c: Update comments for OpenACC changes.
      	* gimple.def: Likewise.
      	* gimple.h: Likewise.
      	(enum gf_mask): Add GF_OMP_FOR_KIND_OACC_LOOP,
      	GF_OMP_TARGET_KIND_OACC_PARALLEL, GF_OMP_TARGET_KIND_OACC_KERNELS,
      	GF_OMP_TARGET_KIND_OACC_DATA, GF_OMP_TARGET_KIND_OACC_UPDATE,
      	GF_OMP_TARGET_KIND_OACC_ENTER_EXIT_DATA.
      	(gimple_omp_for_cond, gimple_omp_for_set_cond): Sort in the
      	appropriate place.
      	(is_gimple_omp_oacc, is_gimple_omp_offloaded): New functions.
      	* gimplify.c: Include "gomp-constants.h".
      	Update comments for OpenACC changes.
      	(is_gimple_stmt): Handle OACC_PARALLEL, OACC_KERNELS, OACC_DATA,
      	OACC_HOST_DATA, OACC_DECLARE, OACC_UPDATE, OACC_ENTER_DATA,
      	OACC_EXIT_DATA, OACC_CACHE, OACC_LOOP.
      	(gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses): Handle
      	OMP_CLAUSE__CACHE_, OMP_CLAUSE_ASYNC, OMP_CLAUSE_WAIT,
      	OMP_CLAUSE_NUM_GANGS, OMP_CLAUSE_NUM_WORKERS,
      	OMP_CLAUSE_VECTOR_LENGTH, OMP_CLAUSE_GANG, OMP_CLAUSE_WORKER,
      	OMP_CLAUSE_VECTOR, OMP_CLAUSE_DEVICE_RESIDENT,
      	OMP_CLAUSE_USE_DEVICE, OMP_CLAUSE_INDEPENDENT, OMP_CLAUSE_AUTO,
      	OMP_CLAUSE_SEQ.
      	(gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses): Use
      	GOMP_MAP_* instead of OMP_CLAUSE_MAP_*.  Use
      	OMP_CLAUSE_SET_MAP_KIND.
      	(gimplify_oacc_cache): New function.
      	(gimplify_omp_for): Handle OACC_LOOP.
      	(gimplify_omp_workshare): Handle OACC_KERNELS, OACC_PARALLEL,
      	OACC_DATA.
      	(gimplify_omp_target_update): Handle OACC_ENTER_DATA,
      	OACC_EXIT_DATA, OACC_UPDATE.
      	(gimplify_expr): Handle OACC_LOOP, OACC_CACHE, OACC_HOST_DATA,
      	OACC_DECLARE, OACC_KERNELS, OACC_PARALLEL, OACC_DATA,
      	OACC_ENTER_DATA, OACC_EXIT_DATA, OACC_UPDATE.
      	(gimplify_body): Consider flag_openacc next to flag_openmp.
      	* lto-streamer-out.c: Include "gomp-constants.h".
      	* omp-builtins.def (BUILT_IN_ACC_GET_DEVICE_TYPE)
      	(BUILT_IN_GOACC_DATA_START, BUILT_IN_GOACC_DATA_END)
      	(BUILT_IN_GOACC_ENTER_EXIT_DATA, BUILT_IN_GOACC_PARALLEL)
      	(BUILT_IN_GOACC_UPDATE, BUILT_IN_GOACC_WAIT)
      	(BUILT_IN_GOACC_GET_THREAD_NUM, BUILT_IN_GOACC_GET_NUM_THREADS)
      	(BUILT_IN_ACC_ON_DEVICE): New builtins.
      	* omp-low.c: Include "gomp-constants.h".
      	Update comments for OpenACC changes.
      	(struct omp_context): Add reduction_map, gwv_below, gwv_this
      	members.
      	(extract_omp_for_data, use_pointer_for_field, install_var_field)
      	(new_omp_context, delete_omp_context, scan_sharing_clauses)
      	(create_omp_child_function, scan_omp_for, scan_omp_target)
      	(check_omp_nesting_restrictions, lower_reduction_clauses)
      	(build_omp_regions_1, diagnose_sb_0, make_gimple_omp_edges):
      	Update for OpenACC changes.
      	(scan_sharing_clauses): Handle OMP_CLAUSE_NUM_GANGS:
      	OMP_CLAUSE_NUM_WORKERS: OMP_CLAUSE_VECTOR_LENGTH,
      	OMP_CLAUSE_ASYNC, OMP_CLAUSE_WAIT, OMP_CLAUSE_GANG,
      	OMP_CLAUSE_WORKER, OMP_CLAUSE_VECTOR, OMP_CLAUSE_DEVICE_RESIDENT,
      	OMP_CLAUSE_USE_DEVICE, OMP_CLAUSE__CACHE_, OMP_CLAUSE_INDEPENDENT,
      	OMP_CLAUSE_AUTO, OMP_CLAUSE_SEQ.  Use GOMP_MAP_* instead of
      	OMP_CLAUSE_MAP_*.
      	(expand_omp_for_static_nochunk, expand_omp_for_static_chunk):
      	Handle GF_OMP_FOR_KIND_OACC_LOOP.
      	(expand_omp_target, lower_omp_target): Handle
      	GF_OMP_TARGET_KIND_OACC_PARALLEL, GF_OMP_TARGET_KIND_OACC_KERNELS,
      	GF_OMP_TARGET_KIND_OACC_UPDATE,
      	GF_OMP_TARGET_KIND_OACC_ENTER_EXIT_DATA,
      	GF_OMP_TARGET_KIND_OACC_DATA.
      	(pass_expand_omp::execute, execute_lower_omp)
      	(pass_diagnose_omp_blocks::gate): Consider flag_openacc next to
      	flag_openmp.
      	(offload_symbol_decl): New variable.
      	(oacc_get_reduction_array_id, oacc_max_threads)
      	(get_offload_symbol_decl, get_base_type, lookup_oacc_reduction)
      	(maybe_lookup_oacc_reduction, enclosing_target_ctx)
      	(oacc_loop_or_target_p, oacc_lower_reduction_var_helper)
      	(oacc_gimple_assign, oacc_initialize_reduction_data)
      	(oacc_finalize_reduction_data, oacc_process_reduction_data): New
      	functions.
      	(is_targetreg_ctx): Remove function.
      	* tree-core.h (enum omp_clause_code): Add OMP_CLAUSE__CACHE_,
      	OMP_CLAUSE_DEVICE_RESIDENT, OMP_CLAUSE_USE_DEVICE,
      	OMP_CLAUSE_GANG, OMP_CLAUSE_ASYNC, OMP_CLAUSE_WAIT,
      	OMP_CLAUSE_AUTO, OMP_CLAUSE_SEQ, OMP_CLAUSE_INDEPENDENT,
      	OMP_CLAUSE_WORKER, OMP_CLAUSE_VECTOR, OMP_CLAUSE_NUM_GANGS,
      	OMP_CLAUSE_NUM_WORKERS, OMP_CLAUSE_VECTOR_LENGTH.
      	* tree.c (omp_clause_code_name, walk_tree_1): Update accordingly.
      	* tree.h (OMP_CLAUSE_GANG_EXPR, OMP_CLAUSE_GANG_STATIC_EXPR)
      	(OMP_CLAUSE_ASYNC_EXPR, OMP_CLAUSE_WAIT_EXPR)
      	(OMP_CLAUSE_VECTOR_EXPR, OMP_CLAUSE_WORKER_EXPR)
      	(OMP_CLAUSE_NUM_GANGS_EXPR, OMP_CLAUSE_NUM_WORKERS_EXPR)
      	(OMP_CLAUSE_VECTOR_LENGTH_EXPR): New macros.
      	* tree-core.h: Update comments for OpenACC changes.
      	(enum omp_clause_map_kind): Remove.
      	(struct tree_omp_clause): Change type of map_kind member from enum
      	omp_clause_map_kind to unsigned char.
      	* tree-inline.c: Update comments for OpenACC changes.
      	* tree-nested.c: Likewise.  Include "gomp-constants.h".
      	(convert_nonlocal_reference_stmt, convert_local_reference_stmt)
      	(convert_tramp_reference_stmt, convert_gimple_call): Update for
      	OpenACC changes.  Use GOMP_MAP_* instead of OMP_CLAUSE_MAP_*.  Use
      	OMP_CLAUSE_SET_MAP_KIND.
      	* tree-pretty-print.c: Include "gomp-constants.h".
      	(dump_omp_clause): Handle OMP_CLAUSE_DEVICE_RESIDENT,
      	OMP_CLAUSE_USE_DEVICE, OMP_CLAUSE__CACHE_, OMP_CLAUSE_GANG,
      	OMP_CLAUSE_ASYNC, OMP_CLAUSE_AUTO, OMP_CLAUSE_SEQ,
      	OMP_CLAUSE_WAIT, OMP_CLAUSE_WORKER, OMP_CLAUSE_VECTOR,
      	OMP_CLAUSE_NUM_GANGS, OMP_CLAUSE_NUM_WORKERS,
      	OMP_CLAUSE_VECTOR_LENGTH, OMP_CLAUSE_INDEPENDENT.  Use GOMP_MAP_*
      	instead of OMP_CLAUSE_MAP_*.
      	(dump_generic_node): Handle OACC_PARALLEL, OACC_KERNELS,
      	OACC_DATA, OACC_HOST_DATA, OACC_DECLARE, OACC_UPDATE,
      	OACC_ENTER_DATA, OACC_EXIT_DATA, OACC_CACHE, OACC_LOOP.
      	* tree-streamer-in.c: Include "gomp-constants.h".
      	(unpack_ts_omp_clause_value_fields) Use GOMP_MAP_* instead of
      	OMP_CLAUSE_MAP_*.  Use OMP_CLAUSE_SET_MAP_KIND.
      	* tree-streamer-out.c: Include "gomp-constants.h".
      	(pack_ts_omp_clause_value_fields): Use GOMP_MAP_* instead of
      	OMP_CLAUSE_MAP_*.
      	* tree.def (OACC_PARALLEL, OACC_KERNELS, OACC_DATA)
      	(OACC_HOST_DATA, OACC_LOOP, OACC_CACHE, OACC_DECLARE)
      	(OACC_ENTER_DATA, OACC_EXIT_DATA, OACC_UPDATE): New tree codes.
      	* tree.c (omp_clause_num_ops): Update accordingly.
      	* tree.h (OMP_BODY, OMP_CLAUSES, OMP_LOOP_CHECK, OMP_CLAUSE_SIZE):
      	Likewise.
      	(OACC_PARALLEL_BODY, OACC_PARALLEL_CLAUSES, OACC_KERNELS_BODY)
      	(OACC_KERNELS_CLAUSES, OACC_DATA_BODY, OACC_DATA_CLAUSES)
      	(OACC_HOST_DATA_BODY, OACC_HOST_DATA_CLAUSES, OACC_CACHE_CLAUSES)
      	(OACC_DECLARE_CLAUSES, OACC_ENTER_DATA_CLAUSES)
      	(OACC_EXIT_DATA_CLAUSES, OACC_UPDATE_CLAUSES)
      	(OACC_KERNELS_COMBINED, OACC_PARALLEL_COMBINED): New macros.
      	* tree.h (OMP_CLAUSE_MAP_KIND): Cast it to enum gomp_map_kind.
      	(OMP_CLAUSE_SET_MAP_KIND): New macro.
      	* varpool.c (varpool_node::get_create): Consider flag_openacc next
      	to flag_openmp.
      	* config/i386/intelmic-offload.h: New file.
      	* config/nvptx/offload.h: Likewise.
      	gcc/ada/
      	* gcc-interface/utils.c (DEF_FUNCTION_TYPE_VAR_8)
      	(DEF_FUNCTION_TYPE_VAR_12): New macros.
      	gcc/c-family/
      	* c.opt (fopenacc): New option.
      	* c-cppbuiltin.c (c_cpp_builtins): Conditionally define _OPENACC.
      	* c-common.c (DEF_FUNCTION_TYPE_VAR_8, DEF_FUNCTION_TYPE_VAR_12):
      	New macros.
      	* c-common.h (c_finish_oacc_wait): New prototype.
      	* c-omp.c: Include "omp-low.h" and "gomp-constants.h".
      	(c_finish_oacc_wait): New function.
      	* c-pragma.c (oacc_pragmas): New variable.
      	(c_pp_lookup_pragma, init_pragma): Handle it.
      	* c-pragma.h (enum pragma_kind): Add PRAGMA_OACC_CACHE,
      	PRAGMA_OACC_DATA, PRAGMA_OACC_ENTER_DATA, PRAGMA_OACC_EXIT_DATA,
      	PRAGMA_OACC_KERNELS, PRAGMA_OACC_LOOP, PRAGMA_OACC_PARALLEL,
      	PRAGMA_OACC_UPDATE, PRAGMA_OACC_WAIT.
      	(enum pragma_omp_clause): Add PRAGMA_OACC_CLAUSE_ASYNC,
      	PRAGMA_OACC_CLAUSE_AUTO, PRAGMA_OACC_CLAUSE_COLLAPSE,
      	PRAGMA_OACC_CLAUSE_COPY, PRAGMA_OACC_CLAUSE_COPYIN,
      	PRAGMA_OACC_CLAUSE_COPYOUT, PRAGMA_OACC_CLAUSE_CREATE,
      	PRAGMA_OACC_CLAUSE_DELETE, PRAGMA_OACC_CLAUSE_DEVICE,
      	PRAGMA_OACC_CLAUSE_DEVICEPTR, PRAGMA_OACC_CLAUSE_FIRSTPRIVATE,
      	PRAGMA_OACC_CLAUSE_GANG, PRAGMA_OACC_CLAUSE_HOST,
      	PRAGMA_OACC_CLAUSE_IF, PRAGMA_OACC_CLAUSE_NUM_GANGS,
      	PRAGMA_OACC_CLAUSE_NUM_WORKERS, PRAGMA_OACC_CLAUSE_PRESENT,
      	PRAGMA_OACC_CLAUSE_PRESENT_OR_COPY,
      	PRAGMA_OACC_CLAUSE_PRESENT_OR_COPYIN,
      	PRAGMA_OACC_CLAUSE_PRESENT_OR_COPYOUT,
      	PRAGMA_OACC_CLAUSE_PRESENT_OR_CREATE, PRAGMA_OACC_CLAUSE_PRIVATE,
      	PRAGMA_OACC_CLAUSE_REDUCTION, PRAGMA_OACC_CLAUSE_SELF,
      	PRAGMA_OACC_CLAUSE_SEQ, PRAGMA_OACC_CLAUSE_VECTOR,
      	PRAGMA_OACC_CLAUSE_VECTOR_LENGTH, PRAGMA_OACC_CLAUSE_WAIT,
      	PRAGMA_OACC_CLAUSE_WORKER.
      	gcc/c/
      	* c-parser.c: Include "gomp-constants.h".
      	(c_parser_omp_clause_map): Use enum gomp_map_kind instead of enum
      	omp_clause_map_kind.  Use GOMP_MAP_* instead of OMP_CLAUSE_MAP_*.
      	Use OMP_CLAUSE_SET_MAP_KIND.
      	(c_parser_pragma): Handle PRAGMA_OACC_ENTER_DATA,
      	PRAGMA_OACC_EXIT_DATA, PRAGMA_OACC_UPDATE.
      	(c_parser_omp_construct): Handle PRAGMA_OACC_CACHE,
      	PRAGMA_OACC_DATA, PRAGMA_OACC_KERNELS, PRAGMA_OACC_LOOP,
      	PRAGMA_OACC_PARALLEL, PRAGMA_OACC_WAIT.
      	(c_parser_omp_clause_name): Handle "auto", "async", "copy",
      	"copyout", "create", "delete", "deviceptr", "gang", "host",
      	"num_gangs", "num_workers", "present", "present_or_copy", "pcopy",
      	"present_or_copyin", "pcopyin", "present_or_copyout", "pcopyout",
      	"present_or_create", "pcreate", "seq", "self", "vector",
      	"vector_length", "wait", "worker".
      	(OACC_DATA_CLAUSE_MASK, OACC_KERNELS_CLAUSE_MASK)
      	(OACC_ENTER_DATA_CLAUSE_MASK, OACC_EXIT_DATA_CLAUSE_MASK)
      	(OACC_LOOP_CLAUSE_MASK, OACC_PARALLEL_CLAUSE_MASK)
      	(OACC_UPDATE_CLAUSE_MASK, OACC_WAIT_CLAUSE_MASK): New macros.
      	(c_parser_omp_variable_list): Handle OMP_CLAUSE__CACHE_.
      	(c_parser_oacc_wait_list, c_parser_oacc_data_clause)
      	(c_parser_oacc_data_clause_deviceptr)
      	(c_parser_omp_clause_num_gangs, c_parser_omp_clause_num_workers)
      	(c_parser_oacc_clause_async, c_parser_oacc_clause_wait)
      	(c_parser_omp_clause_vector_length, c_parser_oacc_all_clauses)
      	(c_parser_oacc_cache, c_parser_oacc_data, c_parser_oacc_kernels)
      	(c_parser_oacc_enter_exit_data, c_parser_oacc_loop)
      	(c_parser_oacc_parallel, c_parser_oacc_update)
      	(c_parser_oacc_wait): New functions.
      	* c-tree.h (c_finish_oacc_parallel, c_finish_oacc_kernels)
      	(c_finish_oacc_data): New prototypes.
      	* c-typeck.c: Include "gomp-constants.h".
      	(handle_omp_array_sections): Handle GOMP_MAP_FORCE_DEVICEPTR.  Use
      	GOMP_MAP_* instead of OMP_CLAUSE_MAP_*.  Use
      	OMP_CLAUSE_SET_MAP_KIND.
      	(c_finish_oacc_parallel, c_finish_oacc_kernels)
      	(c_finish_oacc_data): New functions.
      	(c_finish_omp_clauses): Handle OMP_CLAUSE__CACHE_,
      	OMP_CLAUSE_NUM_GANGS, OMP_CLAUSE_NUM_WORKERS,
      	OMP_CLAUSE_VECTOR_LENGTH, OMP_CLAUSE_ASYNC, OMP_CLAUSE_WAIT,
      	OMP_CLAUSE_AUTO, OMP_CLAUSE_SEQ, OMP_CLAUSE_GANG,
      	OMP_CLAUSE_WORKER, OMP_CLAUSE_VECTOR, and OMP_CLAUSE_MAP's
      	GOMP_MAP_FORCE_DEVICEPTR.
      	gcc/cp/
      	* parser.c: Include "gomp-constants.h".
      	(cp_parser_omp_clause_map): Use enum gomp_map_kind instead of enum
      	omp_clause_map_kind.  Use GOMP_MAP_* instead of OMP_CLAUSE_MAP_*.
      	Use OMP_CLAUSE_SET_MAP_KIND.
      	(cp_parser_omp_construct, cp_parser_pragma): Handle
      	PRAGMA_OACC_CACHE, PRAGMA_OACC_DATA, PRAGMA_OACC_ENTER_DATA,
      	PRAGMA_OACC_EXIT_DATA, PRAGMA_OACC_KERNELS, PRAGMA_OACC_PARALLEL,
      	PRAGMA_OACC_LOOP, PRAGMA_OACC_UPDATE, PRAGMA_OACC_WAIT.
      	(cp_parser_omp_clause_name): Handle "async", "copy", "copyout",
      	"create", "delete", "deviceptr", "host", "num_gangs",
      	"num_workers", "present", "present_or_copy", "pcopy",
      	"present_or_copyin", "pcopyin", "present_or_copyout", "pcopyout",
      	"present_or_create", "pcreate", "vector_length", "wait".
      	(OACC_DATA_CLAUSE_MASK, OACC_ENTER_DATA_CLAUSE_MASK)
      	(OACC_EXIT_DATA_CLAUSE_MASK, OACC_KERNELS_CLAUSE_MASK)
      	(OACC_LOOP_CLAUSE_MASK, OACC_PARALLEL_CLAUSE_MASK)
      	(OACC_UPDATE_CLAUSE_MASK, OACC_WAIT_CLAUSE_MASK): New macros.
      	(cp_parser_omp_var_list_no_open): Handle OMP_CLAUSE__CACHE_.
      	(cp_parser_oacc_data_clause, cp_parser_oacc_data_clause_deviceptr)
      	(cp_parser_oacc_clause_vector_length, cp_parser_oacc_wait_list)
      	(cp_parser_oacc_clause_wait, cp_parser_omp_clause_num_gangs)
      	(cp_parser_omp_clause_num_workers, cp_parser_oacc_clause_async)
      	(cp_parser_oacc_all_clauses, cp_parser_oacc_cache)
      	(cp_parser_oacc_data, cp_parser_oacc_enter_exit_data)
      	(cp_parser_oacc_kernels, cp_parser_oacc_loop)
      	(cp_parser_oacc_parallel, cp_parser_oacc_update)
      	(cp_parser_oacc_wait): New functions.
      	* cp-tree.h (finish_oacc_data, finish_oacc_kernels)
      	(finish_oacc_parallel): New prototypes.
      	* semantics.c: Include "gomp-constants.h".
      	(handle_omp_array_sections): Handle GOMP_MAP_FORCE_DEVICEPTR.  Use
      	GOMP_MAP_* instead of OMP_CLAUSE_MAP_*.  Use
      	OMP_CLAUSE_SET_MAP_KIND.
      	(finish_omp_clauses): Handle OMP_CLAUSE_ASYNC,
      	OMP_CLAUSE_VECTOR_LENGTH, OMP_CLAUSE_WAIT, OMP_CLAUSE__CACHE_.
      	Use GOMP_MAP_* instead of OMP_CLAUSE_MAP_*.
      	(finish_oacc_data, finish_oacc_kernels, finish_oacc_parallel): New
      	functions.
      	gcc/fortran/
      	* lang.opt (fopenacc): New option.
      	* cpp.c (cpp_define_builtins): Conditionally define _OPENACC.
      	* dump-parse-tree.c (show_omp_node): Split part of it into...
      	(show_omp_clauses): ... this new function.
      	(show_omp_node, show_code_node): Handle EXEC_OACC_PARALLEL_LOOP,
      	EXEC_OACC_PARALLEL, EXEC_OACC_KERNELS_LOOP, EXEC_OACC_KERNELS,
      	EXEC_OACC_DATA, EXEC_OACC_HOST_DATA, EXEC_OACC_LOOP,
      	EXEC_OACC_UPDATE, EXEC_OACC_WAIT, EXEC_OACC_CACHE,
      	EXEC_OACC_ENTER_DATA, EXEC_OACC_EXIT_DATA.
      	(show_namespace): Update for OpenACC.
      	* f95-lang.c (DEF_FUNCTION_TYPE_VAR_2, DEF_FUNCTION_TYPE_VAR_8)
      	(DEF_FUNCTION_TYPE_VAR_12, DEF_GOACC_BUILTIN)
      	(DEF_GOACC_BUILTIN_COMPILER): New macros.
      	* types.def (BT_FN_VOID_INT_INT_VAR)
      	(BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR_INT_INT_VAR)
      	(BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR_INT_INT_INT_INT_INT_VAR):
      	New function types.
      	* gfortran.h (gfc_statement): Add ST_OACC_PARALLEL_LOOP,
      	ST_OACC_END_PARALLEL_LOOP, ST_OACC_PARALLEL, ST_OACC_END_PARALLEL,
      	ST_OACC_KERNELS, ST_OACC_END_KERNELS, ST_OACC_DATA,
      	ST_OACC_END_DATA, ST_OACC_HOST_DATA, ST_OACC_END_HOST_DATA,
      	ST_OACC_LOOP, ST_OACC_END_LOOP, ST_OACC_DECLARE, ST_OACC_UPDATE,
      	ST_OACC_WAIT, ST_OACC_CACHE, ST_OACC_KERNELS_LOOP,
      	ST_OACC_END_KERNELS_LOOP, ST_OACC_ENTER_DATA, ST_OACC_EXIT_DATA,
      	ST_OACC_ROUTINE.
      	(struct gfc_expr_list): New data type.
      	(gfc_get_expr_list): New macro.
      	(gfc_omp_map_op): Add OMP_MAP_FORCE_ALLOC, OMP_MAP_FORCE_DEALLOC,
      	OMP_MAP_FORCE_TO, OMP_MAP_FORCE_FROM, OMP_MAP_FORCE_TOFROM,
      	OMP_MAP_FORCE_PRESENT, OMP_MAP_FORCE_DEVICEPTR.
      	(OMP_LIST_FIRST, OMP_LIST_DEVICE_RESIDENT, OMP_LIST_USE_DEVICE)
      	(OMP_LIST_CACHE): New enumerators.
      	(struct gfc_omp_clauses): Add async_expr, gang_expr, worker_expr,
      	vector_expr, num_gangs_expr, num_workers_expr, vector_length_expr,
      	wait_list, tile_list, async, gang, worker, vector, seq,
      	independent, wait, par_auto, gang_static, and loc members.
      	(struct gfc_namespace): Add oacc_declare_clauses member.
      	(gfc_exec_op): Add EXEC_OACC_KERNELS_LOOP,
      	EXEC_OACC_PARALLEL_LOOP, EXEC_OACC_PARALLEL, EXEC_OACC_KERNELS,
      	EXEC_OACC_DATA, EXEC_OACC_HOST_DATA, EXEC_OACC_LOOP,
      	EXEC_OACC_UPDATE, EXEC_OACC_WAIT, EXEC_OACC_CACHE,
      	EXEC_OACC_ENTER_DATA, EXEC_OACC_EXIT_DATA.
      	(gfc_free_expr_list, gfc_resolve_oacc_directive)
      	(gfc_resolve_oacc_declare, gfc_resolve_oacc_parallel_loop_blocks)
      	(gfc_resolve_oacc_blocks): New prototypes.
      	* match.c (match_exit_cycle): Handle EXEC_OACC_LOOP and
      	EXEC_OACC_PARALLEL_LOOP.
      	* match.h (gfc_match_oacc_cache, gfc_match_oacc_wait)
      	(gfc_match_oacc_update, gfc_match_oacc_declare)
      	(gfc_match_oacc_loop, gfc_match_oacc_host_data)
      	(gfc_match_oacc_data, gfc_match_oacc_kernels)
      	(gfc_match_oacc_kernels_loop, gfc_match_oacc_parallel)
      	(gfc_match_oacc_parallel_loop, gfc_match_oacc_enter_data)
      	(gfc_match_oacc_exit_data, gfc_match_oacc_routine): New
      	prototypes.
      	* openmp.c: Include "diagnostic.h" and "gomp-constants.h".
      	(gfc_free_omp_clauses): Update for members added to struct
      	gfc_omp_clauses.
      	(gfc_match_omp_clauses): Change mask paramter to uint64_t.  Add
      	openacc parameter.
      	(resolve_omp_clauses): Add openacc parameter.  Update for OpenACC.
      	(struct fortran_omp_context): Add is_openmp member.
      	(gfc_resolve_omp_parallel_blocks): Initialize it.
      	(gfc_resolve_do_iterator): Update for OpenACC.
      	(gfc_resolve_omp_directive): Call
      	resolve_omp_directive_inside_oacc_region.
      	(OMP_CLAUSE_PRIVATE, OMP_CLAUSE_FIRSTPRIVATE)
      	(OMP_CLAUSE_LASTPRIVATE, OMP_CLAUSE_COPYPRIVATE)
      	(OMP_CLAUSE_SHARED, OMP_CLAUSE_COPYIN, OMP_CLAUSE_REDUCTION)
      	(OMP_CLAUSE_IF, OMP_CLAUSE_NUM_THREADS, OMP_CLAUSE_SCHEDULE)
      	(OMP_CLAUSE_DEFAULT, OMP_CLAUSE_ORDERED, OMP_CLAUSE_COLLAPSE)
      	(OMP_CLAUSE_UNTIED, OMP_CLAUSE_FINAL, OMP_CLAUSE_MERGEABLE)
      	(OMP_CLAUSE_ALIGNED, OMP_CLAUSE_DEPEND, OMP_CLAUSE_INBRANCH)
      	(OMP_CLAUSE_LINEAR, OMP_CLAUSE_NOTINBRANCH, OMP_CLAUSE_PROC_BIND)
      	(OMP_CLAUSE_SAFELEN, OMP_CLAUSE_SIMDLEN, OMP_CLAUSE_UNIFORM)
      	(OMP_CLAUSE_DEVICE, OMP_CLAUSE_MAP, OMP_CLAUSE_TO)
      	(OMP_CLAUSE_FROM, OMP_CLAUSE_NUM_TEAMS, OMP_CLAUSE_THREAD_LIMIT)
      	(OMP_CLAUSE_DIST_SCHEDULE): Use uint64_t.
      	(OMP_CLAUSE_ASYNC, OMP_CLAUSE_NUM_GANGS, OMP_CLAUSE_NUM_WORKERS)
      	(OMP_CLAUSE_VECTOR_LENGTH, OMP_CLAUSE_COPY, OMP_CLAUSE_COPYOUT)
      	(OMP_CLAUSE_CREATE, OMP_CLAUSE_PRESENT)
      	(OMP_CLAUSE_PRESENT_OR_COPY, OMP_CLAUSE_PRESENT_OR_COPYIN)
      	(OMP_CLAUSE_PRESENT_OR_COPYOUT, OMP_CLAUSE_PRESENT_OR_CREATE)
      	(OMP_CLAUSE_DEVICEPTR, OMP_CLAUSE_GANG, OMP_CLAUSE_WORKER)
      	(OMP_CLAUSE_VECTOR, OMP_CLAUSE_SEQ, OMP_CLAUSE_INDEPENDENT)
      	(OMP_CLAUSE_USE_DEVICE, OMP_CLAUSE_DEVICE_RESIDENT)
      	(OMP_CLAUSE_HOST_SELF, OMP_CLAUSE_OACC_DEVICE, OMP_CLAUSE_WAIT)
      	(OMP_CLAUSE_DELETE, OMP_CLAUSE_AUTO, OMP_CLAUSE_TILE): New macros.
      	(gfc_match_omp_clauses): Handle those.
      	(OACC_PARALLEL_CLAUSES, OACC_KERNELS_CLAUSES, OACC_DATA_CLAUSES)
      	(OACC_LOOP_CLAUSES, OACC_PARALLEL_LOOP_CLAUSES)
      	(OACC_KERNELS_LOOP_CLAUSES, OACC_HOST_DATA_CLAUSES)
      	(OACC_DECLARE_CLAUSES, OACC_UPDATE_CLAUSES)
      	(OACC_ENTER_DATA_CLAUSES, OACC_EXIT_DATA_CLAUSES)
      	(OACC_WAIT_CLAUSES): New macros.
      	(gfc_free_expr_list, match_oacc_expr_list, match_oacc_clause_gang)
      	(gfc_match_omp_map_clause, gfc_match_oacc_parallel_loop)
      	(gfc_match_oacc_parallel, gfc_match_oacc_kernels_loop)
      	(gfc_match_oacc_kernels, gfc_match_oacc_data)
      	(gfc_match_oacc_host_data, gfc_match_oacc_loop)
      	(gfc_match_oacc_declare, gfc_match_oacc_update)
      	(gfc_match_oacc_enter_data, gfc_match_oacc_exit_data)
      	(gfc_match_oacc_wait, gfc_match_oacc_cache)
      	(gfc_match_oacc_routine, oacc_is_loop)
      	(resolve_oacc_scalar_int_expr, resolve_oacc_positive_int_expr)
      	(check_symbol_not_pointer, check_array_not_assumed)
      	(resolve_oacc_data_clauses, resolve_oacc_deviceptr_clause)
      	(oacc_compatible_clauses, oacc_is_parallel, oacc_is_kernels)
      	(omp_code_to_statement, oacc_code_to_statement)
      	(resolve_oacc_directive_inside_omp_region)
      	(resolve_omp_directive_inside_oacc_region)
      	(resolve_oacc_nested_loops, resolve_oacc_params_in_parallel)
      	(resolve_oacc_loop_blocks, gfc_resolve_oacc_blocks)
      	(resolve_oacc_loop, resolve_oacc_cache, gfc_resolve_oacc_declare)
      	(gfc_resolve_oacc_directive): New functions.
      	* parse.c (next_free): Update for OpenACC.  Move some code into...
      	(verify_token_free): ... this new function.
      	(next_fixed): Update for OpenACC.  Move some code into...
      	(verify_token_fixed): ... this new function.
      	(case_executable): Add ST_OACC_UPDATE, ST_OACC_WAIT,
      	ST_OACC_CACHE, ST_OACC_ENTER_DATA, and ST_OACC_EXIT_DATA.
      	(case_exec_markers): Add ST_OACC_PARALLEL_LOOP, ST_OACC_PARALLEL,
      	ST_OACC_KERNELS, ST_OACC_DATA, ST_OACC_HOST_DATA, ST_OACC_LOOP,
      	ST_OACC_KERNELS_LOOP.
      	(case_decl): Add ST_OACC_ROUTINE.
      	(push_state, parse_critical_block, parse_progunit): Update for
      	OpenACC.
      	(gfc_ascii_statement): Handle ST_OACC_PARALLEL_LOOP,
      	ST_OACC_END_PARALLEL_LOOP, ST_OACC_PARALLEL, ST_OACC_END_PARALLEL,
      	ST_OACC_KERNELS, ST_OACC_END_KERNELS, ST_OACC_KERNELS_LOOP,
      	ST_OACC_END_KERNELS_LOOP, ST_OACC_DATA, ST_OACC_END_DATA,
      	ST_OACC_HOST_DATA, ST_OACC_END_HOST_DATA, ST_OACC_LOOP,
      	ST_OACC_END_LOOP, ST_OACC_DECLARE, ST_OACC_UPDATE, ST_OACC_WAIT,
      	ST_OACC_CACHE, ST_OACC_ENTER_DATA, ST_OACC_EXIT_DATA,
      	ST_OACC_ROUTINE.
      	(verify_st_order, parse_spec): Handle ST_OACC_DECLARE.
      	(parse_executable): Handle ST_OACC_PARALLEL_LOOP,
      	ST_OACC_KERNELS_LOOP, ST_OACC_LOOP, ST_OACC_PARALLEL,
      	ST_OACC_KERNELS, ST_OACC_DATA, ST_OACC_HOST_DATA.
      	(decode_oacc_directive, parse_oacc_structured_block)
      	(parse_oacc_loop, is_oacc): New functions.
      	* parse.h (struct gfc_state_data): Add oacc_declare_clauses
      	member.
      	(is_oacc): New prototype.
      	* resolve.c (gfc_resolve_blocks, gfc_resolve_code): Handle
      	EXEC_OACC_PARALLEL_LOOP, EXEC_OACC_PARALLEL,
      	EXEC_OACC_KERNELS_LOOP, EXEC_OACC_KERNELS, EXEC_OACC_DATA,
      	EXEC_OACC_HOST_DATA, EXEC_OACC_LOOP, EXEC_OACC_UPDATE,
      	EXEC_OACC_WAIT, EXEC_OACC_CACHE, EXEC_OACC_ENTER_DATA,
      	EXEC_OACC_EXIT_DATA.
      	(resolve_codes): Call gfc_resolve_oacc_declare.
      	* scanner.c (openacc_flag, openacc_locus): New variables.
      	(skip_free_comments): Update for OpenACC.  Move some code into...
      	(skip_omp_attribute): ... this new function.
      	(skip_oacc_attribute): New function.
      	(skip_fixed_comments, gfc_next_char_literal): Update for OpenACC.
      	* st.c (gfc_free_statement): Handle EXEC_OACC_PARALLEL_LOOP,
      	EXEC_OACC_PARALLEL, EXEC_OACC_KERNELS_LOOP, EXEC_OACC_KERNELS,
      	EXEC_OACC_DATA, EXEC_OACC_HOST_DATA, EXEC_OACC_LOOP,
      	EXEC_OACC_UPDATE, EXEC_OACC_WAIT, EXEC_OACC_CACHE,
      	EXEC_OACC_ENTER_DATA, EXEC_OACC_EXIT_DATA.
      	* trans-decl.c (gfc_generate_function_code): Update for OpenACC.
      	* trans-openmp.c: Include "gomp-constants.h".
      	(gfc_omp_finish_clause, gfc_trans_omp_clauses): Use GOMP_MAP_*
      	instead of OMP_CLAUSE_MAP_*.  Use OMP_CLAUSE_SET_MAP_KIND.
      	(gfc_trans_omp_clauses): Handle OMP_LIST_USE_DEVICE,
      	OMP_LIST_DEVICE_RESIDENT, OMP_LIST_CACHE, and OMP_MAP_FORCE_ALLOC,
      	OMP_MAP_FORCE_DEALLOC, OMP_MAP_FORCE_TO, OMP_MAP_FORCE_FROM,
      	OMP_MAP_FORCE_TOFROM, OMP_MAP_FORCE_PRESENT,
      	OMP_MAP_FORCE_DEVICEPTR, and gfc_omp_clauses' async, seq,
      	independent, wait_list, num_gangs_expr, num_workers_expr,
      	vector_length_expr, vector, vector_expr, worker, worker_expr,
      	gang, gang_expr members.
      	(gfc_trans_omp_do): Handle EXEC_OACC_LOOP.
      	(gfc_convert_expr_to_tree, gfc_trans_oacc_construct)
      	(gfc_trans_oacc_executable_directive)
      	(gfc_trans_oacc_wait_directive, gfc_trans_oacc_combined_directive)
      	(gfc_trans_oacc_declare, gfc_trans_oacc_directive): New functions.
      	* trans-stmt.c (gfc_trans_block_construct): Update for OpenACC.
      	* trans-stmt.h (gfc_trans_oacc_directive, gfc_trans_oacc_declare):
      	New prototypes.
      	* trans.c (tranc_code): Handle EXEC_OACC_CACHE, EXEC_OACC_WAIT,
      	EXEC_OACC_UPDATE, EXEC_OACC_LOOP, EXEC_OACC_HOST_DATA,
      	EXEC_OACC_DATA, EXEC_OACC_KERNELS, EXEC_OACC_KERNELS_LOOP,
      	EXEC_OACC_PARALLEL, EXEC_OACC_PARALLEL_LOOP, EXEC_OACC_ENTER_DATA,
      	EXEC_OACC_EXIT_DATA.
      	* gfortran.texi: Update for OpenACC.
      	* intrinsic.texi: Likewise.
      	* invoke.texi: Likewise.
      	gcc/lto/
      	* lto-lang.c (DEF_FUNCTION_TYPE_VAR_8, DEF_FUNCTION_TYPE_VAR_12):
      	New macros.
      	* lto.c: Include "gomp-constants.h".
      	gcc/testsuite/
      	* lib/target-supports.exp (check_effective_target_fopenacc): New
      	procedure.
      	* g++.dg/goacc-gomp/goacc-gomp.exp: New file.
      	* g++.dg/goacc/goacc.exp: Likewise.
      	* gcc.dg/goacc-gomp/goacc-gomp.exp: Likewise.
      	* gcc.dg/goacc/goacc.exp: Likewise.
      	* gfortran.dg/goacc/goacc.exp: Likewise.
      	* c-c++-common/cpp/openacc-define-1.c: New file.
      	* c-c++-common/cpp/openacc-define-2.c: Likewise.
      	* c-c++-common/cpp/openacc-define-3.c: Likewise.
      	* c-c++-common/goacc-gomp/nesting-1.c: Likewise.
      	* c-c++-common/goacc-gomp/nesting-fail-1.c: Likewise.
      	* c-c++-common/goacc/acc_on_device-2-off.c: Likewise.
      	* c-c++-common/goacc/acc_on_device-2.c: Likewise.
      	* c-c++-common/goacc/asyncwait-1.c: Likewise.
      	* c-c++-common/goacc/cache-1.c: Likewise.
      	* c-c++-common/goacc/clauses-fail.c: Likewise.
      	* c-c++-common/goacc/collapse-1.c: Likewise.
      	* c-c++-common/goacc/data-1.c: Likewise.
      	* c-c++-common/goacc/data-2.c: Likewise.
      	* c-c++-common/goacc/data-clause-duplicate-1.c: Likewise.
      	* c-c++-common/goacc/deviceptr-1.c: Likewise.
      	* c-c++-common/goacc/deviceptr-2.c: Likewise.
      	* c-c++-common/goacc/deviceptr-3.c: Likewise.
      	* c-c++-common/goacc/if-clause-1.c: Likewise.
      	* c-c++-common/goacc/if-clause-2.c: Likewise.
      	* c-c++-common/goacc/kernels-1.c: Likewise.
      	* c-c++-common/goacc/loop-1.c: Likewise.
      	* c-c++-common/goacc/loop-private-1.c: Likewise.
      	* c-c++-common/goacc/nesting-1.c: Likewise.
      	* c-c++-common/goacc/nesting-data-1.c: Likewise.
      	* c-c++-common/goacc/nesting-fail-1.c: Likewise.
      	* c-c++-common/goacc/parallel-1.c: Likewise.
      	* c-c++-common/goacc/pcopy.c: Likewise.
      	* c-c++-common/goacc/pcopyin.c: Likewise.
      	* c-c++-common/goacc/pcopyout.c: Likewise.
      	* c-c++-common/goacc/pcreate.c: Likewise.
      	* c-c++-common/goacc/pragma_context.c: Likewise.
      	* c-c++-common/goacc/present-1.c: Likewise.
      	* c-c++-common/goacc/reduction-1.c: Likewise.
      	* c-c++-common/goacc/reduction-2.c: Likewise.
      	* c-c++-common/goacc/reduction-3.c: Likewise.
      	* c-c++-common/goacc/reduction-4.c: Likewise.
      	* c-c++-common/goacc/sb-1.c: Likewise.
      	* c-c++-common/goacc/sb-2.c: Likewise.
      	* c-c++-common/goacc/sb-3.c: Likewise.
      	* c-c++-common/goacc/update-1.c: Likewise.
      	* gcc.dg/goacc/acc_on_device-1.c: Likewise.
      	* gfortran.dg/goacc/acc_on_device-1.f95: Likewise.
      	* gfortran.dg/goacc/acc_on_device-2-off.f95: Likewise.
      	* gfortran.dg/goacc/acc_on_device-2.f95: Likewise.
      	* gfortran.dg/goacc/assumed.f95: Likewise.
      	* gfortran.dg/goacc/asyncwait-1.f95: Likewise.
      	* gfortran.dg/goacc/asyncwait-2.f95: Likewise.
      	* gfortran.dg/goacc/asyncwait-3.f95: Likewise.
      	* gfortran.dg/goacc/asyncwait-4.f95: Likewise.
      	* gfortran.dg/goacc/branch.f95: Likewise.
      	* gfortran.dg/goacc/cache-1.f95: Likewise.
      	* gfortran.dg/goacc/coarray.f95: Likewise.
      	* gfortran.dg/goacc/continuation-free-form.f95: Likewise.
      	* gfortran.dg/goacc/cray.f95: Likewise.
      	* gfortran.dg/goacc/critical.f95: Likewise.
      	* gfortran.dg/goacc/data-clauses.f95: Likewise.
      	* gfortran.dg/goacc/data-tree.f95: Likewise.
      	* gfortran.dg/goacc/declare-1.f95: Likewise.
      	* gfortran.dg/goacc/enter-exit-data.f95: Likewise.
      	* gfortran.dg/goacc/fixed-1.f: Likewise.
      	* gfortran.dg/goacc/fixed-2.f: Likewise.
      	* gfortran.dg/goacc/fixed-3.f: Likewise.
      	* gfortran.dg/goacc/fixed-4.f: Likewise.
      	* gfortran.dg/goacc/host_data-tree.f95: Likewise.
      	* gfortran.dg/goacc/if.f95: Likewise.
      	* gfortran.dg/goacc/kernels-tree.f95: Likewise.
      	* gfortran.dg/goacc/list.f95: Likewise.
      	* gfortran.dg/goacc/literal.f95: Likewise.
      	* gfortran.dg/goacc/loop-1.f95: Likewise.
      	* gfortran.dg/goacc/loop-2.f95: Likewise.
      	* gfortran.dg/goacc/loop-3.f95: Likewise.
      	* gfortran.dg/goacc/loop-tree-1.f90: Likewise.
      	* gfortran.dg/goacc/omp.f95: Likewise.
      	* gfortran.dg/goacc/parallel-kernels-clauses.f95: Likewise.
      	* gfortran.dg/goacc/parallel-kernels-regions.f95: Likewise.
      	* gfortran.dg/goacc/parallel-tree.f95: Likewise.
      	* gfortran.dg/goacc/parameter.f95: Likewise.
      	* gfortran.dg/goacc/private-1.f95: Likewise.
      	* gfortran.dg/goacc/private-2.f95: Likewise.
      	* gfortran.dg/goacc/private-3.f95: Likewise.
      	* gfortran.dg/goacc/pure-elemental-procedures.f95: Likewise.
      	* gfortran.dg/goacc/reduction-2.f95: Likewise.
      	* gfortran.dg/goacc/reduction.f95: Likewise.
      	* gfortran.dg/goacc/routine-1.f90: Likewise.
      	* gfortran.dg/goacc/routine-2.f90: Likewise.
      	* gfortran.dg/goacc/sentinel-free-form.f95: Likewise.
      	* gfortran.dg/goacc/several-directives.f95: Likewise.
      	* gfortran.dg/goacc/sie.f95: Likewise.
      	* gfortran.dg/goacc/subarrays.f95: Likewise.
      	* gfortran.dg/gomp/map-1.f90: Likewise.
      	* gfortran.dg/openacc-define-1.f90: Likewise.
      	* gfortran.dg/openacc-define-2.f90: Likewise.
      	* gfortran.dg/openacc-define-3.f90: Likewise.
      	* g++.dg/gomp/block-1.C: Update for changed compiler output.
      	* g++.dg/gomp/block-2.C: Likewise.
      	* g++.dg/gomp/block-3.C: Likewise.
      	* g++.dg/gomp/block-5.C: Likewise.
      	* g++.dg/gomp/target-1.C: Likewise.
      	* g++.dg/gomp/target-2.C: Likewise.
      	* g++.dg/gomp/taskgroup-1.C: Likewise.
      	* g++.dg/gomp/teams-1.C: Likewise.
      	* gcc.dg/cilk-plus/jump-openmp.c: Likewise.
      	* gcc.dg/cilk-plus/jump.c: Likewise.
      	* gcc.dg/gomp/block-1.c: Likewise.
      	* gcc.dg/gomp/block-10.c: Likewise.
      	* gcc.dg/gomp/block-2.c: Likewise.
      	* gcc.dg/gomp/block-3.c: Likewise.
      	* gcc.dg/gomp/block-4.c: Likewise.
      	* gcc.dg/gomp/block-5.c: Likewise.
      	* gcc.dg/gomp/block-6.c: Likewise.
      	* gcc.dg/gomp/block-7.c: Likewise.
      	* gcc.dg/gomp/block-8.c: Likewise.
      	* gcc.dg/gomp/block-9.c: Likewise.
      	* gcc.dg/gomp/target-1.c: Likewise.
      	* gcc.dg/gomp/target-2.c: Likewise.
      	* gcc.dg/gomp/taskgroup-1.c: Likewise.
      	* gcc.dg/gomp/teams-1.c: Likewise.
      	include/
      	* gomp-constants.h: New file.
      	libgomp/
      	* Makefile.am (search_path): Add $(top_srcdir)/../include.
      	(libgomp_la_SOURCES): Add splay-tree.c, libgomp-plugin.c,
      	oacc-parallel.c, oacc-host.c, oacc-init.c, oacc-mem.c,
      	oacc-async.c, oacc-plugin.c, oacc-cuda.c.
      	[USE_FORTRAN] (libgomp_la_SOURCES): Add openacc.f90.
      	Include $(top_srcdir)/plugin/Makefrag.am.
      	(nodist_libsubinclude_HEADERS): Add openacc.h.
      	[USE_FORTRAN] (nodist_finclude_HEADERS): Add openacc_lib.h,
      	openacc.f90, openacc.mod, openacc_kinds.mod.
      	(omp_lib.mod): Generalize into...
      	(%.mod): ... this new rule.
      	(openacc_kinds.mod, openacc.mod): New rules.
      	* plugin/configfrag.ac: New file.
      	* configure.ac: Move plugin/offloading support into it.  Include
      	it.  Instantiate testsuite/libgomp-test-support.pt.exp.
      	* plugin/Makefrag.am: New file.
      	* testsuite/Makefile.am (OFFLOAD_TARGETS)
      	(OFFLOAD_ADDITIONAL_OPTIONS, OFFLOAD_ADDITIONAL_LIB_PATHS): Don't
      	export.
      	(libgomp-test-support.exp): New rule.
      	(all-local): Depend on it.
      	* Makefile.in: Regenerate.
      	* testsuite/Makefile.in: Regenerate.
      	* config.h.in: Likewise.
      	* configure: Likewise.
      	* configure.tgt: Harden shell syntax.
      	* env.c: Include "oacc-int.h".
      	(parse_acc_device_type): New function.
      	(gomp_debug_var, goacc_device_type, goacc_device_num): New
      	variables.
      	(initialize_env): Initialize those.  Call
      	goacc_runtime_initialize.
      	* error.c (gomp_vdebug, gomp_debug, gomp_vfatal): New functions.
      	(gomp_fatal): Call gomp_vfatal.
      	* libgomp.h: Include "libgomp-plugin.h" and <stdarg.h>.
      	(gomp_debug_var, goacc_device_type, goacc_device_num, gomp_vdebug)
      	(gomp_debug, gomp_verror, gomp_vfatal, gomp_init_targets_once)
      	(splay_tree_node, splay_tree, splay_tree_key)
      	(struct target_mem_desc, struct splay_tree_key_s)
      	(struct gomp_memory_mapping, struct acc_dispatch_t)
      	(struct gomp_device_descr, gomp_acc_insert_pointer)
      	(gomp_acc_remove_pointer, target_mem_desc, gomp_copy_from_async)
      	(gomp_unmap_vars, gomp_init_device, gomp_init_tables)
      	(gomp_free_memmap, gomp_fini_device): New declarations.
      	(gomp_vdebug, gomp_debug): New macros.
      	Include "splay-tree.h".
      	* libgomp.map (OACC_2.0): New symbol version.  Use for
      	acc_get_num_devices, acc_get_num_devices_h_, acc_set_device_type,
      	acc_set_device_type_h_, acc_get_device_type,
      	acc_get_device_type_h_, acc_set_device_num, acc_set_device_num_h_,
      	acc_get_device_num, acc_get_device_num_h_, acc_async_test,
      	acc_async_test_h_, acc_async_test_all, acc_async_test_all_h_,
      	acc_wait, acc_wait_h_, acc_wait_async, acc_wait_async_h_,
      	acc_wait_all, acc_wait_all_h_, acc_wait_all_async,
      	acc_wait_all_async_h_, acc_init, acc_init_h_, acc_shutdown,
      	acc_shutdown_h_, acc_on_device, acc_on_device_h_, acc_malloc,
      	acc_free, acc_copyin, acc_copyin_32_h_, acc_copyin_64_h_,
      	acc_copyin_array_h_, acc_present_or_copyin,
      	acc_present_or_copyin_32_h_, acc_present_or_copyin_64_h_,
      	acc_present_or_copyin_array_h_, acc_create, acc_create_32_h_,
      	acc_create_64_h_, acc_create_array_h_, acc_present_or_create,
      	acc_present_or_create_32_h_, acc_present_or_create_64_h_,
      	acc_present_or_create_array_h_, acc_copyout, acc_copyout_32_h_,
      	acc_copyout_64_h_, acc_copyout_array_h_, acc_delete,
      	acc_delete_32_h_, acc_delete_64_h_, acc_delete_array_h_,
      	acc_update_device, acc_update_device_32_h_,
      	acc_update_device_64_h_, acc_update_device_array_h_,
      	acc_update_self, acc_update_self_32_h_, acc_update_self_64_h_,
      	acc_update_self_array_h_, acc_map_data, acc_unmap_data,
      	acc_deviceptr, acc_hostptr, acc_is_present, acc_is_present_32_h_,
      	acc_is_present_64_h_, acc_is_present_array_h_,
      	acc_memcpy_to_device, acc_memcpy_from_device,
      	acc_get_current_cuda_device, acc_get_current_cuda_context,
      	acc_get_cuda_stream, acc_set_cuda_stream.
      	(GOACC_2.0): New symbol version.  Use for GOACC_data_end,
      	GOACC_data_start, GOACC_enter_exit_data, GOACC_parallel,
      	GOACC_update, GOACC_wait, GOACC_get_thread_num,
      	GOACC_get_num_threads.
      	(GOMP_PLUGIN_1.0): New symbol version.  Use for
      	GOMP_PLUGIN_malloc, GOMP_PLUGIN_malloc_cleared,
      	GOMP_PLUGIN_realloc, GOMP_PLUGIN_debug, GOMP_PLUGIN_error,
      	GOMP_PLUGIN_fatal, GOMP_PLUGIN_async_unmap_vars,
      	GOMP_PLUGIN_acc_thread.
      	* libgomp.texi: Update for OpenACC changes, and GOMP_DEBUG
      	environment variable.
      	* libgomp_g.h (GOACC_data_start, GOACC_data_end)
      	(GOACC_enter_exit_data, GOACC_parallel, GOACC_update, GOACC_wait)
      	(GOACC_get_num_threads, GOACC_get_thread_num): New declarations.
      	* splay-tree.h (splay_tree_lookup, splay_tree_insert)
      	(splay_tree_remove): New declarations.
      	(rotate_left, rotate_right, splay_tree_splay, splay_tree_insert)
      	(splay_tree_remove, splay_tree_lookup): Move into...
      	* splay-tree.c: ... this new file.
      	* target.c: Include "oacc-plugin.h", "oacc-int.h", <assert.h>.
      	(splay_tree_node, splay_tree, splay_tree_key)
      	(struct target_mem_desc, struct splay_tree_key_s)
      	(struct gomp_device_descr): Don't declare.
      	(num_devices_openmp): New variable.
      	(gomp_get_num_devices ): Use it.
      	(gomp_init_targets_once): New function.
      	(gomp_get_num_devices ): Use it.
      	(get_kind, gomp_copy_from_async, gomp_free_memmap)
      	(gomp_fini_device, gomp_register_image_for_device): New functions.
      	(gomp_map_vars): Add devaddrs parameter.
      	(gomp_update): Add mm parameter.
      	(gomp_init_device): Move most of it into...
      	(gomp_init_tables): ... this new function.
      	(gomp_register_images_for_device): Remove function.
      	(splay_compare, gomp_map_vars, gomp_unmap_vars, gomp_init_device):
      	Make them hidden instead of static.
      	(gomp_map_vars_existing, gomp_map_vars, gomp_unmap_vars)
      	(gomp_update, gomp_init_device, GOMP_target, GOMP_target_data)
      	(GOMP_target_end_data, GOMP_target_update)
      	(gomp_load_plugin_for_device, gomp_target_init): Update for
      	OpenACC changes.
      	* oacc-async.c: New file.
      	* oacc-cuda.c: Likewise.
      	* oacc-host.c: Likewise.
      	* oacc-init.c: Likewise.
      	* oacc-int.h: Likewise.
      	* oacc-mem.c: Likewise.
      	* oacc-parallel.c: Likewise.
      	* oacc-plugin.c: Likewise.
      	* oacc-plugin.h: Likewise.
      	* oacc-ptx.h: Likewise.
      	* openacc.f90: Likewise.
      	* openacc.h: Likewise.
      	* openacc_lib.h: Likewise.
      	* plugin/plugin-host.c: Likewise.
      	* plugin/plugin-nvptx.c: Likewise.
      	* libgomp-plugin.c: Likewise.
      	* libgomp-plugin.h: Likewise.
      	* libgomp_target.h: Remove file after merging content into the
      	former file.  Update all users.
      	* testsuite/lib/libgomp.exp: Load libgomp-test-support.exp.
      	(offload_targets_s, offload_targets_s_openacc): New variables.
      	(check_effective_target_openacc_nvidia_accel_present)
      	(check_effective_target_openacc_nvidia_accel_selected): New
      	procedures.
      	(libgomp_init): Update for OpenACC changes.
      	* testsuite/libgomp-test-support.exp.in: New file.
      	* testsuite/libgomp.oacc-c++/c++.exp: Likewise.
      	* testsuite/libgomp.oacc-c/c.exp: Likewise.
      	* testsuite/libgomp.oacc-fortran/fortran.exp: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/abort-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/abort-2.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/abort-3.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/abort-4.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/acc_on_device-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/asyncwait-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/cache-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/clauses-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/clauses-2.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/collapse-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/collapse-2.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/collapse-3.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/collapse-4.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/context-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/context-2.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/context-3.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/context-4.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-2.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-3.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-already-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-already-2.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-already-3.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-already-4.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-already-5.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-already-6.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-already-7.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/data-already-8.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/deviceptr-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/if-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/kernels-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/kernels-empty.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-10.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-11.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-12.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-13.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-14.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-15.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-16.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-17.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-18.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-19.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-2.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-20.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-21.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-22.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-23.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-24.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-25.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-26.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-27.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-28.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-29.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-3.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-30.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-31.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-32.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-33.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-34.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-35.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-36.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-37.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-38.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-39.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-4.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-40.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-41.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-42.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-43.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-44.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-45.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-46.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-47.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-48.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-49.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-5.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-50.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-51.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-52.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-53.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-54.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-55.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-56.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-57.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-58.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-59.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-6.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-60.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-61.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-62.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-63.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-64.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-65.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-66.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-67.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-68.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-69.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-7.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-70.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-71.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-72.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-73.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-74.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-75.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-76.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-77.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-78.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-79.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-80.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-81.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-82.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-83.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-84.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-85.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-86.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-87.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-88.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-89.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-9.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-90.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-91.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/lib-92.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/nested-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/nested-2.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/offset-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/parallel-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/parallel-empty.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/pointer-align-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/present-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/present-2.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/reduction-1.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/reduction-2.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/reduction-3.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/reduction-4.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/reduction-5.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/reduction-initial-1.c:
      	Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/subr.h: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/subr.ptx: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/timer.h: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/update-1-2.c: Likewise.
      	* testsuite/libgomp.oacc-c-c++-common/update-1.c: Likewise.
      	* testsuite/libgomp.oacc-fortran/abort-1.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/abort-2.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/acc_on_device-1-1.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/acc_on_device-1-2.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/acc_on_device-1-3.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/asyncwait-1.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/asyncwait-2.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/asyncwait-3.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/collapse-1.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/collapse-2.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/collapse-3.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/collapse-4.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/collapse-5.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/collapse-6.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/collapse-7.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/collapse-8.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-1.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-2.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-3.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-4-2.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-4.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-already-1.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-already-2.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-already-3.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-already-4.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-already-5.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-already-6.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-already-7.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/data-already-8.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/lib-1.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/lib-10.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/lib-2.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/lib-3.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/lib-4.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/lib-5.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/lib-6.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/lib-7.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/lib-8.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/map-1.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/openacc_version-1.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/openacc_version-2.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/pointer-align-1.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/pset-1.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/reduction-1.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/reduction-2.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/reduction-3.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/reduction-4.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/reduction-5.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/reduction-6.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/routine-1.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/routine-2.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/routine-3.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/routine-4.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/subarrays-1.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/subarrays-2.f90: Likewise.
      	liboffloadmic/
      	* plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_get_name)
      	(GOMP_OFFLOAD_get_caps, GOMP_OFFLOAD_fini_device): New functions.
      
      Co-Authored-By: Bernd Schmidt <bernds@codesourcery.com>
      Co-Authored-By: Cesar Philippidis <cesar@codesourcery.com>
      Co-Authored-By: Dmitry Bocharnikov <dmitry.b@samsung.com>
      Co-Authored-By: Evgeny Gavrin <e.gavrin@samsung.com>
      Co-Authored-By: Ilmir Usmanov <i.usmanov@samsung.com>
      Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
      Co-Authored-By: James Norris <jnorris@codesourcery.com>
      Co-Authored-By: Julian Brown <julian@codesourcery.com>
      Co-Authored-By: Nathan Sidwell <nathan@codesourcery.com>
      Co-Authored-By: Tobias Burnus <burnus@net-b.de>
      Co-Authored-By: Tom de Vries <tom@codesourcery.com>
      
      From-SVN: r219682
      Thomas Schwinge committed
  28. 10 Jan, 2015 1 commit
    • libgomp: Now known as the GNU Offloading and Multi Processing Runtime Library. · f1f3453e
      	libgomp/
      	* configure.ac: Rename libgomp from "GNU OpenMP Runtime Library"
      	to "GNU Offloading and Multi Processing Runtime Library".  Change
      	all users.
      	* configure: Regenerate.
      	* libgomp.texi: Update.
      	gcc/
      	* doc/install.texi: Update for libgomp being renamed from "GNU
      	OpenMP Runtime Library" to "GNU Offloading and Multi Processing
      	Runtime Library".
      	* doc/sourcebuild.texi: Likewise.
      	gcc/fortran/
      	* gfortran.texi: Update for libgomp being renamed from "GNU OpenMP
      	Runtime Library" to "GNU Offloading and Multi Processing Runtime
      	Library".
      	* intrinsic.texi: Likewise.
      	libstdc++-v3/
      	* doc/xml/manual/parallel_mode.xml: Update for libgomp being
      	renamed from "GNU OpenMP Runtime Library" to "GNU Offloading and
      	Multi Processing Runtime Library".
      
      Co-Authored-By: David Malcolm <dmalcolm@redhat.com>
      Co-Authored-By: Julian Brown <julian@codesourcery.com>
      
      From-SVN: r219425
      Thomas Schwinge committed
  29. 13 Nov, 2014 2 commits
    • [PATCH 3/4] OpenMP 4.0 offloading to Intel MIC: libgomp plugin. · 9d73ec14
      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.
      
      Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
      
      From-SVN: r217499
      Ilya Verbin committed
    • [PATCH 2/4] OpenMP 4.0 offloading to Intel MIC: liboffloadmic. · 5f520819
      	* 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.
      
      From-SVN: r217498
      Kirill Yukhin committed