aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/c/ChangeLog5
-rw-r--r--gcc/c/c-decl.c3
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl2.c3
-rw-r--r--libgomp/ChangeLog5
-rw-r--r--libgomp/testsuite/libgomp.c++/target-4.C3
-rw-r--r--libgomp/testsuite/libgomp.c/target-10.c14
7 files changed, 36 insertions, 2 deletions
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 7f429c9..ad5edcf 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,8 @@
+2015-03-19 Jakub Jelinek <jakub@redhat.com>
+
+ * c-decl.c (c_decl_attributes): Also add "omp declare target"
+ attribute for DECL_EXTERNAL VAR_DECLs.
+
2015-03-11 Jakub Jelinek <jakub@redhat.com>
* c-parser.c (c_parse_init): Don't call xstrdup on get_identifier
diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c
index c140837..e1741f1 100644
--- a/gcc/c/c-decl.c
+++ b/gcc/c/c-decl.c
@@ -4407,7 +4407,8 @@ c_decl_attributes (tree *node, tree attributes, int flags)
{
/* Add implicit "omp declare target" attribute if requested. */
if (current_omp_declare_target_attribute
- && ((TREE_CODE (*node) == VAR_DECL && TREE_STATIC (*node))
+ && ((TREE_CODE (*node) == VAR_DECL
+ && (TREE_STATIC (*node) || DECL_EXTERNAL (*node)))
|| TREE_CODE (*node) == FUNCTION_DECL))
{
if (TREE_CODE (*node) == VAR_DECL
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index c8135ff..f8ebb2d 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2015-03-19 Jakub Jelinek <jakub@redhat.com>
+
+ * decl2.c (cplus_decl_attributes): Also add "omp declare target"
+ attribute for DECL_EXTERNAL VAR_DECLs.
+
2015-03-18 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/65340
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index a2d1eae..989a030 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -1440,7 +1440,8 @@ cplus_decl_attributes (tree *decl, tree attributes, int flags)
/* Add implicit "omp declare target" attribute if requested. */
if (scope_chain->omp_declare_target_attribute
- && ((TREE_CODE (*decl) == VAR_DECL && TREE_STATIC (*decl))
+ && ((TREE_CODE (*decl) == VAR_DECL
+ && (TREE_STATIC (*decl) || DECL_EXTERNAL (*decl)))
|| TREE_CODE (*decl) == FUNCTION_DECL))
{
if (TREE_CODE (*decl) == VAR_DECL
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
index d621321..d151473 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,8 @@
+2015-03-19 Jakub Jelinek <jakub@redhat.com>
+
+ * testsuite/libgomp.c/target-10.c: New test.
+ * testsuite/libgomp.c++/target-4.C: New test.
+
2015-03-13 Ilya Verbin <ilya.verbin@intel.com>
* testsuite/libgomp.fortran/declare-target-1.f90: New test.
diff --git a/libgomp/testsuite/libgomp.c++/target-4.C b/libgomp/testsuite/libgomp.c++/target-4.C
new file mode 100644
index 0000000..9d1b576
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c++/target-4.C
@@ -0,0 +1,3 @@
+// { dg-do run }
+
+#include "../libgomp.c/target-10.c"
diff --git a/libgomp/testsuite/libgomp.c/target-10.c b/libgomp/testsuite/libgomp.c/target-10.c
new file mode 100644
index 0000000..bc66880
--- /dev/null
+++ b/libgomp/testsuite/libgomp.c/target-10.c
@@ -0,0 +1,14 @@
+/* { dg-do run } */
+
+#pragma omp declare target
+extern int v;
+#pragma omp end declare target
+
+int v;
+
+int
+main ()
+{
+ #pragma omp target update to(v)
+ return 0;
+}