aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2015-07-07 20:13:59 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2015-07-07 20:13:59 +0000
commit2a7fb83f490c86f530efe5a83f720c95e03f883d (patch)
treea9350a7d3fdc4335c536908bc3023cf10f4dc6ca /gcc
parentfe21b3c292c3d93f6102c739ab32c9aeebffc0dd (diff)
downloadgcc-2a7fb83f490c86f530efe5a83f720c95e03f883d.zip
gcc-2a7fb83f490c86f530efe5a83f720c95e03f883d.tar.gz
gcc-2a7fb83f490c86f530efe5a83f720c95e03f883d.tar.bz2
c-ada-spec.h (cpp_operation): Add IS_MOVE_CONSTRUCTOR.
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c-family/ChangeLog5
-rw-r--r--gcc/c-family/c-ada-spec.c8
-rw-r--r--gcc/c-family/c-ada-spec.h1
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/decl2.c2
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/other/dump-ada-spec-8.C12
7 files changed, 33 insertions, 3 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 49f33d6..f2b923f 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -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.
diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c
index 41d612f..abe22d7 100644
--- a/gcc/c-family/c-ada-spec.c
+++ b/gcc/c-family/c-ada-spec.c
@@ -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)
diff --git a/gcc/c-family/c-ada-spec.h b/gcc/c-family/c-ada-spec.h
index e922968..08d2685 100644
--- a/gcc/c-family/c-ada-spec.h
+++ b/gcc/c-family/c-ada-spec.h
@@ -30,6 +30,7 @@ typedef enum {
IS_CONSTRUCTOR,
IS_DESTRUCTOR,
IS_COPY_CONSTRUCTOR,
+ IS_MOVE_CONSTRUCTOR,
IS_TEMPLATE,
IS_TRIVIAL
} cpp_operation;
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index ee9402e..f393a23 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 0332aa2..cd43e62 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -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:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ca13429..57705bc 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..f687405
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/dump-ada-spec-8.C
@@ -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 } } */