diff options
-rw-r--r-- | gcc/c/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c/c-decl.c | 3 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 3 | ||||
-rw-r--r-- | libgomp/ChangeLog | 5 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.c++/target-4.C | 3 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.c/target-10.c | 14 |
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; +} |