c-ada-spec.h (cpp_operation): Add IS_MOVE_CONSTRUCTOR.
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 7 Jul 2015 20:13:59 +0000 (20:13 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 7 Jul 2015 20:13:59 +0000 (20:13 +0000)
c-family/
* c-ada-spec.h (cpp_operation): Add IS_MOVE_CONSTRUCTOR.
* c-ada-spec.c (print_ada_declaration): Skip move constructors.
cp/
* decl2.c (cpp_check): Deal with IS_MOVE_CONSTRUCTOR.

From-SVN: r225525

gcc/c-family/ChangeLog
gcc/c-family/c-ada-spec.c
gcc/c-family/c-ada-spec.h
gcc/cp/ChangeLog
gcc/cp/decl2.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/other/dump-ada-spec-8.C [new file with mode: 0644]

index 49f33d6357af25a0a3aefa3ce2e29e034cfbafdd..f2b923f0df33a81de6808c5a7b442f54059ecf6b 100644 (file)
@@ -1,3 +1,8 @@
+2015-07-07  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * c-ada-spec.h (cpp_operation): Add IS_MOVE_CONSTRUCTOR.
+       * c-ada-spec.c (print_ada_declaration): Skip move constructors.
+
 2015-07-01  Jason Merrill  <jason@redhat.com>
 
        * c-common.h (D_CXX11): Rename from D_CXX0X.
index 41d612fc46754c577257b2f6cb779d7b2cc927c8..abe22d7f92a6a52c8c2f6134545143c043863c3f 100644 (file)
@@ -2891,6 +2891,7 @@ print_ada_declaration (pretty_printer *buffer, tree t, tree type, int spc)
       bool is_constructor = false;
       bool is_destructor = false;
       bool is_copy_constructor = false;
+      bool is_move_constructor = false;
 
       if (!decl_name)
        return 0;
@@ -2901,11 +2902,12 @@ print_ada_declaration (pretty_printer *buffer, tree t, tree type, int spc)
          is_constructor = cpp_check (t, IS_CONSTRUCTOR);
          is_destructor = cpp_check (t, IS_DESTRUCTOR);
          is_copy_constructor = cpp_check (t, IS_COPY_CONSTRUCTOR);
+         is_move_constructor = cpp_check (t, IS_MOVE_CONSTRUCTOR);
        }
 
-      /* Skip copy constructors: some are internal only, and those that are
-        not cannot be called easily from Ada anyway.  */
-      if (is_copy_constructor)
+      /* Skip copy constructors and C++11 move constructors: some are internal
+        only and those that are not cannot be called easily from Ada.  */
+      if (is_copy_constructor || is_move_constructor)
        return 0;
 
       if (is_constructor || is_destructor)
index e922968626fe19c2d56c3987218ce03264867f5d..08d268573c7b0b0a4459f312f9a114e68e4879c7 100644 (file)
@@ -30,6 +30,7 @@ typedef enum {
   IS_CONSTRUCTOR,
   IS_DESTRUCTOR,
   IS_COPY_CONSTRUCTOR,
+  IS_MOVE_CONSTRUCTOR,
   IS_TEMPLATE,
   IS_TRIVIAL
 } cpp_operation;
index ee9402ee0d6ba17ea7ea2271ebcc30b1ce686f19..f393a232802fcf683bc412217cda136fce9b3a80 100644 (file)
@@ -1,3 +1,7 @@
+2015-07-07  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * decl2.c (cpp_check): Deal with IS_MOVE_CONSTRUCTOR.
+
 2015-07-06  Jason Merrill  <jason@redhat.com>
 
        * pt.c (reduce_template_parm_level): Also build the TYPE_DECL
index 0332aa239a4c48b2993d2cefaaf95a40e187169b..cd43e62a84c34a2ff74eff095c97fea5bf6c6152 100644 (file)
@@ -4077,6 +4077,8 @@ cpp_check (tree t, cpp_operation op)
        return DECL_DESTRUCTOR_P (t);
       case IS_COPY_CONSTRUCTOR:
        return DECL_COPY_CONSTRUCTOR_P (t);
+      case IS_MOVE_CONSTRUCTOR:
+       return DECL_MOVE_CONSTRUCTOR_P (t);
       case IS_TEMPLATE:
        return TREE_CODE (t) == TEMPLATE_DECL;
       case IS_TRIVIAL:
index ca13429495f222b0982c7f44185c5d929ecfd27b..57705bcc915f0a51a9b97fe97733f21377dfee23 100644 (file)
@@ -1,3 +1,7 @@
+2015-07-07  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * g++.dg/other/dump-ada-spec-8.C: New test.
+
 2015-07-07  David Malcolm  <dmalcolm@redhat.com>
 
        PR jit/66783
diff --git a/gcc/testsuite/g++.dg/other/dump-ada-spec-8.C b/gcc/testsuite/g++.dg/other/dump-ada-spec-8.C
new file mode 100644 (file)
index 0000000..f687405
--- /dev/null
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-fdump-ada-spec" } */
+
+template<class T, class U> class Generic_Array
+{
+  Generic_Array();
+};
+
+template class Generic_Array<char, int>;
+
+/* { dg-final { scan-ada-spec-not "access Generic_Array" } } */
+/* { dg-final { cleanup-ada-spec } } */