This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: libgomp: plugin for non-shared memory host execution


Hi!

On Fri, 31 Jul 2015 16:16:59 +0200, I wrote:
> On Thu, 30 Jul 2015 13:51:17 +0200, Jakub Jelinek <jakub@redhat.com> wrote:
> > On Thu, Jul 30, 2015 at 01:47:37PM +0200, Thomas Schwinge wrote:
> > > > Here is such a libgomp plugin plus the infrastructure for initial support
> > > > of non-shared memory host execution.  [...]
> > > 
> > > ... the libgomp plugin as it is currently implemented fails to adequately
> > > provide such functionality: nobody so far has implemented support for
> > > certain data mapping constructs; so it is not currently used for OpenMP
> > > offloading testing, and also disabled for certain OpenACC offloading test
> > > cases.  Its improper integration into the offloading compilation process,
> > > <https://gcc.gnu.org/wiki/Offloading#Compilation_process>, is also
> > > causing issues: we use the target compiler for compiling "device" code --
> > > but it doesn't know that it's being used for that purpose, so cannot
> > > properly handle some constructs, such as efficiently implement
> > > acc_on_device with constant argument.
> > > 
> > > It has been useful for initial bring-up, to test-drive the libgomp plugin
> > > interface, when the nvptx backend and libgomp nvptx plugin as well as the
> > > intelmic plugin were not yet available, but it's now probably time to
> > > retire this plugin, at least until somebody feels like working on
> > > integrating and implementing it properly.  Unless there are any
> > > objections, I'll later propose a patch to this effect.
> > 
> > I agree with the removal.  It would be nice if somebody could add OpenACC
> > support to the IntelMIC plugin, then you'd get a non-shared memory host
> > execution testing for free, as it has a reasonable emulation mode.
> 
> I find the intelmic plugin, with all its emulation code, a bit
> heavy-weight for this purpose.  But, let's leave that for later.  ;-)
> 
> Committed to gomp-4_0-branch in r226444; will address trunk later (next
> week).
> 
> commit 0eefa17a15b9a58fff02239289fc9c40ed62634f
> Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
> Date:   Fri Jul 31 14:13:59 2015 +0000
> 
>     [PR libgomp/65742, PR middle-end/66332] libgomp: Remove plugin for non-shared memory host execution

Committed to trunk in r226763:

commit f212338e41d10436a48f04ea499f63dce5bf50ef
Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Mon Aug 10 16:48:26 2015 +0000

    [PR libgomp/65742, PR middle-end/66332] libgomp: Remove plugin for non-shared memory host execution
    
    	gcc/
    	* builtins.c (expand_builtin_acc_on_device) [ACCEL_COMPILER]: Emit
    	open-coded sequence.
    	* omp-low.c (oacc_process_reduction_data): Remove handline of
    	GOMP_DEVICE_HOST_NONSHM.
    	gcc/testsuite/
    	* c-c++-common/goacc/acc_on_device-2.c: Remove XFAIL for C.
    	include/
    	* gomp-constants.c (GOMP_DEVICE_HOST_NONSHM): Remove.
    	libgomp/
    	* libgomp-plugin.h (enum offload_target_type): Remove
    	OFFLOAD_TARGET_TYPE_HOST_NONSHM.
    	* openacc.f90 (openacc_kinds): Remove acc_device_host_nonshm.
    	* openacc.h (enum acc_device_t): Likewise.
    	* openacc_lib.h: Likewise.
    	* oacc-init.c (name_of_acc_device_t): Don't handle it.
    	(acc_on_device): Just use __builtin_acc_on_device.
    	* testsuite/libgomp.oacc-c-c++-common/if-1.c: Don't forbid usage
    	of acc_on_device builtin.
    	* plugin/plugin-host.h: Remove file.
    	* plugin/plugin-host.c: Likewise, but salvage some content into...
    	* oacc-host.c: ... this file.
    	* plugin/Makefrag.am: Don't build libgomp-plugin-host_nonshm.la.
    	* plugin/configfrag.ac (offload_targets): Don't add host_nonshm.
    	* Makefile.in: Regenerate.
    	* configure: Likewise.
    	* testsuite/lib/libgomp.exp
    	(check_effective_target_openacc_host_nonshm_selected): Remove.
    	* testsuite/libgomp.oacc-c++/c++.exp: Don't handle
    	ACC_DEVICE_TYPE=host_nonshm.
    	* testsuite/libgomp.oacc-c/c.exp: Likewise.
    	* testsuite/libgomp.oacc-fortran/fortran.exp: Likewise.
    	* testsuite/libgomp.oacc-c-c++-common/acc_on_device-1.c: 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.
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@226763 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog                                      |    7 +
 gcc/builtins.c                                     |   12 +-
 gcc/omp-low.c                                      |   18 --
 gcc/testsuite/ChangeLog                            |    6 +
 gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c |   10 +-
 include/ChangeLog                                  |    4 +
 include/gomp-constants.h                           |    4 +-
 libgomp/ChangeLog                                  |   29 +++
 libgomp/Makefile.in                                |   33 +--
 libgomp/configure                                  |    1 -
 libgomp/libgomp-plugin.h                           |    2 +-
 libgomp/oacc-host.c                                |  230 ++++++++++++++---
 libgomp/oacc-init.c                                |   16 +-
 libgomp/openacc.f90                                |    2 +-
 libgomp/openacc.h                                  |    2 +-
 libgomp/openacc_lib.h                              |    3 +-
 libgomp/plugin/Makefrag.am                         |    9 -
 libgomp/plugin/configfrag.ac                       |    1 -
 libgomp/plugin/plugin-host.c                       |  259 --------------------
 libgomp/plugin/plugin-host.h                       |   37 ---
 libgomp/testsuite/lib/libgomp.exp                  |   10 -
 libgomp/testsuite/libgomp.oacc-c++/c++.exp         |    3 -
 .../libgomp.oacc-c-c++-common/acc_on_device-1.c    |   11 -
 libgomp/testsuite/libgomp.oacc-c-c++-common/if-1.c |    1 -
 libgomp/testsuite/libgomp.oacc-c/c.exp             |    3 -
 .../libgomp.oacc-fortran/acc_on_device-1-1.f90     |    7 -
 .../libgomp.oacc-fortran/acc_on_device-1-2.f       |    7 -
 .../libgomp.oacc-fortran/acc_on_device-1-3.f       |    7 -
 libgomp/testsuite/libgomp.oacc-fortran/fortran.exp |    3 -
 29 files changed, 261 insertions(+), 476 deletions(-)

diff --git gcc/ChangeLog gcc/ChangeLog
index f547931..efc177c 100644
--- gcc/ChangeLog
+++ gcc/ChangeLog
@@ -1,5 +1,12 @@
 2015-08-10  Thomas Schwinge  <thomas@codesourcery.com>
 
+	PR libgomp/65742
+	PR middle-end/66332
+	* builtins.c (expand_builtin_acc_on_device) [ACCEL_COMPILER]: Emit
+	open-coded sequence.
+	* omp-low.c (oacc_process_reduction_data): Remove handline of
+	GOMP_DEVICE_HOST_NONSHM.
+
 	* lto-streamer-in.c (lto_input_mode_table): Adjust to
 	GET_MODE_INNER changes.
 
diff --git gcc/builtins.c gcc/builtins.c
index eb7b7b2..82229a5 100644
--- gcc/builtins.c
+++ gcc/builtins.c
@@ -5879,10 +5879,8 @@ expand_stack_save (void)
    acceleration device (ACCEL_COMPILER conditional).  */
 
 static rtx
-expand_builtin_acc_on_device (tree exp ATTRIBUTE_UNUSED,
-			      rtx target ATTRIBUTE_UNUSED)
+expand_builtin_acc_on_device (tree exp, rtx target)
 {
-#ifdef ACCEL_COMPILER
   if (!validate_arglist (exp, INTEGER_TYPE, VOID_TYPE))
     return NULL_RTX;
 
@@ -5891,8 +5889,13 @@ expand_builtin_acc_on_device (tree exp ATTRIBUTE_UNUSED,
   /* Return (arg == v1 || arg == v2) ? 1 : 0.  */
   machine_mode v_mode = TYPE_MODE (TREE_TYPE (arg));
   rtx v = expand_normal (arg), v1, v2;
+#ifdef ACCEL_COMPILER
   v1 = GEN_INT (GOMP_DEVICE_NOT_HOST);
   v2 = GEN_INT (ACCEL_COMPILER_acc_device);
+#else
+  v1 = GEN_INT (GOMP_DEVICE_NONE);
+  v2 = GEN_INT (GOMP_DEVICE_HOST);
+#endif
   machine_mode target_mode = TYPE_MODE (integer_type_node);
   if (!target || !register_operand (target, target_mode))
     target = gen_reg_rtx (target_mode);
@@ -5906,9 +5909,6 @@ expand_builtin_acc_on_device (tree exp ATTRIBUTE_UNUSED,
   emit_label (done_label);
 
   return target;
-#else
-  return NULL;
-#endif
 }
 
 
diff --git gcc/omp-low.c gcc/omp-low.c
index 0f5c0f1..c1dc919 100644
--- gcc/omp-low.c
+++ gcc/omp-low.c
@@ -9975,24 +9975,6 @@ oacc_process_reduction_data (gimple_seq *body, gimple_seq *in_stmt_seqp,
 			   in_stmt_seqp);
 	  gimple_seq_add_stmt (in_stmt_seqp, gimple_build_label (exit));
 
-	  /* Also, set nthreads = 1 for ACC_DEVICE_TYPE=host_nonshm.  */
-	  gimplify_assign (acc_device_host,
-			   build_int_cst (integer_type_node,
-					  GOMP_DEVICE_HOST_NONSHM),
-			   in_stmt_seqp);
-
-	  enter = create_artificial_label (UNKNOWN_LOCATION);
-	  exit = create_artificial_label (UNKNOWN_LOCATION);
-
-	  stmt = gimple_build_cond (EQ_EXPR, acc_device, acc_device_host,
-				    enter, exit);
-	  gimple_seq_add_stmt (in_stmt_seqp, stmt);
-	  gimple_seq_add_stmt (in_stmt_seqp, gimple_build_label (enter));
-	  gimplify_assign (nthreads, fold_build1 (NOP_EXPR, sizetype,
-						  integer_one_node),
-			   in_stmt_seqp);
-	  gimple_seq_add_stmt (in_stmt_seqp, gimple_build_label (exit));
-
 	  oacc_initialize_reduction_data (clauses, nthreads, in_stmt_seqp,
 					  ctx);
 	  oacc_finalize_reduction_data (clauses, nthreads, out_stmt_seqp, ctx);
diff --git gcc/testsuite/ChangeLog gcc/testsuite/ChangeLog
index 0e707eb..bf858e2 100644
--- gcc/testsuite/ChangeLog
+++ gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2015-08-10  Thomas Schwinge  <thomas@codesourcery.com>
+
+	PR libgomp/65742
+	PR middle-end/66332
+	* c-c++-common/goacc/acc_on_device-2.c: Remove XFAIL for C.
+
 2015-08-10  Uros Bizjak  <ubizjak@gmail.com>
 
 	PR fortran/64022
diff --git gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c
index 6e3d292..ef622a8 100644
--- gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c
+++ gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c
@@ -20,17 +20,9 @@ f (void)
 }
 
 /* With -fopenacc, we're expecting the builtin to be expanded, so no calls.
-
    TODO: in C++, even under extern "C", the use of enum for acc_device_t
    perturbs expansion as a builtin, which expects an int parameter.  It's fine
    when changing acc_device_t to plain int, but that's not what we're doing in
    <openacc.h>.
 
-   TODO: given that we can't expand acc_on_device in
-   gcc/builtins.c:expand_builtin_acc_on_device for in the !ACCEL_COMPILER case
-   (because at that point we don't know whether we're acc_device_host or
-   acc_device_host_nonshm), we'll (erroneously) get a library call in the host
-   code.
-
-   { dg-final { scan-rtl-dump-times "\\\(call \[^\\n\]* acc_on_device" 0 "expand" { xfail { c || c++ } } } } */
-
+   { dg-final { scan-rtl-dump-times "\\\(call \[^\\n\]* acc_on_device" 0 "expand" { xfail c++ } } } */
diff --git include/ChangeLog include/ChangeLog
index 4a18ed8..7e2e499 100644
--- include/ChangeLog
+++ include/ChangeLog
@@ -1,3 +1,7 @@
+2015-08-10  Thomas Schwinge  <thomas@codesourcery.com>
+
+	* gomp-constants.c (GOMP_DEVICE_HOST_NONSHM): Remove.
+
 2015-05-22  Yunlian Jiang  <yunlian@google.com>
 
 	* libiberty.h (asprintf): Don't declare if HAVE_DECL_ASPRINTF is
diff --git include/gomp-constants.h include/gomp-constants.h
index e3d2820..807e672 100644
--- include/gomp-constants.h
+++ include/gomp-constants.h
@@ -101,11 +101,11 @@ enum gomp_map_kind
 
 /* Device codes.  Keep in sync with
    libgomp/{openacc.h,openacc.f90,openacc_lib.h}:acc_device_t as well as
-   libgomp/libgomp_target.h.  */
+   libgomp/libgomp-plugin.h.  */
 #define GOMP_DEVICE_NONE		0
 #define GOMP_DEVICE_DEFAULT		1
 #define GOMP_DEVICE_HOST		2
-#define GOMP_DEVICE_HOST_NONSHM		3
+/* #define GOMP_DEVICE_HOST_NONSHM	3 removed.  */
 #define GOMP_DEVICE_NOT_HOST		4
 #define GOMP_DEVICE_NVIDIA_PTX		5
 #define GOMP_DEVICE_INTEL_MIC		6
diff --git libgomp/ChangeLog libgomp/ChangeLog
index 084aabd..1d265b6 100644
--- libgomp/ChangeLog
+++ libgomp/ChangeLog
@@ -1,4 +1,33 @@
 2015-08-10  Thomas Schwinge  <thomas@codesourcery.com>
+
+	* libgomp-plugin.h (enum offload_target_type): Remove
+	OFFLOAD_TARGET_TYPE_HOST_NONSHM.
+	* openacc.f90 (openacc_kinds): Remove acc_device_host_nonshm.
+	* openacc.h (enum acc_device_t): Likewise.
+	* openacc_lib.h: Likewise.
+	* oacc-init.c (name_of_acc_device_t): Don't handle it.
+	(acc_on_device): Just use __builtin_acc_on_device.
+	* testsuite/libgomp.oacc-c-c++-common/if-1.c: Don't forbid usage
+	of acc_on_device builtin.
+	* plugin/plugin-host.h: Remove file.
+	* plugin/plugin-host.c: Likewise, but salvage some content into...
+	* oacc-host.c: ... this file.
+	* plugin/Makefrag.am: Don't build libgomp-plugin-host_nonshm.la.
+	* plugin/configfrag.ac (offload_targets): Don't add host_nonshm.
+	* Makefile.in: Regenerate.
+	* configure: Likewise.
+	* testsuite/lib/libgomp.exp
+	(check_effective_target_openacc_host_nonshm_selected): Remove.
+	* testsuite/libgomp.oacc-c++/c++.exp: Don't handle
+	ACC_DEVICE_TYPE=host_nonshm.
+	* testsuite/libgomp.oacc-c/c.exp: Likewise.
+	* testsuite/libgomp.oacc-fortran/fortran.exp: Likewise.
+	* testsuite/libgomp.oacc-c-c++-common/acc_on_device-1.c: 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.
+
+2015-08-10  Thomas Schwinge  <thomas@codesourcery.com>
 	    Jakub Jelinek  <jakub@redhat.com>
 
 	* config/nvptx/affinity.c: New file.
diff --git libgomp/Makefile.in libgomp/Makefile.in
index 9d07e8d..79745ce 100644
--- libgomp/Makefile.in
+++ libgomp/Makefile.in
@@ -146,15 +146,6 @@ am__installdirs = "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(infodir)" \
 	"$(DESTDIR)$(fincludedir)" "$(DESTDIR)$(libsubincludedir)" \
 	"$(DESTDIR)$(toolexeclibdir)"
 LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
-libgomp_plugin_host_nonshm_la_DEPENDENCIES = libgomp.la
-am_libgomp_plugin_host_nonshm_la_OBJECTS =  \
-	libgomp_plugin_host_nonshm_la-plugin-host.lo
-libgomp_plugin_host_nonshm_la_OBJECTS =  \
-	$(am_libgomp_plugin_host_nonshm_la_OBJECTS)
-libgomp_plugin_host_nonshm_la_LINK = $(LIBTOOL) --tag=CC \
-	$(libgomp_plugin_host_nonshm_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
-	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(libgomp_plugin_host_nonshm_la_LDFLAGS) $(LDFLAGS) -o $@
 am__DEPENDENCIES_1 =
 @PLUGIN_NVPTX_TRUE@libgomp_plugin_nvptx_la_DEPENDENCIES = libgomp.la \
 @PLUGIN_NVPTX_TRUE@	$(am__DEPENDENCIES_1)
@@ -196,8 +187,7 @@ FCLD = $(FC)
 FCLINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-SOURCES = $(libgomp_plugin_host_nonshm_la_SOURCES) \
-	$(libgomp_plugin_nvptx_la_SOURCES) $(libgomp_la_SOURCES)
+SOURCES = $(libgomp_plugin_nvptx_la_SOURCES) $(libgomp_la_SOURCES)
 MULTISRCTOP = 
 MULTIBUILDTOP = 
 MULTIDIRS = 
@@ -401,8 +391,7 @@ libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
 AM_CPPFLAGS = $(addprefix -I, $(search_path))
 AM_CFLAGS = $(XCFLAGS)
 AM_LDFLAGS = $(XLDFLAGS) $(SECTION_LDFLAGS) $(OPT_LDFLAGS)
-toolexeclib_LTLIBRARIES = libgomp.la $(am__append_1) \
-	libgomp-plugin-host_nonshm.la
+toolexeclib_LTLIBRARIES = libgomp.la $(am__append_1)
 nodist_toolexeclib_HEADERS = libgomp.spec
 
 # -Wc is only a libtool option.
@@ -437,14 +426,6 @@ libgomp_la_SOURCES = alloc.c barrier.c critical.c env.c error.c iter.c \
 @PLUGIN_NVPTX_TRUE@	$(lt_host_flags) $(PLUGIN_NVPTX_LDFLAGS)
 @PLUGIN_NVPTX_TRUE@libgomp_plugin_nvptx_la_LIBADD = libgomp.la $(PLUGIN_NVPTX_LIBS)
 @PLUGIN_NVPTX_TRUE@libgomp_plugin_nvptx_la_LIBTOOLFLAGS = --tag=disable-static
-libgomp_plugin_host_nonshm_version_info = -version-info $(libtool_VERSION)
-libgomp_plugin_host_nonshm_la_SOURCES = plugin/plugin-host.c
-libgomp_plugin_host_nonshm_la_CPPFLAGS = $(AM_CPPFLAGS) -DHOST_NONSHM_PLUGIN
-libgomp_plugin_host_nonshm_la_LDFLAGS = \
-	$(libgomp_plugin_host_nonshm_version_info) $(lt_host_flags)
-
-libgomp_plugin_host_nonshm_la_LIBADD = libgomp.la
-libgomp_plugin_host_nonshm_la_LIBTOOLFLAGS = --tag=disable-static
 nodist_noinst_HEADERS = libgomp_f.h
 nodist_libsubinclude_HEADERS = omp.h openacc.h
 @USE_FORTRAN_TRUE@nodist_finclude_HEADERS = omp_lib.h omp_lib.f90 omp_lib.mod omp_lib_kinds.mod \
@@ -572,8 +553,6 @@ clean-toolexeclibLTLIBRARIES:
 	  echo "rm -f \"$${dir}/so_locations\""; \
 	  rm -f "$${dir}/so_locations"; \
 	done
-libgomp-plugin-host_nonshm.la: $(libgomp_plugin_host_nonshm_la_OBJECTS) $(libgomp_plugin_host_nonshm_la_DEPENDENCIES) $(EXTRA_libgomp_plugin_host_nonshm_la_DEPENDENCIES) 
-	$(libgomp_plugin_host_nonshm_la_LINK) -rpath $(toolexeclibdir) $(libgomp_plugin_host_nonshm_la_OBJECTS) $(libgomp_plugin_host_nonshm_la_LIBADD) $(LIBS)
 libgomp-plugin-nvptx.la: $(libgomp_plugin_nvptx_la_OBJECTS) $(libgomp_plugin_nvptx_la_DEPENDENCIES) $(EXTRA_libgomp_plugin_nvptx_la_DEPENDENCIES) 
 	$(libgomp_plugin_nvptx_la_LINK) $(am_libgomp_plugin_nvptx_la_rpath) $(libgomp_plugin_nvptx_la_OBJECTS) $(libgomp_plugin_nvptx_la_LIBADD) $(LIBS)
 libgomp.la: $(libgomp_la_OBJECTS) $(libgomp_la_DEPENDENCIES) $(EXTRA_libgomp_la_DEPENDENCIES) 
@@ -596,7 +575,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iter.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iter_ull.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgomp-plugin.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgomp_plugin_host_nonshm_la-plugin-host.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgomp_plugin_nvptx_la-plugin-nvptx.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lock.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loop.Plo@am__quote@
@@ -644,13 +622,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
 
-libgomp_plugin_host_nonshm_la-plugin-host.lo: plugin/plugin-host.c
-@am__fastdepCC_TRUE@	$(LIBTOOL)  --tag=CC $(libgomp_plugin_host_nonshm_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgomp_plugin_host_nonshm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgomp_plugin_host_nonshm_la-plugin-host.lo -MD -MP -MF $(DEPDIR)/libgomp_plugin_host_nonshm_la-plugin-host.Tpo -c -o libgomp_plugin_host_nonshm_la-plugin-host.lo `test -f 'plugin/plugin-host.c' || echo '$(srcdir)/'`plugin/plugin-host.c
-@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libgomp_plugin_host_nonshm_la-plugin-host.Tpo $(DEPDIR)/libgomp_plugin_host_nonshm_la-plugin-host.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='plugin/plugin-host.c' object='libgomp_plugin_host_nonshm_la-plugin-host.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL)  --tag=CC $(libgomp_plugin_host_nonshm_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgomp_plugin_host_nonshm_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libgomp_plugin_host_nonshm_la-plugin-host.lo `test -f 'plugin/plugin-host.c' || echo '$(srcdir)/'`plugin/plugin-host.c
-
 libgomp_plugin_nvptx_la-plugin-nvptx.lo: plugin/plugin-nvptx.c
 @am__fastdepCC_TRUE@	$(LIBTOOL)  --tag=CC $(libgomp_plugin_nvptx_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgomp_plugin_nvptx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libgomp_plugin_nvptx_la-plugin-nvptx.lo -MD -MP -MF $(DEPDIR)/libgomp_plugin_nvptx_la-plugin-nvptx.Tpo -c -o libgomp_plugin_nvptx_la-plugin-nvptx.lo `test -f 'plugin/plugin-nvptx.c' || echo '$(srcdir)/'`plugin/plugin-nvptx.c
 @am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/libgomp_plugin_nvptx_la-plugin-nvptx.Tpo $(DEPDIR)/libgomp_plugin_nvptx_la-plugin-nvptx.Plo
diff --git libgomp/configure libgomp/configure
index 867ce40..c93e877 100755
--- libgomp/configure
+++ libgomp/configure
@@ -15170,7 +15170,6 @@ if test x"$plugin_support" = xyes; then
 
 $as_echo "#define PLUGIN_SUPPORT 1" >>confdefs.h
 
-  offload_targets=host_nonshm
 elif test "x${enable_offload_targets-no}" != xno; then
   as_fn_error "Can't support offloading without support for plugins" "$LINENO" 5
 fi
diff --git libgomp/libgomp-plugin.h libgomp/libgomp-plugin.h
index 1072ae4..24fbb94 100644
--- libgomp/libgomp-plugin.h
+++ libgomp/libgomp-plugin.h
@@ -46,7 +46,7 @@ extern "C" {
 enum offload_target_type
 {
   OFFLOAD_TARGET_TYPE_HOST = 2,
-  OFFLOAD_TARGET_TYPE_HOST_NONSHM = 3,
+  /* OFFLOAD_TARGET_TYPE_HOST_NONSHM = 3 removed.  */
   OFFLOAD_TARGET_TYPE_NVIDIA_PTX = 5,
   OFFLOAD_TARGET_TYPE_INTEL_MIC = 6
 };
diff --git libgomp/oacc-host.c libgomp/oacc-host.c
index 6dcdbf3..17a5102 100644
--- libgomp/oacc-host.c
+++ libgomp/oacc-host.c
@@ -26,51 +26,215 @@
    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
-/* This shares much of the implementation of the plugin-host.c "host_nonshm"
-   plugin.  */
-#include "plugin/plugin-host.c"
+#include "libgomp.h"
+#include "oacc-int.h"
+
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+
+static struct gomp_device_descr host_dispatch;
+
+static const char *
+host_get_name (void)
+{
+  return host_dispatch.name;
+}
+
+static unsigned int
+host_get_caps (void)
+{
+  return host_dispatch.capabilities;
+}
+
+static int
+host_get_type (void)
+{
+  return host_dispatch.type;
+}
+
+static int
+host_get_num_devices (void)
+{
+  return 1;
+}
+
+static void
+host_init_device (int n __attribute__ ((unused)))
+{
+}
+
+static void
+host_fini_device (int n __attribute__ ((unused)))
+{
+}
+
+static int
+host_load_image (int n __attribute__ ((unused)),
+		 const void *t __attribute__ ((unused)),
+		 struct addr_pair **r __attribute__ ((unused)))
+{
+  return 0;
+}
+
+static void
+host_unload_image (int n __attribute__ ((unused)),
+		   const void *t __attribute__ ((unused)))
+{
+}
+
+static void *
+host_alloc (int n __attribute__ ((unused)), size_t s)
+{
+  return gomp_malloc (s);
+}
+
+static void
+host_free (int n __attribute__ ((unused)), void *p)
+{
+  free (p);
+}
+
+static void *
+host_dev2host (int n __attribute__ ((unused)),
+	       void *h __attribute__ ((unused)),
+	       const void *d __attribute__ ((unused)),
+	       size_t s __attribute__ ((unused)))
+{
+  return NULL;
+}
+
+static void *
+host_host2dev (int n __attribute__ ((unused)),
+	       void *d __attribute__ ((unused)),
+	       const void *h __attribute__ ((unused)),
+	       size_t s __attribute__ ((unused)))
+{
+  return NULL;
+}
+
+static void
+host_run (int n __attribute__ ((unused)), void *fn_ptr, void *vars)
+{
+  void (*fn)(void *) = (void (*)(void *)) fn_ptr;
+
+  fn (vars);
+}
+
+static void
+host_openacc_exec (void (*fn) (void *),
+		   size_t mapnum __attribute__ ((unused)),
+		   void **hostaddrs,
+		   void **devaddrs __attribute__ ((unused)),
+		   size_t *sizes __attribute__ ((unused)),
+		   unsigned short *kinds __attribute__ ((unused)),
+		   int num_gangs __attribute__ ((unused)),
+		   int num_workers __attribute__ ((unused)),
+		   int vector_length __attribute__ ((unused)),
+		   int async __attribute__ ((unused)),
+		   void *targ_mem_desc __attribute__ ((unused)))
+{
+  fn (hostaddrs);
+}
+
+static void
+host_openacc_register_async_cleanup (void *targ_mem_desc __attribute__ ((unused)))
+{
+}
+
+static int
+host_openacc_async_test (int async __attribute__ ((unused)))
+{
+  return 1;
+}
+
+static int
+host_openacc_async_test_all (void)
+{
+  return 1;
+}
+
+static void
+host_openacc_async_wait (int async __attribute__ ((unused)))
+{
+}
+
+static void
+host_openacc_async_wait_async (int async1 __attribute__ ((unused)),
+			       int async2 __attribute__ ((unused)))
+{
+}
+
+static void
+host_openacc_async_wait_all (void)
+{
+}
+
+static void
+host_openacc_async_wait_all_async (int async __attribute__ ((unused)))
+{
+}
+
+static void
+host_openacc_async_set_async (int async __attribute__ ((unused)))
+{
+}
+
+static void *
+host_openacc_create_thread_data (int ord __attribute__ ((unused)))
+{
+  return NULL;
+}
+
+static void
+host_openacc_destroy_thread_data (void *tls_data __attribute__ ((unused)))
+{
+}
 
 static struct gomp_device_descr host_dispatch =
   {
     .name = "host",
-    .capabilities = (GOMP_OFFLOAD_CAP_OPENACC_200
+    .capabilities = (GOMP_OFFLOAD_CAP_SHARED_MEM
 		     | GOMP_OFFLOAD_CAP_NATIVE_EXEC
-		     | GOMP_OFFLOAD_CAP_SHARED_MEM),
+		     | GOMP_OFFLOAD_CAP_OPENACC_200),
     .target_id = 0,
     .type = OFFLOAD_TARGET_TYPE_HOST,
 
-    .get_name_func = GOMP_OFFLOAD_get_name,
-    .get_caps_func = GOMP_OFFLOAD_get_caps,
-    .get_type_func = GOMP_OFFLOAD_get_type,
-    .get_num_devices_func = GOMP_OFFLOAD_get_num_devices,
-    .init_device_func = GOMP_OFFLOAD_init_device,
-    .fini_device_func = GOMP_OFFLOAD_fini_device,
-    .load_image_func = GOMP_OFFLOAD_load_image,
-    .unload_image_func = GOMP_OFFLOAD_unload_image,
-    .alloc_func = GOMP_OFFLOAD_alloc,
-    .free_func = GOMP_OFFLOAD_free,
-    .dev2host_func = GOMP_OFFLOAD_dev2host,
-    .host2dev_func = GOMP_OFFLOAD_host2dev,
-    .run_func = GOMP_OFFLOAD_run,
+    .get_name_func = host_get_name,
+    .get_caps_func = host_get_caps,
+    .get_type_func = host_get_type,
+    .get_num_devices_func = host_get_num_devices,
+    .init_device_func = host_init_device,
+    .fini_device_func = host_fini_device,
+    .load_image_func = host_load_image,
+    .unload_image_func = host_unload_image,
+    .alloc_func = host_alloc,
+    .free_func = host_free,
+    .dev2host_func = host_dev2host,
+    .host2dev_func = host_host2dev,
+    .run_func = host_run,
 
+    .mem_map = { NULL },
+    /* .lock initilized in goacc_host_init.  */
     .is_initialized = false,
 
     .openacc = {
-      .exec_func = GOMP_OFFLOAD_openacc_parallel,
+      .data_environ = NULL,
 
-      .register_async_cleanup_func
-        = GOMP_OFFLOAD_openacc_register_async_cleanup,
+      .exec_func = host_openacc_exec,
 
-      .async_set_async_func = GOMP_OFFLOAD_openacc_async_set_async,
-      .async_test_func = GOMP_OFFLOAD_openacc_async_test,
-      .async_test_all_func = GOMP_OFFLOAD_openacc_async_test_all,
-      .async_wait_func = GOMP_OFFLOAD_openacc_async_wait,
-      .async_wait_async_func = GOMP_OFFLOAD_openacc_async_wait_async,
-      .async_wait_all_func = GOMP_OFFLOAD_openacc_async_wait_all,
-      .async_wait_all_async_func = GOMP_OFFLOAD_openacc_async_wait_all_async,
+      .register_async_cleanup_func = host_openacc_register_async_cleanup,
 
-      .create_thread_data_func = GOMP_OFFLOAD_openacc_create_thread_data,
-      .destroy_thread_data_func = GOMP_OFFLOAD_openacc_destroy_thread_data,
+      .async_test_func = host_openacc_async_test,
+      .async_test_all_func = host_openacc_async_test_all,
+      .async_wait_func = host_openacc_async_wait,
+      .async_wait_async_func = host_openacc_async_wait_async,
+      .async_wait_all_func = host_openacc_async_wait_all,
+      .async_wait_all_async_func = host_openacc_async_wait_all_async,
+      .async_set_async_func = host_openacc_async_set_async,
+
+      .create_thread_data_func = host_openacc_create_thread_data,
+      .destroy_thread_data_func = host_openacc_destroy_thread_data,
 
       .cuda = {
 	.get_current_device_func = NULL,
@@ -81,9 +245,9 @@ static struct gomp_device_descr host_dispatch =
     }
   };
 
-/* Register this device type.  */
-static __attribute__ ((constructor))
-void goacc_host_init (void)
+/* Initialize and register this device type.  */
+static __attribute__ ((constructor)) void
+goacc_host_init (void)
 {
   gomp_mutex_init (&host_dispatch.lock);
   goacc_register (&host_dispatch);
diff --git libgomp/oacc-init.c libgomp/oacc-init.c
index 105d9dc..c12f8ad 100644
--- libgomp/oacc-init.c
+++ libgomp/oacc-init.c
@@ -29,7 +29,6 @@
 #include "libgomp.h"
 #include "oacc-int.h"
 #include "openacc.h"
-#include "plugin/plugin-host.h"
 #include <assert.h>
 #include <stdlib.h>
 #include <strings.h>
@@ -102,7 +101,6 @@ name_of_acc_device_t (enum acc_device_t type)
     case acc_device_none: return "none";
     case acc_device_default: return "default";
     case acc_device_host: return "host";
-    case acc_device_host_nonshm: return "host_nonshm";
     case acc_device_not_host: return "not_host";
     case acc_device_nvidia: return "nvidia";
     default: gomp_fatal ("unknown device type %u", (unsigned) type);
@@ -625,18 +623,8 @@ ialias (acc_set_device_num)
 int
 acc_on_device (acc_device_t dev)
 {
-  struct goacc_thread *thr = goacc_thread ();
-
-  /* We only want to appear to be the "host_nonshm" plugin from "offloaded"
-     code -- i.e. within a parallel region.  Test a flag set by the
-     openacc_parallel hook of the host_nonshm plugin to determine that.  */
-  if (acc_get_device_type () == acc_device_host_nonshm
-      && thr && thr->target_tls
-      && ((struct nonshm_thread *)thr->target_tls)->nonshm_exec)
-    return dev == acc_device_host_nonshm || dev == acc_device_not_host;
-
-  /* For OpenACC, libgomp is only built for the host, so this is sufficient.  */
-  return dev == acc_device_host || dev == acc_device_none;
+  /* Just rely on the compiler builtin.  */
+  return __builtin_acc_on_device (dev);
 }
 
 ialias (acc_on_device)
diff --git libgomp/openacc.f90 libgomp/openacc.f90
index 04d8088..fbd63c6 100644
--- libgomp/openacc.f90
+++ libgomp/openacc.f90
@@ -43,7 +43,7 @@ module openacc_kinds
   integer (acc_device_kind), parameter :: acc_device_none = 0
   integer (acc_device_kind), parameter :: acc_device_default = 1
   integer (acc_device_kind), parameter :: acc_device_host = 2
-  integer (acc_device_kind), parameter :: acc_device_host_nonshm = 3
+  ! integer (acc_device_kind), parameter :: acc_device_host_nonshm = 3 removed.
   integer (acc_device_kind), parameter :: acc_device_not_host = 4
   integer (acc_device_kind), parameter :: acc_device_nvidia = 5
 
diff --git libgomp/openacc.h libgomp/openacc.h
index 44a1526..fc353e1 100644
--- libgomp/openacc.h
+++ libgomp/openacc.h
@@ -53,7 +53,7 @@ typedef enum acc_device_t
     acc_device_none = 0,
     acc_device_default = 1,
     acc_device_host = 2,
-    acc_device_host_nonshm = 3,
+    /* acc_device_host_nonshm = 3 removed.  */
     acc_device_not_host = 4,
     acc_device_nvidia = 5,
     _ACC_device_hwm
diff --git libgomp/openacc_lib.h libgomp/openacc_lib.h
index 28659a1..e9c503e 100644
--- libgomp/openacc_lib.h
+++ libgomp/openacc_lib.h
@@ -38,7 +38,8 @@
       integer (acc_device_kind), parameter :: acc_device_none = 0
       integer (acc_device_kind), parameter :: acc_device_default = 1
       integer (acc_device_kind), parameter :: acc_device_host = 2
-      integer (acc_device_kind), parameter :: acc_device_host_nonshm = 3
+!     integer (acc_device_kind), parameter :: acc_device_host_nonshm = 3
+!     removed.
       integer (acc_device_kind), parameter :: acc_device_not_host = 4
       integer (acc_device_kind), parameter :: acc_device_nvidia = 5
 
diff --git libgomp/plugin/Makefrag.am libgomp/plugin/Makefrag.am
index 167485f..745becd 100644
--- libgomp/plugin/Makefrag.am
+++ libgomp/plugin/Makefrag.am
@@ -38,12 +38,3 @@ libgomp_plugin_nvptx_la_LDFLAGS += $(PLUGIN_NVPTX_LDFLAGS)
 libgomp_plugin_nvptx_la_LIBADD = libgomp.la $(PLUGIN_NVPTX_LIBS)
 libgomp_plugin_nvptx_la_LIBTOOLFLAGS = --tag=disable-static
 endif
-
-libgomp_plugin_host_nonshm_version_info = -version-info $(libtool_VERSION)
-toolexeclib_LTLIBRARIES += libgomp-plugin-host_nonshm.la
-libgomp_plugin_host_nonshm_la_SOURCES = plugin/plugin-host.c
-libgomp_plugin_host_nonshm_la_CPPFLAGS = $(AM_CPPFLAGS) -DHOST_NONSHM_PLUGIN
-libgomp_plugin_host_nonshm_la_LDFLAGS = \
-	$(libgomp_plugin_host_nonshm_version_info) $(lt_host_flags)
-libgomp_plugin_host_nonshm_la_LIBADD = libgomp.la
-libgomp_plugin_host_nonshm_la_LIBTOOLFLAGS = --tag=disable-static
diff --git libgomp/plugin/configfrag.ac libgomp/plugin/configfrag.ac
index 254c688..8c2a420 100644
--- libgomp/plugin/configfrag.ac
+++ libgomp/plugin/configfrag.ac
@@ -33,7 +33,6 @@ AC_CHECK_LIB(dl, dlsym, , [plugin_support=no])
 if test x"$plugin_support" = xyes; then
   AC_DEFINE(PLUGIN_SUPPORT, 1,
     [Define if all infrastructure, needed for plugins, is supported.])
-  offload_targets=host_nonshm
 elif test "x${enable_offload_targets-no}" != xno; then
   AC_MSG_ERROR([Can't support offloading without support for plugins])
 fi
diff --git libgomp/plugin/plugin-host.c libgomp/plugin/plugin-host.c
deleted file mode 100644
index da3c5f4..0000000
--- libgomp/plugin/plugin-host.c
+++ /dev/null
@@ -1,259 +0,0 @@
-/* OpenACC Runtime Library: acc_device_host, acc_device_host_nonshm.
-
-   Copyright (C) 2013-2015 Free Software Foundation, Inc.
-
-   Contributed by Mentor Embedded.
-
-   This file is part of the GNU Offloading and Multi Processing Library
-   (libgomp).
-
-   Libgomp is free software; you can redistribute it and/or modify it
-   under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3, or (at your option)
-   any later version.
-
-   Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
-   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-   FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-   more details.
-
-   Under Section 7 of GPL version 3, you are granted additional
-   permissions described in the GCC Runtime Library Exception, version
-   3.1, as published by the Free Software Foundation.
-
-   You should have received a copy of the GNU General Public License and
-   a copy of the GCC Runtime Library Exception along with this program;
-   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-/* Simple implementation of support routines for a shared-memory
-   acc_device_host, and a non-shared memory acc_device_host_nonshm, with the
-   latter built as a plugin.  */
-
-#include "openacc.h"
-#include "config.h"
-#ifdef HOST_NONSHM_PLUGIN
-#include "libgomp-plugin.h"
-#include "oacc-plugin.h"
-#else
-#include "libgomp.h"
-#include "oacc-int.h"
-#endif
-
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdbool.h>
-
-#ifdef HOST_NONSHM_PLUGIN
-#define STATIC
-#define GOMP(X) GOMP_PLUGIN_##X
-#define SELF "host_nonshm plugin: "
-#else
-#define STATIC static
-#define GOMP(X) gomp_##X
-#define SELF "host: "
-#endif
-
-#ifdef HOST_NONSHM_PLUGIN
-#include "plugin-host.h"
-#endif
-
-STATIC const char *
-GOMP_OFFLOAD_get_name (void)
-{
-#ifdef HOST_NONSHM_PLUGIN
-  return "host_nonshm";
-#else
-  return "host";
-#endif
-}
-
-STATIC unsigned int
-GOMP_OFFLOAD_get_caps (void)
-{
-  unsigned int caps = (GOMP_OFFLOAD_CAP_OPENACC_200
-		       | GOMP_OFFLOAD_CAP_NATIVE_EXEC);
-
-#ifndef HOST_NONSHM_PLUGIN
-  caps |= GOMP_OFFLOAD_CAP_SHARED_MEM;
-#endif
-
-  return caps;
-}
-
-STATIC int
-GOMP_OFFLOAD_get_type (void)
-{
-#ifdef HOST_NONSHM_PLUGIN
-  return OFFLOAD_TARGET_TYPE_HOST_NONSHM;
-#else
-  return OFFLOAD_TARGET_TYPE_HOST;
-#endif
-}
-
-STATIC int
-GOMP_OFFLOAD_get_num_devices (void)
-{
-  return 1;
-}
-
-STATIC void
-GOMP_OFFLOAD_init_device (int n __attribute__ ((unused)))
-{
-}
-
-STATIC void
-GOMP_OFFLOAD_fini_device (int n __attribute__ ((unused)))
-{
-}
-
-STATIC int
-GOMP_OFFLOAD_load_image (int n __attribute__ ((unused)),
-			 const void *t __attribute__ ((unused)),
-			 struct addr_pair **r __attribute__ ((unused)))
-{
-  return 0;
-}
-
-STATIC void
-GOMP_OFFLOAD_unload_image (int n __attribute__ ((unused)),
-			   const void *t __attribute__ ((unused)))
-{
-}
-
-STATIC void *
-GOMP_OFFLOAD_alloc (int n __attribute__ ((unused)), size_t s)
-{
-  return GOMP (malloc) (s);
-}
-
-STATIC void
-GOMP_OFFLOAD_free (int n __attribute__ ((unused)), void *p)
-{
-  free (p);
-}
-
-STATIC void *
-GOMP_OFFLOAD_host2dev (int n __attribute__ ((unused)), void *d, const void *h,
-		       size_t s)
-{
-#ifdef HOST_NONSHM_PLUGIN
-  memcpy (d, h, s);
-#endif
-
-  return 0;
-}
-
-STATIC void *
-GOMP_OFFLOAD_dev2host (int n __attribute__ ((unused)), void *h, const void *d,
-		       size_t s)
-{
-#ifdef HOST_NONSHM_PLUGIN
-  memcpy (h, d, s);
-#endif
-
-  return 0;
-}
-
-STATIC void
-GOMP_OFFLOAD_run (int n __attribute__ ((unused)), void *fn_ptr, void *vars)
-{
-  void (*fn)(void *) = (void (*)(void *)) fn_ptr;
-
-  fn (vars);
-}
-
-STATIC void
-GOMP_OFFLOAD_openacc_parallel (void (*fn) (void *),
-			       size_t mapnum __attribute__ ((unused)),
-			       void **hostaddrs __attribute__ ((unused)),
-			       void **devaddrs __attribute__ ((unused)),
-			       size_t *sizes __attribute__ ((unused)),
-			       unsigned short *kinds __attribute__ ((unused)),
-			       int num_gangs __attribute__ ((unused)),
-			       int num_workers __attribute__ ((unused)),
-			       int vector_length __attribute__ ((unused)),
-			       int async __attribute__ ((unused)),
-			       void *targ_mem_desc __attribute__ ((unused)))
-{
-#ifdef HOST_NONSHM_PLUGIN
-  struct nonshm_thread *thd = GOMP_PLUGIN_acc_thread ();
-  thd->nonshm_exec = true;
-  fn (devaddrs);
-  thd->nonshm_exec = false;
-#else
-  fn (hostaddrs);
-#endif
-}
-
-STATIC void
-GOMP_OFFLOAD_openacc_register_async_cleanup (void *targ_mem_desc)
-{
-#ifdef HOST_NONSHM_PLUGIN
-  /* "Asynchronous" launches are executed synchronously on the (non-SHM) host,
-     so there's no point in delaying host-side cleanup -- just do it now.  */
-  GOMP_PLUGIN_async_unmap_vars (targ_mem_desc);
-#endif
-}
-
-STATIC void
-GOMP_OFFLOAD_openacc_async_set_async (int async __attribute__ ((unused)))
-{
-}
-
-STATIC int
-GOMP_OFFLOAD_openacc_async_test (int async __attribute__ ((unused)))
-{
-  return 1;
-}
-
-STATIC int
-GOMP_OFFLOAD_openacc_async_test_all (void)
-{
-  return 1;
-}
-
-STATIC void
-GOMP_OFFLOAD_openacc_async_wait (int async __attribute__ ((unused)))
-{
-}
-
-STATIC void
-GOMP_OFFLOAD_openacc_async_wait_all (void)
-{
-}
-
-STATIC void
-GOMP_OFFLOAD_openacc_async_wait_async (int async1 __attribute__ ((unused)),
-				       int async2 __attribute__ ((unused)))
-{
-}
-
-STATIC void
-GOMP_OFFLOAD_openacc_async_wait_all_async (int async __attribute__ ((unused)))
-{
-}
-
-STATIC void *
-GOMP_OFFLOAD_openacc_create_thread_data (int ord
-					 __attribute__ ((unused)))
-{
-#ifdef HOST_NONSHM_PLUGIN
-  struct nonshm_thread *thd
-    = GOMP_PLUGIN_malloc (sizeof (struct nonshm_thread));
-  thd->nonshm_exec = false;
-  return thd;
-#else
-  return NULL;
-#endif
-}
-
-STATIC void
-GOMP_OFFLOAD_openacc_destroy_thread_data (void *tls_data)
-{
-#ifdef HOST_NONSHM_PLUGIN
-  free (tls_data);
-#endif
-}
diff --git libgomp/plugin/plugin-host.h libgomp/plugin/plugin-host.h
deleted file mode 100644
index 96955d1..0000000
--- libgomp/plugin/plugin-host.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* OpenACC Runtime Library: acc_device_host, acc_device_host_nonshm.
-
-   Copyright (C) 2015 Free Software Foundation, Inc.
-
-   Contributed by Mentor Embedded.
-
-   This file is part of the GNU Offloading and Multi Processing Library
-   (libgomp).
-
-   Libgomp is free software; you can redistribute it and/or modify it
-   under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3, or (at your option)
-   any later version.
-
-   Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
-   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-   FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-   more details.
-
-   Under Section 7 of GPL version 3, you are granted additional
-   permissions described in the GCC Runtime Library Exception, version
-   3.1, as published by the Free Software Foundation.
-
-   You should have received a copy of the GNU General Public License and
-   a copy of the GCC Runtime Library Exception along with this program;
-   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef PLUGIN_HOST_H
-#define PLUGIN_HOST_H
-
-struct nonshm_thread
-{
-  bool nonshm_exec;
-};
-
-#endif
diff --git libgomp/testsuite/lib/libgomp.exp libgomp/testsuite/lib/libgomp.exp
index 438777f..f04b163 100644
--- libgomp/testsuite/lib/libgomp.exp
+++ libgomp/testsuite/lib/libgomp.exp
@@ -355,13 +355,3 @@ proc check_effective_target_openacc_host_selected { } {
     }
     return 0;
 }
-
-# Return 1 if the host_nonshm target is selected for offloaded
-
-proc check_effective_target_openacc_host_nonshm_selected { } {
-    global offload_target_openacc
-    if { $offload_target_openacc == "host_nonshm" } {
-        return 1;
-    }
-    return 0;
-}
diff --git libgomp/testsuite/libgomp.oacc-c++/c++.exp libgomp/testsuite/libgomp.oacc-c++/c++.exp
index 3b97024..88b0269 100644
--- libgomp/testsuite/libgomp.oacc-c++/c++.exp
+++ libgomp/testsuite/libgomp.oacc-c++/c++.exp
@@ -81,9 +81,6 @@ if { $lang_test_file_found } {
 	    host {
 		set acc_mem_shared 1
 	    }
-	    host_nonshm {
-		set acc_mem_shared 0
-	    }
 	    nvidia {
 		if { ![check_effective_target_openacc_nvidia_accel_present] } {
 		    # Don't bother; execution testing is going to FAIL.
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/acc_on_device-1.c libgomp/testsuite/libgomp.oacc-c-c++-common/acc_on_device-1.c
index 81ea476..8112745 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/acc_on_device-1.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/acc_on_device-1.c
@@ -15,8 +15,6 @@ main (int argc, char *argv[])
       abort ();
     if (!acc_on_device (acc_device_host))
       abort ();
-    if (acc_on_device (acc_device_host_nonshm))
-      abort ();
     if (acc_on_device (acc_device_not_host))
       abort ();
     if (acc_on_device (acc_device_nvidia))
@@ -32,8 +30,6 @@ main (int argc, char *argv[])
       abort ();
     if (!acc_on_device (acc_device_host))
       abort ();
-    if (acc_on_device (acc_device_host_nonshm))
-      abort ();
     if (acc_on_device (acc_device_not_host))
       abort ();
     if (acc_on_device (acc_device_nvidia))
@@ -51,13 +47,6 @@ main (int argc, char *argv[])
       abort ();
     if (acc_on_device (acc_device_host))
       abort ();
-#if ACC_DEVICE_TYPE_host_nonshm
-    if (!acc_on_device (acc_device_host_nonshm))
-      abort ();
-#else
-    if (acc_on_device (acc_device_host_nonshm))
-      abort ();
-#endif
     if (!acc_on_device (acc_device_not_host))
       abort ();
 #if ACC_DEVICE_TYPE_nvidia
diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/if-1.c libgomp/testsuite/libgomp.oacc-c-c++-common/if-1.c
index 184b355..6aa3bb7 100644
--- libgomp/testsuite/libgomp.oacc-c-c++-common/if-1.c
+++ libgomp/testsuite/libgomp.oacc-c-c++-common/if-1.c
@@ -1,5 +1,4 @@
 /* { dg-do run } */
-/* { dg-additional-options "-fno-builtin-acc_on_device" } */
 
 #include <openacc.h>
 #include <stdlib.h>
diff --git libgomp/testsuite/libgomp.oacc-c/c.exp libgomp/testsuite/libgomp.oacc-c/c.exp
index 326b988..5020e6a 100644
--- libgomp/testsuite/libgomp.oacc-c/c.exp
+++ libgomp/testsuite/libgomp.oacc-c/c.exp
@@ -44,9 +44,6 @@ foreach offload_target_openacc $offload_targets_s_openacc {
 	host {
 	    set acc_mem_shared 1
 	}
-	host_nonshm {
-	    set acc_mem_shared 0
-	}
 	nvidia {
 	    if { ![check_effective_target_openacc_nvidia_accel_present] } {
 		# Don't bother; execution testing is going to FAIL.
diff --git libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-1.f90 libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-1.f90
index 4488818..1a10f32 100644
--- libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-1.f90
+++ libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-1.f90
@@ -11,7 +11,6 @@ implicit none
 
 if (.not. acc_on_device (acc_device_none)) call abort
 if (.not. acc_on_device (acc_device_host)) call abort
-if (acc_on_device (acc_device_host_nonshm)) call abort
 if (acc_on_device (acc_device_not_host)) call abort
 if (acc_on_device (acc_device_nvidia)) call abort
 
@@ -21,7 +20,6 @@ if (acc_on_device (acc_device_nvidia)) call abort
 !$acc parallel if(.false.)
 if (.not. acc_on_device (acc_device_none)) call abort
 if (.not. acc_on_device (acc_device_host)) call abort
-if (acc_on_device (acc_device_host_nonshm)) call abort
 if (acc_on_device (acc_device_not_host)) call abort
 if (acc_on_device (acc_device_nvidia)) call abort
 !$acc end parallel
@@ -34,11 +32,6 @@ if (acc_on_device (acc_device_nvidia)) call abort
 !$acc parallel
 if (acc_on_device (acc_device_none)) call abort
 if (acc_on_device (acc_device_host)) call abort
-#if ACC_DEVICE_TYPE_host_nonshm
-if (.not. acc_on_device (acc_device_host_nonshm)) call abort
-#else
-if (acc_on_device (acc_device_host_nonshm)) call abort
-#endif
 if (.not. acc_on_device (acc_device_not_host)) call abort
 #if ACC_DEVICE_TYPE_nvidia
 if (.not. acc_on_device (acc_device_nvidia)) call abort
diff --git libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-2.f libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-2.f
index 0047a19..a19045b 100644
--- libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-2.f
+++ libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-2.f
@@ -11,7 +11,6 @@
 
       IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NONE)) CALL ABORT
       IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST)) CALL ABORT
-      IF (ACC_ON_DEVICE (ACC_DEVICE_HOST_NONSHM)) CALL ABORT
       IF (ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) CALL ABORT
       IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT
 
@@ -21,7 +20,6 @@
 !$ACC PARALLEL IF(.FALSE.)
       IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NONE)) CALL ABORT
       IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST)) CALL ABORT
-      IF (ACC_ON_DEVICE (ACC_DEVICE_HOST_NONSHM)) CALL ABORT
       IF (ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) CALL ABORT
       IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT
 !$ACC END PARALLEL
@@ -34,11 +32,6 @@
 !$ACC PARALLEL
       IF (ACC_ON_DEVICE (ACC_DEVICE_NONE)) CALL ABORT
       IF (ACC_ON_DEVICE (ACC_DEVICE_HOST)) CALL ABORT
-#if ACC_DEVICE_TYPE_host_nonshm
-      IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST_NONSHM)) CALL ABORT
-#else
-      IF (ACC_ON_DEVICE (ACC_DEVICE_HOST_NONSHM)) CALL ABORT
-#endif
       IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) CALL ABORT
 #if ACC_DEVICE_TYPE_nvidia
       IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT
diff --git libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-3.f libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-3.f
index 49d7a72..c391776 100644
--- libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-3.f
+++ libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-3.f
@@ -11,7 +11,6 @@
 
       IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NONE)) CALL ABORT
       IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST)) CALL ABORT
-      IF (ACC_ON_DEVICE (ACC_DEVICE_HOST_NONSHM)) CALL ABORT
       IF (ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) CALL ABORT
       IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT
 
@@ -21,7 +20,6 @@
 !$ACC PARALLEL IF(.FALSE.)
       IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NONE)) CALL ABORT
       IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST)) CALL ABORT
-      IF (ACC_ON_DEVICE (ACC_DEVICE_HOST_NONSHM)) CALL ABORT
       IF (ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) CALL ABORT
       IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT
 !$ACC END PARALLEL
@@ -34,11 +32,6 @@
 !$ACC PARALLEL
       IF (ACC_ON_DEVICE (ACC_DEVICE_NONE)) CALL ABORT
       IF (ACC_ON_DEVICE (ACC_DEVICE_HOST)) CALL ABORT
-#if ACC_DEVICE_TYPE_host_nonshm
-      IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST_NONSHM)) CALL ABORT
-#else
-      IF (ACC_ON_DEVICE (ACC_DEVICE_HOST_NONSHM)) CALL ABORT
-#endif
       IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) CALL ABORT
 #if ACC_DEVICE_TYPE_nvidia
       IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT
diff --git libgomp/testsuite/libgomp.oacc-fortran/fortran.exp libgomp/testsuite/libgomp.oacc-fortran/fortran.exp
index a8aaff0..2d6b647 100644
--- libgomp/testsuite/libgomp.oacc-fortran/fortran.exp
+++ libgomp/testsuite/libgomp.oacc-fortran/fortran.exp
@@ -73,9 +73,6 @@ if { $lang_test_file_found } {
 	    host {
 		set acc_mem_shared 1
 	    }
-	    host_nonshm {
-		set acc_mem_shared 0
-	    }
 	    nvidia {
 		if { ![check_effective_target_openacc_nvidia_accel_present] } {
 		    # Don't bother; execution testing is going to FAIL.


GrÃÃe,
 Thomas

Attachment: signature.asc
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]