public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* Re: Merge current set of OpenACC changes from gomp-4_0-branch
@ 2015-01-16 10:46 Uros Bizjak
  2015-01-16 10:54 ` Uros Bizjak
  0 siblings, 1 reply; 29+ messages in thread
From: Uros Bizjak @ 2015-01-16 10:46 UTC (permalink / raw)
  To: gcc-patches; +Cc: Thomas Schwinge

Hello!

> In r219682, I have committed to trunk our current set of OpenACC changes,
> which we had prepared on gomp-4_0-branch.  Thanks to everyone who has
> been contributing!

This patch breaks bootstrap on alpha-linux-gnu:

/space/homedirs/uros/gcc-build/./gcc/xgcc
-B/space/homedirs/uros/gcc-build/./gcc/
-B/usr/local/alphaev68-unknown-linux-gnu/bin/
-B/usr/local/alphaev68-unknown-linux-gnu/lib/ -isystem
/usr/local/alphaev68-unknown-linux-gnu/include -isystem
/usr/local/alphaev68-unknown-linux-gnu/sys-include -DHAVE_CONFIG_H -I.
-I../../../gcc-svn/trunk/libgomp
-I../../../gcc-svn/trunk/libgomp/config/linux/alpha
-I../../../gcc-svn/trunk/libgomp/config/linux
-I../../../gcc-svn/trunk/libgomp/config/posix
-I../../../gcc-svn/trunk/libgomp
-I../../../gcc-svn/trunk/libgomp/../include -Wall -Werror -pthread
-ftls-model=initial-exec -g -O2 -mieee -MT oacc-init.lo -MD -MP -MF
.deps/oacc-init.Tpo -c ../../../gcc-svn/trunk/libgomp/oacc-init.c
-fPIC -DPIC -o .libs/oacc-init.o
../../../gcc-svn/trunk/libgomp/oacc-init.c: In function ‘acc_on_device’:
../../../gcc-svn/trunk/libgomp/oacc-init.c:571:10: internal compiler
error: Segmentation fault
   return __builtin_acc_on_device (dev);
          ^
0x120bf4c13 crash_signal
        ../../gcc-svn/trunk/gcc/toplev.c:381
0x1203fc55c expand_builtin_acc_on_device
        ../../gcc-svn/trunk/gcc/builtins.c:5933
0x120400063 expand_builtin(tree_node*, rtx_def*, rtx_def*, machine_mode, int)
        ../../gcc-svn/trunk/gcc/builtins.c:7087
0x12063b5b3 expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        ../../gcc-svn/trunk/gcc/expr.c:10488
0x12062cc93 expand_expr_real(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        ../../gcc-svn/trunk/gcc/expr.c:8017
0x1206090bb expand_expr
        ../../gcc-svn/trunk/gcc/expr.h:254
0x12062e2a7 expand_expr_real_2(separate_ops*, rtx_def*, machine_mode,
expand_modifier)
        ../../gcc-svn/trunk/gcc/expr.c:8248
0x12063ce2f expand_expr_real_1(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        ../../gcc-svn/trunk/gcc/expr.c:10779
0x12062cc93 expand_expr_real(tree_node*, rtx_def*, machine_mode,
expand_modifier, rtx_def**, bool)
        ../../gcc-svn/trunk/gcc/expr.c:8017
0x1206090bb expand_expr
        ../../gcc-svn/trunk/gcc/expr.h:254


(gdb) r
Starting program: /space/uros/gcc-build/gcc/cc1 -quiet -g -O2 -mieee oacc-init.i

Program received signal SIGSEGV, Segmentation fault.
0x00000001203fc55c in expand_builtin_acc_on_device (exp=0x20000b17688,
target=0x0) at ../../gcc-svn/trunk/gcc/builtins.c:5933
5933      if (!REG_P (target) || GET_MODE (target) != target_mode)
(gdb) p target
$1 = (rtx) 0x0
(gdb) list
5928    #else
5929      v1 = GEN_INT (GOMP_DEVICE_NONE);
5930      v2 = GEN_INT (GOMP_DEVICE_HOST);
5931    #endif
5932      machine_mode target_mode = TYPE_MODE (integer_type_node);
5933      if (!REG_P (target) || GET_MODE (target) != target_mode)
5934        target = gen_reg_rtx (target_mode);
5935      emit_move_insn (target, const1_rtx);
5936      rtx_code_label *done_label = gen_label_rtx ();
5937      do_compare_rtx_and_jump (v, v1, EQ, false, v_mode, NULL_RTX,

"target" is NULL in expand_builtin_acc_on_device.

(I can open a PR with a preprocessed file if requested).

Uros.

^ permalink raw reply	[flat|nested] 29+ messages in thread
* Merge current set of OpenACC changes from gomp-4_0-branch
@ 2015-01-15 20:44 Thomas Schwinge
  2015-01-15 20:47 ` Jeff Law
                   ` (8 more replies)
  0 siblings, 9 replies; 29+ messages in thread
From: Thomas Schwinge @ 2015-01-15 20:44 UTC (permalink / raw)
  To: gcc-patches


[-- Attachment #1.1: Type: text/plain, Size: 83002 bytes --]

Hi!

In r219682, I have committed to trunk our current set of OpenACC changes,
which we had prepared on gomp-4_0-branch.  Thanks to everyone who has
been contributing!

Note that this is an experimental feature, incomplete, and subject to
change in future versions of GCC.  We shall update -- and keep updated --
<https://gcc.gnu.org/wiki/OpenACC>, to track the current status.  (Please
come back to that page in a few days, it has not yet been updated.)

Please note that there are still a handful of patches pending (posted
weeks ago, need to ping) that are needed for nvptx offloading, so that's
not yet functional.

Here's the commit log.  The patch itself is too big to post inline, so
please find it attached, gzipped.

commit ca4c354552639d3bac6d1f690d9e04017d7d80ed
Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Thu Jan 15 20:11:12 2015 +0000

    Merge current set of OpenACC changes from gomp-4_0-branch.
    
    	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.
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@219682 138bc75d-0d04-0410-961f-82ee72b054a4

 contrib/ChangeLog                                  |    5 +
 contrib/gcc_update                                 |    2 +
 gcc/ChangeLog                                      |  180 ++
 gcc/ada/ChangeLog                                  |    5 +
 gcc/ada/gcc-interface/utils.c                      |   18 +
 gcc/builtin-types.def                              |   11 +
 gcc/builtins.c                                     |   49 +
 gcc/builtins.def                                   |   16 +-
 gcc/c-family/ChangeLog                             |   38 +
 gcc/c-family/c-common.c                            |   17 +
 gcc/c-family/c-common.h                            |    1 +
 gcc/c-family/c-cppbuiltin.c                        |    3 +
 gcc/c-family/c-omp.c                               |   46 +-
 gcc/c-family/c-pragma.c                            |   31 +
 gcc/c-family/c-pragma.h                            |   44 +-
 gcc/c-family/c.opt                                 |    4 +
 gcc/c/ChangeLog                                    |   51 +
 gcc/c/c-parser.c                                   | 1036 ++++++++++-
 gcc/c/c-tree.h                                     |    3 +
 gcc/c/c-typeck.c                                   |   78 +-
 gcc/cgraph.c                                       |    2 +-
 gcc/config.gcc                                     |    2 +
 gcc/config/arc/arc.h                               |    2 +-
 gcc/config/darwin.h                                |    2 +-
 gcc/config/i386/intelmic-mkoffload.c               |    2 +-
 gcc/config/i386/intelmic-offload.h                 |   35 +
 gcc/config/i386/mingw32.h                          |    2 +-
 gcc/config/ia64/hpux.h                             |    2 +-
 gcc/config/nvptx/offload.h                         |   35 +
 gcc/config/pa/pa-hpux11.h                          |    4 +-
 gcc/config/pa/pa64-hpux.h                          |   24 +-
 gcc/cp/ChangeLog                                   |   45 +
 gcc/cp/cp-tree.h                                   |    3 +
 gcc/cp/parser.c                                    |  880 +++++++++-
 gcc/cp/semantics.c                                 |  102 +-
 gcc/doc/generic.texi                               |   71 +-
 gcc/doc/gimple.texi                                |    5 +-
 gcc/doc/invoke.texi                                |   18 +-
 gcc/doc/sourcebuild.texi                           |    3 +
 gcc/fortran/ChangeLog                              |  196 +++
 gcc/fortran/cpp.c                                  |    3 +
 gcc/fortran/dump-parse-tree.c                      |  478 ++++--
 gcc/fortran/f95-lang.c                             |   70 +
 gcc/fortran/gfortran.h                             |   58 +-
 gcc/fortran/gfortran.texi                          |   44 +-
 gcc/fortran/intrinsic.texi                         |   29 +
 gcc/fortran/invoke.texi                            |   16 +-
 gcc/fortran/lang.opt                               |    4 +
 gcc/fortran/match.c                                |   31 +-
 gcc/fortran/match.h                                |   16 +
 gcc/fortran/openmp.c                               | 1521 ++++++++++++++++-
 gcc/fortran/parse.c                                |  477 +++++-
 gcc/fortran/parse.h                                |    2 +
 gcc/fortran/resolve.c                              |   37 +
 gcc/fortran/scanner.c                              |  365 +++-
 gcc/fortran/st.c                                   |   12 +
 gcc/fortran/trans-decl.c                           |    7 +
 gcc/fortran/trans-openmp.c                         |  396 ++++-
 gcc/fortran/trans-stmt.c                           |    8 +
 gcc/fortran/trans-stmt.h                           |    4 +
 gcc/fortran/trans.c                                |   15 +
 gcc/fortran/types.def                              |   12 +
 gcc/gcc.c                                          |    5 +-
 gcc/gimple-pretty-print.c                          |   69 +-
 gcc/gimple.c                                       |    6 +-
 gcc/gimple.def                                     |   12 +-
 gcc/gimple.h                                       |  177 +-
 gcc/gimplify.c                                     |  254 ++-
 gcc/lto-streamer-out.c                             |    1 +
 gcc/lto/ChangeLog                                  |    7 +
 gcc/lto/lto-lang.c                                 |   17 +
 gcc/lto/lto.c                                      |    1 +
 gcc/omp-builtins.def                               |   33 +-
 gcc/omp-low.c                                      | 1598 ++++++++++++++---
 gcc/testsuite/ChangeLog                            |  130 ++
 gcc/testsuite/c-c++-common/cpp/openacc-define-1.c  |    6 +
 gcc/testsuite/c-c++-common/cpp/openacc-define-2.c  |    7 +
 gcc/testsuite/c-c++-common/cpp/openacc-define-3.c  |   11 +
 gcc/testsuite/c-c++-common/goacc-gomp/nesting-1.c  |   12 +
 .../c-c++-common/goacc-gomp/nesting-fail-1.c       |  457 +++++
 .../c-c++-common/goacc/acc_on_device-2-off.c       |   25 +
 gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c |   29 +
 gcc/testsuite/c-c++-common/goacc/asyncwait-1.c     |  213 +++
 gcc/testsuite/c-c++-common/goacc/cache-1.c         |   88 +
 gcc/testsuite/c-c++-common/goacc/clauses-fail.c    |   18 +
 gcc/testsuite/c-c++-common/goacc/collapse-1.c      |   97 ++
 gcc/testsuite/c-c++-common/goacc/data-1.c          |    6 +
 gcc/testsuite/c-c++-common/goacc/data-2.c          |   21 +
 .../c-c++-common/goacc/data-clause-duplicate-1.c   |   13 +
 gcc/testsuite/c-c++-common/goacc/deviceptr-1.c     |   86 +
 gcc/testsuite/c-c++-common/goacc/deviceptr-2.c     |   23 +
 gcc/testsuite/c-c++-common/goacc/deviceptr-3.c     |   11 +
 gcc/testsuite/c-c++-common/goacc/if-clause-1.c     |   10 +
 gcc/testsuite/c-c++-common/goacc/if-clause-2.c     |   11 +
 gcc/testsuite/c-c++-common/goacc/kernels-1.c       |    6 +
 gcc/testsuite/c-c++-common/goacc/loop-1.c          |   72 +
 gcc/testsuite/c-c++-common/goacc/loop-private-1.c  |   14 +
 gcc/testsuite/c-c++-common/goacc/nesting-1.c       |  101 ++
 gcc/testsuite/c-c++-common/goacc/nesting-data-1.c  |   61 +
 gcc/testsuite/c-c++-common/goacc/nesting-fail-1.c  |   39 +
 gcc/testsuite/c-c++-common/goacc/parallel-1.c      |    6 +
 gcc/testsuite/c-c++-common/goacc/pcopy.c           |   11 +
 gcc/testsuite/c-c++-common/goacc/pcopyin.c         |   11 +
 gcc/testsuite/c-c++-common/goacc/pcopyout.c        |   11 +
 gcc/testsuite/c-c++-common/goacc/pcreate.c         |   11 +
 gcc/testsuite/c-c++-common/goacc/pragma_context.c  |   34 +
 gcc/testsuite/c-c++-common/goacc/present-1.c       |   11 +
 gcc/testsuite/c-c++-common/goacc/reduction-1.c     |   71 +
 gcc/testsuite/c-c++-common/goacc/reduction-2.c     |   50 +
 gcc/testsuite/c-c++-common/goacc/reduction-3.c     |   50 +
 gcc/testsuite/c-c++-common/goacc/reduction-4.c     |   52 +
 gcc/testsuite/c-c++-common/goacc/sb-1.c            |   75 +
 gcc/testsuite/c-c++-common/goacc/sb-2.c            |   22 +
 gcc/testsuite/c-c++-common/goacc/sb-3.c            |   18 +
 gcc/testsuite/c-c++-common/goacc/update-1.c        |   17 +
 gcc/testsuite/g++.dg/goacc-gomp/goacc-gomp.exp     |   36 +
 gcc/testsuite/g++.dg/goacc/goacc.exp               |   35 +
 gcc/testsuite/g++.dg/gomp/block-1.C                |    2 +-
 gcc/testsuite/g++.dg/gomp/block-2.C                |    2 +-
 gcc/testsuite/g++.dg/gomp/block-3.C                |    4 +-
 gcc/testsuite/g++.dg/gomp/block-5.C                |    2 +-
 gcc/testsuite/g++.dg/gomp/target-1.C               |    2 +-
 gcc/testsuite/g++.dg/gomp/target-2.C               |    2 +-
 gcc/testsuite/g++.dg/gomp/taskgroup-1.C            |    2 +-
 gcc/testsuite/g++.dg/gomp/teams-1.C                |    4 +-
 gcc/testsuite/gcc.dg/cilk-plus/jump-openmp.c       |    4 +-
 gcc/testsuite/gcc.dg/cilk-plus/jump.c              |    4 +-
 gcc/testsuite/gcc.dg/goacc-gomp/goacc-gomp.exp     |   38 +
 gcc/testsuite/gcc.dg/goacc/acc_on_device-1.c       |   20 +
 gcc/testsuite/gcc.dg/goacc/goacc.exp               |   37 +
 gcc/testsuite/gcc.dg/gomp/block-1.c                |    4 +-
 gcc/testsuite/gcc.dg/gomp/block-10.c               |   12 +-
 gcc/testsuite/gcc.dg/gomp/block-2.c                |    4 +-
 gcc/testsuite/gcc.dg/gomp/block-3.c                |    8 +-
 gcc/testsuite/gcc.dg/gomp/block-4.c                |    2 +-
 gcc/testsuite/gcc.dg/gomp/block-5.c                |    4 +-
 gcc/testsuite/gcc.dg/gomp/block-6.c                |    2 +-
 gcc/testsuite/gcc.dg/gomp/block-7.c                |   12 +-
 gcc/testsuite/gcc.dg/gomp/block-8.c                |    2 +-
 gcc/testsuite/gcc.dg/gomp/block-9.c                |    2 +-
 gcc/testsuite/gcc.dg/gomp/target-1.c               |    6 +-
 gcc/testsuite/gcc.dg/gomp/target-2.c               |    6 +-
 gcc/testsuite/gcc.dg/gomp/taskgroup-1.c            |    6 +-
 gcc/testsuite/gcc.dg/gomp/teams-1.c                |   12 +-
 .../gfortran.dg/goacc/acc_on_device-1.f95          |   22 +
 .../gfortran.dg/goacc/acc_on_device-2-off.f95      |   39 +
 .../gfortran.dg/goacc/acc_on_device-2.f95          |   40 +
 gcc/testsuite/gfortran.dg/goacc/assumed.f95        |   47 +
 gcc/testsuite/gfortran.dg/goacc/asyncwait-1.f95    |   91 +
 gcc/testsuite/gfortran.dg/goacc/asyncwait-2.f95    |   91 +
 gcc/testsuite/gfortran.dg/goacc/asyncwait-3.f95    |   41 +
 gcc/testsuite/gfortran.dg/goacc/asyncwait-4.f95    |   37 +
 gcc/testsuite/gfortran.dg/goacc/branch.f95         |   53 +
 gcc/testsuite/gfortran.dg/goacc/cache-1.f95        |   12 +
 gcc/testsuite/gfortran.dg/goacc/coarray.f95        |   35 +
 .../gfortran.dg/goacc/continuation-free-form.f95   |   23 +
 gcc/testsuite/gfortran.dg/goacc/cray.f95           |   56 +
 gcc/testsuite/gfortran.dg/goacc/critical.f95       |   27 +
 gcc/testsuite/gfortran.dg/goacc/data-clauses.f95   |  259 +++
 gcc/testsuite/gfortran.dg/goacc/data-tree.f95      |   30 +
 gcc/testsuite/gfortran.dg/goacc/declare-1.f95      |   20 +
 .../gfortran.dg/goacc/enter-exit-data.f95          |   88 +
 gcc/testsuite/gfortran.dg/goacc/fixed-1.f          |   12 +
 gcc/testsuite/gfortran.dg/goacc/fixed-2.f          |   15 +
 gcc/testsuite/gfortran.dg/goacc/fixed-3.f          |   13 +
 gcc/testsuite/gfortran.dg/goacc/fixed-4.f          |    6 +
 gcc/testsuite/gfortran.dg/goacc/goacc.exp          |   36 +
 gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95 |   13 +
 gcc/testsuite/gfortran.dg/goacc/if.f95             |   52 +
 gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95   |   32 +
 gcc/testsuite/gfortran.dg/goacc/list.f95           |  111 ++
 gcc/testsuite/gfortran.dg/goacc/literal.f95        |   30 +
 gcc/testsuite/gfortran.dg/goacc/loop-1.f95         |  171 ++
 gcc/testsuite/gfortran.dg/goacc/loop-2.f95         |  649 +++++++
 gcc/testsuite/gfortran.dg/goacc/loop-3.f95         |   55 +
 gcc/testsuite/gfortran.dg/goacc/loop-tree-1.f90    |   48 +
 gcc/testsuite/gfortran.dg/goacc/omp.f95            |   66 +
 .../gfortran.dg/goacc/parallel-kernels-clauses.f95 |   96 ++
 .../gfortran.dg/goacc/parallel-kernels-regions.f95 |   55 +
 gcc/testsuite/gfortran.dg/goacc/parallel-tree.f95  |   41 +
 gcc/testsuite/gfortran.dg/goacc/parameter.f95      |   32 +
 gcc/testsuite/gfortran.dg/goacc/private-1.f95      |   37 +
 gcc/testsuite/gfortran.dg/goacc/private-2.f95      |   39 +
 gcc/testsuite/gfortran.dg/goacc/private-3.f95      |   23 +
 .../goacc/pure-elemental-procedures.f95            |   78 +
 gcc/testsuite/gfortran.dg/goacc/reduction-2.f95    |   21 +
 gcc/testsuite/gfortran.dg/goacc/reduction.f95      |  138 ++
 gcc/testsuite/gfortran.dg/goacc/routine-1.f90      |   37 +
 gcc/testsuite/gfortran.dg/goacc/routine-2.f90      |   17 +
 .../gfortran.dg/goacc/sentinel-free-form.f95       |   21 +
 .../gfortran.dg/goacc/several-directives.f95       |    6 +
 gcc/testsuite/gfortran.dg/goacc/sie.f95            |  252 +++
 gcc/testsuite/gfortran.dg/goacc/subarrays.f95      |   41 +
 gcc/testsuite/gfortran.dg/gomp/map-1.f90           |  110 ++
 gcc/testsuite/gfortran.dg/openacc-define-1.f90     |    7 +
 gcc/testsuite/gfortran.dg/openacc-define-2.f90     |    7 +
 gcc/testsuite/gfortran.dg/openacc-define-3.f90     |   11 +
 gcc/testsuite/lib/target-supports.exp              |    9 +
 gcc/tree-core.h                                    |   88 +-
 gcc/tree-inline.c                                  |    2 +-
 gcc/tree-nested.c                                  |   20 +-
 gcc/tree-pretty-print.c                            |  195 ++-
 gcc/tree-streamer-in.c                             |    6 +-
 gcc/tree-streamer-out.c                            |    4 +-
 gcc/tree.c                                         |   47 +-
 gcc/tree.def                                       |   56 +-
 gcc/tree.h                                         |   92 +-
 gcc/varpool.c                                      |    2 +-
 include/ChangeLog                                  |    6 +
 include/gomp-constants.h                           |  116 ++
 libgomp/ChangeLog                                  |  351 ++++
 libgomp/Makefile.am                                |   24 +-
 libgomp/Makefile.in                                |  169 +-
 libgomp/config.h.in                                |    9 +-
 libgomp/configure                                  |  249 ++-
 libgomp/configure.ac                               |   42 +-
 libgomp/configure.tgt                              |    2 +-
 libgomp/env.c                                      |   24 +
 libgomp/error.c                                    |   38 +-
 libgomp/{libgomp_target.h => libgomp-plugin.c}     |   67 +-
 libgomp/{libgomp_target.h => libgomp-plugin.h}     |   47 +-
 libgomp/libgomp.h                                  |  217 ++-
 libgomp/libgomp.map                                |  104 ++
 libgomp/libgomp.texi                               |   40 +-
 libgomp/libgomp_g.h                                |   16 +
 libgomp/{error.c => oacc-async.c}                  |   64 +-
 libgomp/oacc-cuda.c                                |   84 +
 libgomp/oacc-host.c                                |  100 ++
 libgomp/oacc-init.c                                |  636 +++++++
 libgomp/oacc-int.h                                 |  105 ++
 libgomp/oacc-mem.c                                 |  585 +++++++
 libgomp/oacc-parallel.c                            |  490 ++++++
 libgomp/{libgomp_target.h => oacc-plugin.c}        |   37 +-
 libgomp/{libgomp_target.h => oacc-plugin.h}        |   26 +-
 libgomp/oacc-ptx.h                                 |  202 +++
 libgomp/openacc.f90                                |  956 +++++++++++
 libgomp/openacc.h                                  |  118 ++
 libgomp/openacc_lib.h                              |  381 +++++
 libgomp/plugin/Makefrag.am                         |   49 +
 libgomp/plugin/configfrag.ac                       |  148 ++
 libgomp/plugin/plugin-host.c                       |  266 +++
 libgomp/plugin/plugin-nvptx.c                      | 1791 ++++++++++++++++++++
 libgomp/{splay-tree.h => splay-tree.c}             |   31 +-
 libgomp/splay-tree.h                               |  180 +-
 libgomp/target.c                                   |  640 ++++---
 libgomp/testsuite/Makefile.am                      |   17 +-
 libgomp/testsuite/Makefile.in                      |   56 +-
 libgomp/testsuite/lib/libgomp.exp                  |   77 +-
 libgomp/testsuite/libgomp-test-support.exp.in      |    4 +
 libgomp/testsuite/libgomp.oacc-c++/c++.exp         |  107 ++
 .../testsuite/libgomp.oacc-c-c++-common/abort-1.c  |   17 +
 .../testsuite/libgomp.oacc-c-c++-common/abort-2.c  |   17 +
 .../testsuite/libgomp.oacc-c-c++-common/abort-3.c  |   17 +
 .../testsuite/libgomp.oacc-c-c++-common/abort-4.c  |   17 +
 .../libgomp.oacc-c-c++-common/acc_on_device-1.c    |   75 +
 .../libgomp.oacc-c-c++-common/asyncwait-1.c        |  466 +++++
 .../testsuite/libgomp.oacc-c-c++-common/cache-1.c  |   48 +
 .../libgomp.oacc-c-c++-common/clauses-1.c          |  623 +++++++
 .../libgomp.oacc-c-c++-common/clauses-2.c          |   67 +
 .../libgomp.oacc-c-c++-common/collapse-1.c         |   31 +
 .../libgomp.oacc-c-c++-common/collapse-2.c         |   37 +
 .../libgomp.oacc-c-c++-common/collapse-3.c         |   40 +
 .../libgomp.oacc-c-c++-common/collapse-4.c         |   27 +
 .../libgomp.oacc-c-c++-common/context-1.c          |  213 +++
 .../libgomp.oacc-c-c++-common/context-2.c          |  223 +++
 .../libgomp.oacc-c-c++-common/context-3.c          |  200 +++
 .../libgomp.oacc-c-c++-common/context-4.c          |  213 +++
 .../testsuite/libgomp.oacc-c-c++-common/data-1.c   |  188 ++
 .../testsuite/libgomp.oacc-c-c++-common/data-2.c   |  162 ++
 .../testsuite/libgomp.oacc-c-c++-common/data-3.c   |  166 ++
 .../libgomp.oacc-c-c++-common/data-already-1.c     |   19 +
 .../libgomp.oacc-c-c++-common/data-already-2.c     |   16 +
 .../libgomp.oacc-c-c++-common/data-already-3.c     |   17 +
 .../libgomp.oacc-c-c++-common/data-already-4.c     |   17 +
 .../libgomp.oacc-c-c++-common/data-already-5.c     |   17 +
 .../libgomp.oacc-c-c++-common/data-already-6.c     |   17 +
 .../libgomp.oacc-c-c++-common/data-already-7.c     |   17 +
 .../libgomp.oacc-c-c++-common/data-already-8.c     |   16 +
 .../libgomp.oacc-c-c++-common/deviceptr-1.c        |   32 +
 libgomp/testsuite/libgomp.oacc-c-c++-common/if-1.c |  613 +++++++
 .../libgomp.oacc-c-c++-common/kernels-1.c          |  184 ++
 .../libgomp.oacc-c-c++-common/kernels-empty.c      |    6 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-1.c    |   24 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-10.c   |   58 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-11.c   |   23 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-12.c   |   37 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-13.c   |   60 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-14.c   |   61 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-15.c   |   33 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-16.c   |   29 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-17.c   |   31 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-18.c   |   34 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-19.c   |   60 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-2.c    |   26 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-20.c   |   29 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-21.c   |   29 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-22.c   |   29 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-23.c   |   39 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-24.c   |   55 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-25.c   |   30 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-26.c   |   26 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-27.c   |   26 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-28.c   |   26 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-29.c   |   26 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-3.c    |   15 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-30.c   |   26 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-31.c   |   27 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-32.c   |   38 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-33.c   |   31 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-34.c   |   33 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-35.c   |   26 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-36.c   |   26 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-37.c   |   40 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-38.c   |   64 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-39.c   |   41 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-4.c    |   13 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-40.c   |   42 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-41.c   |   43 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-42.c   |   35 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-43.c   |   45 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-44.c   |   45 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-45.c   |   50 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-46.c   |   42 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-47.c   |   43 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-48.c   |   43 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-49.c   |   48 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-5.c    |   40 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-50.c   |   30 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-51.c   |   41 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-52.c   |   28 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-53.c   |   28 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-54.c   |   28 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-55.c   |   48 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-56.c   |   33 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-57.c   |   28 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-58.c   |   28 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-59.c   |   55 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-6.c    |   39 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-60.c   |   54 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-61.c   |   70 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-62.c   |   49 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-63.c   |   43 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-64.c   |   43 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-65.c   |   43 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-66.c   |   48 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-67.c   |   43 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-68.c   |   43 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-69.c   |  124 ++
 .../testsuite/libgomp.oacc-c-c++-common/lib-7.c    |   18 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-70.c   |  136 ++
 .../testsuite/libgomp.oacc-c-c++-common/lib-71.c   |  119 ++
 .../testsuite/libgomp.oacc-c-c++-common/lib-72.c   |  121 ++
 .../testsuite/libgomp.oacc-c-c++-common/lib-73.c   |  134 ++
 .../testsuite/libgomp.oacc-c-c++-common/lib-74.c   |  139 ++
 .../testsuite/libgomp.oacc-c-c++-common/lib-75.c   |  141 ++
 .../testsuite/libgomp.oacc-c-c++-common/lib-76.c   |  147 ++
 .../testsuite/libgomp.oacc-c-c++-common/lib-77.c   |  135 ++
 .../testsuite/libgomp.oacc-c-c++-common/lib-78.c   |  140 ++
 .../testsuite/libgomp.oacc-c-c++-common/lib-79.c   |  167 ++
 .../testsuite/libgomp.oacc-c-c++-common/lib-80.c   |  132 ++
 .../testsuite/libgomp.oacc-c-c++-common/lib-81.c   |  211 +++
 .../testsuite/libgomp.oacc-c-c++-common/lib-82.c   |  144 ++
 .../testsuite/libgomp.oacc-c-c++-common/lib-83.c   |   58 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-84.c   |   66 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-85.c   |   52 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-86.c   |   42 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-87.c   |   42 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-88.c   |  111 ++
 .../testsuite/libgomp.oacc-c-c++-common/lib-89.c   |  118 ++
 .../testsuite/libgomp.oacc-c-c++-common/lib-9.c    |   70 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-90.c   |  137 ++
 .../testsuite/libgomp.oacc-c-c++-common/lib-91.c   |   84 +
 .../testsuite/libgomp.oacc-c-c++-common/lib-92.c   |  112 ++
 .../testsuite/libgomp.oacc-c-c++-common/nested-1.c |  680 ++++++++
 .../testsuite/libgomp.oacc-c-c++-common/nested-2.c |  141 ++
 .../testsuite/libgomp.oacc-c-c++-common/offset-1.c |   97 ++
 .../libgomp.oacc-c-c++-common/parallel-1.c         |  206 +++
 .../libgomp.oacc-c-c++-common/parallel-empty.c     |    6 +
 .../libgomp.oacc-c-c++-common/pointer-align-1.c    |   35 +
 .../libgomp.oacc-c-c++-common/present-1.c          |   48 +
 .../libgomp.oacc-c-c++-common/present-2.c          |   48 +
 .../libgomp.oacc-c-c++-common/reduction-1.c        |  174 ++
 .../libgomp.oacc-c-c++-common/reduction-2.c        |  126 ++
 .../libgomp.oacc-c-c++-common/reduction-3.c        |  126 ++
 .../libgomp.oacc-c-c++-common/reduction-4.c        |  129 ++
 .../libgomp.oacc-c-c++-common/reduction-5.c        |   32 +
 .../reduction-initial-1.c                          |   25 +
 libgomp/testsuite/libgomp.oacc-c-c++-common/subr.h |   46 +
 .../testsuite/libgomp.oacc-c-c++-common/subr.ptx   |  148 ++
 .../testsuite/libgomp.oacc-c-c++-common/timer.h    |  103 ++
 .../libgomp.oacc-c-c++-common/update-1-2.c         |  282 +++
 .../testsuite/libgomp.oacc-c-c++-common/update-1.c |  280 +++
 libgomp/testsuite/libgomp.oacc-c/c.exp             |   71 +
 libgomp/testsuite/libgomp.oacc-fortran/abort-1.f90 |   10 +
 libgomp/testsuite/libgomp.oacc-fortran/abort-2.f90 |   13 +
 .../libgomp.oacc-fortran/acc_on_device-1-1.f90     |   52 +
 .../libgomp.oacc-fortran/acc_on_device-1-2.f       |   52 +
 .../libgomp.oacc-fortran/acc_on_device-1-3.f       |   52 +
 .../testsuite/libgomp.oacc-fortran/asyncwait-1.f90 |  135 ++
 .../testsuite/libgomp.oacc-fortran/asyncwait-2.f90 |   40 +
 .../testsuite/libgomp.oacc-fortran/asyncwait-3.f90 |   42 +
 .../testsuite/libgomp.oacc-fortran/collapse-1.f90  |   27 +
 .../testsuite/libgomp.oacc-fortran/collapse-2.f90  |   25 +
 .../testsuite/libgomp.oacc-fortran/collapse-3.f90  |   28 +
 .../testsuite/libgomp.oacc-fortran/collapse-4.f90  |   40 +
 .../testsuite/libgomp.oacc-fortran/collapse-5.f90  |   48 +
 .../testsuite/libgomp.oacc-fortran/collapse-6.f90  |   50 +
 .../testsuite/libgomp.oacc-fortran/collapse-7.f90  |   40 +
 .../testsuite/libgomp.oacc-fortran/collapse-8.f90  |   47 +
 libgomp/testsuite/libgomp.oacc-fortran/data-1.f90  |   45 +
 libgomp/testsuite/libgomp.oacc-fortran/data-2.f90  |   31 +
 libgomp/testsuite/libgomp.oacc-fortran/data-3.f90  |  131 ++
 .../testsuite/libgomp.oacc-fortran/data-4-2.f90    |  138 ++
 libgomp/testsuite/libgomp.oacc-fortran/data-4.f90  |  136 ++
 .../libgomp.oacc-fortran/data-already-1.f          |   17 +
 .../libgomp.oacc-fortran/data-already-2.f          |   16 +
 .../libgomp.oacc-fortran/data-already-3.f          |   15 +
 .../libgomp.oacc-fortran/data-already-4.f          |   14 +
 .../libgomp.oacc-fortran/data-already-5.f          |   14 +
 .../libgomp.oacc-fortran/data-already-6.f          |   14 +
 .../libgomp.oacc-fortran/data-already-7.f          |   14 +
 .../libgomp.oacc-fortran/data-already-8.f          |   16 +
 libgomp/testsuite/libgomp.oacc-fortran/fortran.exp |   98 ++
 libgomp/testsuite/libgomp.oacc-fortran/lib-1.f90   |   13 +
 libgomp/testsuite/libgomp.oacc-fortran/lib-10.f90  |   82 +
 libgomp/testsuite/libgomp.oacc-fortran/lib-2.f     |   13 +
 libgomp/testsuite/libgomp.oacc-fortran/lib-3.f     |   13 +
 libgomp/testsuite/libgomp.oacc-fortran/lib-4.f90   |   35 +
 libgomp/testsuite/libgomp.oacc-fortran/lib-5.f90   |   31 +
 libgomp/testsuite/libgomp.oacc-fortran/lib-6.f90   |   35 +
 libgomp/testsuite/libgomp.oacc-fortran/lib-7.f90   |   31 +
 libgomp/testsuite/libgomp.oacc-fortran/lib-8.f90   |   83 +
 libgomp/testsuite/libgomp.oacc-fortran/map-1.f90   |   97 ++
 .../libgomp.oacc-fortran/openacc_version-1.f       |    9 +
 .../libgomp.oacc-fortran/openacc_version-2.f90     |    9 +
 .../libgomp.oacc-fortran/pointer-align-1.f90       |   21 +
 libgomp/testsuite/libgomp.oacc-fortran/pset-1.f90  |  229 +++
 .../testsuite/libgomp.oacc-fortran/reduction-1.f90 |  225 +++
 .../testsuite/libgomp.oacc-fortran/reduction-2.f90 |  170 ++
 .../testsuite/libgomp.oacc-fortran/reduction-3.f90 |  170 ++
 .../testsuite/libgomp.oacc-fortran/reduction-4.f90 |   54 +
 .../testsuite/libgomp.oacc-fortran/reduction-5.f90 |   32 +
 .../testsuite/libgomp.oacc-fortran/reduction-6.f90 |   30 +
 .../testsuite/libgomp.oacc-fortran/routine-1.f90   |   32 +
 .../testsuite/libgomp.oacc-fortran/routine-2.f90   |   29 +
 .../testsuite/libgomp.oacc-fortran/routine-3.f90   |   27 +
 .../testsuite/libgomp.oacc-fortran/routine-4.f90   |   23 +
 .../testsuite/libgomp.oacc-fortran/subarrays-1.f90 |   97 ++
 .../testsuite/libgomp.oacc-fortran/subarrays-2.f90 |  100 ++
 liboffloadmic/ChangeLog                            |    5 +
 liboffloadmic/plugin/libgomp-plugin-intelmic.cpp   |   26 +-
 451 files changed, 37297 insertions(+), 1546 deletions(-)


Grüße,
 Thomas



[-- Attachment #1.2: gcc-trunk-r219682.patch.gz --]
[-- Type: application/x-gzip, Size: 220224 bytes --]

[-- Attachment #2: Type: application/pgp-signature, Size: 472 bytes --]

^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2015-04-20 20:14 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-16 10:46 Merge current set of OpenACC changes from gomp-4_0-branch Uros Bizjak
2015-01-16 10:54 ` Uros Bizjak
2015-01-16 11:16   ` Jakub Jelinek
  -- strict thread matches above, loose matches on Subject: below --
2015-01-15 20:44 Thomas Schwinge
2015-01-15 20:47 ` Jeff Law
2015-01-15 22:47 ` Tobias Burnus
2015-01-16 12:34 ` Gerald Pfeifer
2015-01-16 20:37   ` Thomas Schwinge
2015-01-16 15:04 ` Gerald Pfeifer
2015-01-16 15:06 ` Jakub Jelinek
2015-01-16 15:37   ` David Malcolm
2015-01-16 22:41 ` Andreas Schwab
2015-01-16 23:22 ` Ilya Verbin
2015-01-23 18:28   ` Ilya Verbin
2015-01-23 19:11     ` Jakub Jelinek
2015-01-26 14:01     ` Thomas Schwinge
2015-01-26 15:23       ` Ilya Verbin
2015-01-27 14:41         ` Julian Brown
2015-02-03 11:28           ` Ilya Verbin
2015-02-03 13:00             ` Julian Brown
2015-02-03 20:01               ` Ilya Verbin
2015-02-04 15:06                 ` Julian Brown
2015-02-18 12:25                   ` Ilya Verbin
2015-02-24 12:49                   ` Julian Brown
2015-01-27 13:43       ` Julian Brown
2015-01-27 19:50       ` Jack Howarth
2015-02-17 18:06 ` Thomas Schwinge
2015-04-20 14:24 ` Thomas Schwinge
2015-04-20 20:14   ` Gerald Pfeifer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).