From 9b65e171edf31cd83fd075f6ed4f3943ebecc505 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 19 Mar 2015 20:12:43 +0100 Subject: [PATCH] c-decl.c (c_decl_attributes): Also add "omp declare target" attribute for DECL_EXTERNAL VAR_DECLs. * c-decl.c (c_decl_attributes): Also add "omp declare target" attribute for DECL_EXTERNAL VAR_DECLs. * decl2.c (cplus_decl_attributes): Also add "omp declare target" attribute for DECL_EXTERNAL VAR_DECLs. * testsuite/libgomp.c/target-10.c: New test. * testsuite/libgomp.c++/target-4.C: New test. From-SVN: r221520 --- gcc/c/ChangeLog | 5 +++++ gcc/c/c-decl.c | 3 ++- gcc/cp/ChangeLog | 5 +++++ gcc/cp/decl2.c | 3 ++- libgomp/ChangeLog | 5 +++++ libgomp/testsuite/libgomp.c++/target-4.C | 3 +++ libgomp/testsuite/libgomp.c/target-10.c | 14 ++++++++++++++ 7 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 libgomp/testsuite/libgomp.c++/target-4.C create mode 100644 libgomp/testsuite/libgomp.c/target-10.c diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 7f429c97a5b..ad5edcfbf48 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,8 @@ +2015-03-19 Jakub Jelinek + + * c-decl.c (c_decl_attributes): Also add "omp declare target" + attribute for DECL_EXTERNAL VAR_DECLs. + 2015-03-11 Jakub Jelinek * 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 c140837f139..e1741f13011 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 c8135ffa56f..f8ebb2dcfa9 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2015-03-19 Jakub Jelinek + + * decl2.c (cplus_decl_attributes): Also add "omp declare target" + attribute for DECL_EXTERNAL VAR_DECLs. + 2015-03-18 Paolo Carlini PR c++/65340 diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index a2d1eae2015..989a0303bab 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 d6213210507..d1514733c43 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,8 @@ +2015-03-19 Jakub Jelinek + + * testsuite/libgomp.c/target-10.c: New test. + * testsuite/libgomp.c++/target-4.C: New test. + 2015-03-13 Ilya Verbin * 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 00000000000..9d1b576f977 --- /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 00000000000..bc66880b6af --- /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; +} -- 2.30.2