Hi Nathan!

On Thu, 12 Nov 2015 09:03:42 -0500, Nathan Sidwell <nat...@acm.org> wrote:
> I've applied this to gomp4 branch.  It removes the machinery concerning c++ 
> references.  The openacc std makes no  mention of such a type, so originally 
> we 
> were not permitting the type. But,
> (a) OpenMP supports them, which suggests openacc wishes to
> (b) Fortran already has reference types that need supporting
> (c) it's more work to not support them, by modifying the mappable_type hook.

ACK.  "For reference", your and Cesar's original reasoning had been that
the OpenACC 2.0a specification doesn't talk about reference types
specifically, and they're non-POD, so not supported, which lead to
Cesar's patch that I applied to gomp-4_0-branch in r223179,
<http://news.gmane.org/find-root.php?message_id=%3C87sib0jivr.fsf%40schwinge.name%3E>.
Now, if they "just work", that's even better of course.

> 2015-11-12  Nathan Sidwell  <nat...@codesourcery.com>

That was incomplete however, so we got a testsuite regression because of:

    [...]/gcc/testsuite/g++.dg/goacc/reference.C: In function 'int test1(int&)':
    [...]/gcc/testsuite/g++.dg/goacc/reference.C:7:27: error: reference types 
are not supported in OpenACC
    [...]/gcc/testsuite/g++.dg/goacc/reference.C: In function 'int main()':
    [...]/gcc/testsuite/g++.dg/goacc/reference.C:36:33: error: reference types 
are not supported in OpenACC

Fixed on gomp-4_0-branch in r230265:

commit 6ec26341420b3ced11af5adbe4643ff6cfaf99eb
Author: tschwinge <tschwinge@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Thu Nov 12 16:09:47 2015 +0000

    Complete reversion of "Prohibit C++ reference types in OpenACC regions"
    
        gcc/cp/
        * semantics.c (finish_omp_clauses): Remove "reference types are
        not supported in OpenACC" diagnostic.
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gomp-4_0-branch@230265 
138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/cp/ChangeLog.gomp | 5 +++++
 gcc/cp/semantics.c    | 9 ++-------
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git gcc/cp/ChangeLog.gomp gcc/cp/ChangeLog.gomp
index 1f19b39..e4d000d 100644
--- gcc/cp/ChangeLog.gomp
+++ gcc/cp/ChangeLog.gomp
@@ -1,3 +1,8 @@
+2015-11-12  Thomas Schwinge  <tho...@codesourcery.com>
+
+       * semantics.c (finish_omp_clauses): Remove "reference types are
+       not supported in OpenACC" diagnostic.
+
 2015-11-12  Nathan Sidwell  <nat...@codesourcery.com>
 
        * semantics.c (finish_ommp_clauses): Adjust omp_mappable_type calls.
diff --git gcc/cp/semantics.c gcc/cp/semantics.c
index 34ccec6..ac3cb66 100644
--- gcc/cp/semantics.c
+++ gcc/cp/semantics.c
@@ -6552,11 +6552,6 @@ finish_omp_clauses (tree clauses, bool is_oacc, bool 
allow_fields,
                }
              break;
            }
-         if (is_oacc && TREE_CODE (TREE_TYPE (t)) == REFERENCE_TYPE)
-           {
-             error_at (OMP_CLAUSE_LOCATION (c),
-                       "reference types are not supported in OpenACC");
-           }
          if (t == error_mark_node)
            {
              remove = true;
@@ -6648,10 +6643,10 @@ finish_omp_clauses (tree clauses, bool is_oacc, bool 
allow_fields,
                             == GOMP_MAP_FIRSTPRIVATE_POINTER)))
                   && t == OMP_CLAUSE_DECL (c)
                   && !type_dependent_expression_p (t)
-                  && !cp_omp_mappable_type (((TREE_CODE (TREE_TYPE (t))
+                  && !cp_omp_mappable_type ((TREE_CODE (TREE_TYPE (t))
                                              == REFERENCE_TYPE)
                                             ? TREE_TYPE (TREE_TYPE (t))
-                                            : TREE_TYPE (t))))
+                                            : TREE_TYPE (t)))
            {
              error_at (OMP_CLAUSE_LOCATION (c),
                        "%qD does not have a mappable type in %qs clause", t,


Grüße
 Thomas

Attachment: signature.asc
Description: PGP signature

Reply via email to