aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Verbin <ilya.verbin@intel.com>2015-03-13 13:30:26 +0000
committerIlya Verbin <iverbin@gcc.gnu.org>2015-03-13 13:30:26 +0000
commitdb397e2e5a10965e953ce1801511c55fe8042295 (patch)
treef625bcbcacaa7aca60c5598632cbd58e1847f345
parentd3ef4bd61fdcc491c39249dd256c3733f45219b9 (diff)
downloadgcc-db397e2e5a10965e953ce1801511c55fe8042295.zip
gcc-db397e2e5a10965e953ce1801511c55fe8042295.tar.gz
gcc-db397e2e5a10965e953ce1801511c55fe8042295.tar.bz2
varpool.c (varpool_node::get_create): Don't set 'offloadable' flag for the external decls.
gcc/ * varpool.c (varpool_node::get_create): Don't set 'offloadable' flag for the external decls. libgomp/ * testsuite/libgomp.fortran/declare-target-1.f90: New test. * testsuite/libgomp.fortran/declare-target-2.f90: New file. From-SVN: r221421
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/varpool.c2
-rw-r--r--libgomp/ChangeLog5
-rw-r--r--libgomp/testsuite/libgomp.fortran/declare-target-1.f9015
-rw-r--r--libgomp/testsuite/libgomp.fortran/declare-target-2.f9018
5 files changed, 44 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8a24aec..5bcfdb9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2015-03-13 Ilya Verbin <ilya.verbin@intel.com>
+
+ * varpool.c (varpool_node::get_create): Don't set 'offloadable' flag for
+ the external decls.
+
2015-03-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
PR target/64600
diff --git a/gcc/varpool.c b/gcc/varpool.c
index b583693..ce64279 100644
--- a/gcc/varpool.c
+++ b/gcc/varpool.c
@@ -173,7 +173,7 @@ varpool_node::get_create (tree decl)
node = varpool_node::create_empty ();
node->decl = decl;
- if ((flag_openacc || flag_openmp)
+ if ((flag_openacc || flag_openmp) && !DECL_EXTERNAL (decl)
&& lookup_attribute ("omp declare target", DECL_ATTRIBUTES (decl)))
{
node->offloadable = 1;
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index 6237db5..d621321 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,8 @@
+2015-03-13 Ilya Verbin <ilya.verbin@intel.com>
+
+ * testsuite/libgomp.fortran/declare-target-1.f90: New test.
+ * testsuite/libgomp.fortran/declare-target-2.f90: New file.
+
2015-03-13 Sebastian Huber <sebastian.huber@embedded-brains.de>
* configure.tgt (*-*-rtems*): Use local-exec TLS model.
diff --git a/libgomp/testsuite/libgomp.fortran/declare-target-1.f90 b/libgomp/testsuite/libgomp.fortran/declare-target-1.f90
new file mode 100644
index 0000000..fd9c26f
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/declare-target-1.f90
@@ -0,0 +1,15 @@
+! { dg-do run }
+! { dg-additional-sources declare-target-2.f90 }
+
+module declare_target_1_mod
+ integer :: var_x
+ !$omp declare target(var_x)
+end module declare_target_1_mod
+
+ interface
+ subroutine foo ()
+ end subroutine foo
+ end interface
+
+ call foo ()
+end
diff --git a/libgomp/testsuite/libgomp.fortran/declare-target-2.f90 b/libgomp/testsuite/libgomp.fortran/declare-target-2.f90
new file mode 100644
index 0000000..f8d3ab2
--- /dev/null
+++ b/libgomp/testsuite/libgomp.fortran/declare-target-2.f90
@@ -0,0 +1,18 @@
+! Don't compile this anywhere, it is just auxiliary
+! file compiled together with declare-target-1.f90
+! to verify inter-CU module handling of omp declare target.
+! { dg-do compile { target { lp64 && { ! lp64 } } } }
+
+subroutine foo
+ use declare_target_1_mod
+
+ var_x = 10
+ !$omp target update to(var_x)
+
+ !$omp target
+ var_x = var_x * 2;
+ !$omp end target
+
+ !$omp target update from(var_x)
+ if (var_x /= 20) call abort
+end subroutine foo