aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2015-07-08 21:58:10 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2015-07-08 21:58:10 +0000
commita9dcd529a9c24cc4960c5b3941dd6aa780bfa8a4 (patch)
tree523c4a6e20b7581ef5df5cc9b8d5fc7f78bd3b4f /gcc
parentb03b462f1ffdef448aa666d8079cd047bcddee77 (diff)
downloadgcc-a9dcd529a9c24cc4960c5b3941dd6aa780bfa8a4.zip
gcc-a9dcd529a9c24cc4960c5b3941dd6aa780bfa8a4.tar.gz
gcc-a9dcd529a9c24cc4960c5b3941dd6aa780bfa8a4.tar.bz2
c-ada-spec.h (cpp_operation): Add IS_CONSTEXPR.
c-family/ * c-ada-spec.h (cpp_operation): Add IS_CONSTEXPR. * c-ada-spec.c (print_ada_declaration): Skip constexpr constructors. cp/ * decl2.c (cpp_check): Deal with IS_CONSTEXPR. From-SVN: r225585
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c-family/ChangeLog5
-rw-r--r--gcc/c-family/c-ada-spec.c6
-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-9.C19
7 files changed, 41 insertions, 0 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 63d592d..75e43fd 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,8 @@
+2015-07-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * c-ada-spec.h (cpp_operation): Add IS_CONSTEXPR.
+ * c-ada-spec.c (print_ada_declaration): Skip constexpr constructors.
+
2015-07-08 Jakub Jelinek <jakub@redhat.com>
* c-omp.c (c_omp_declare_simd_clauses_to_numbers): If all clauses
diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c
index 38a8fb2..be8ef24 100644
--- a/gcc/c-family/c-ada-spec.c
+++ b/gcc/c-family/c-ada-spec.c
@@ -2887,6 +2887,7 @@ print_ada_declaration (pretty_printer *buffer, tree t, tree type, int spc)
bool is_method = TREE_CODE (TREE_TYPE (t)) == METHOD_TYPE;
tree decl_name = DECL_NAME (t);
bool is_abstract = false;
+ bool is_constexpr = false;
bool is_constructor = false;
bool is_destructor = false;
bool is_copy_constructor = false;
@@ -2898,6 +2899,7 @@ print_ada_declaration (pretty_printer *buffer, tree t, tree type, int spc)
if (cpp_check)
{
is_abstract = cpp_check (t, IS_ABSTRACT);
+ is_constexpr = cpp_check (t, IS_CONSTEXPR);
is_constructor = cpp_check (t, IS_CONSTRUCTOR);
is_destructor = cpp_check (t, IS_DESTRUCTOR);
is_copy_constructor = cpp_check (t, IS_COPY_CONSTRUCTOR);
@@ -2911,6 +2913,10 @@ print_ada_declaration (pretty_printer *buffer, tree t, tree type, int spc)
if (is_constructor || is_destructor)
{
+ /* Skip constexpr default constructors. */
+ if (is_constexpr)
+ return 0;
+
/* Only consider constructors/destructors for complete objects. */
if (strncmp (IDENTIFIER_POINTER (decl_name), "__comp", 6) != 0)
return 0;
diff --git a/gcc/c-family/c-ada-spec.h b/gcc/c-family/c-ada-spec.h
index 08d2685..116ac0b 100644
--- a/gcc/c-family/c-ada-spec.h
+++ b/gcc/c-family/c-ada-spec.h
@@ -27,6 +27,7 @@ along with GCC; see the file COPYING3. If not see
typedef enum {
HAS_DEPENDENT_TEMPLATE_ARGS,
IS_ABSTRACT,
+ IS_CONSTEXPR,
IS_CONSTRUCTOR,
IS_DESTRUCTOR,
IS_COPY_CONSTRUCTOR,
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 74b746a..b6cca3a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,7 @@
+2015-07-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * decl2.c (cpp_check): Deal with IS_CONSTEXPR.
+
2015-07-08 Jakub Jelinek <jakub@redhat.com>
* decl.c (grokfndecl): Handle flag_openmp_simd like flag_openmp.
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index cac0508..a1446c2 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -4070,6 +4070,8 @@ cpp_check (tree t, cpp_operation op)
}
case IS_ABSTRACT:
return DECL_PURE_VIRTUAL_P (t);
+ case IS_CONSTEXPR:
+ return DECL_DECLARED_CONSTEXPR_P (t);
case IS_CONSTRUCTOR:
return DECL_CONSTRUCTOR_P (t);
case IS_DESTRUCTOR:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d883a7c..d2d51ae 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2015-07-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * g++.dg/other/dump-ada-spec-9.C: New test.
+
2015-07-08 Jakub Jelinek <jakub@redhat.com>
* g++.dg/vect/vect.exp: Run also simd* tests.
diff --git a/gcc/testsuite/g++.dg/other/dump-ada-spec-9.C b/gcc/testsuite/g++.dg/other/dump-ada-spec-9.C
new file mode 100644
index 0000000..6387c81
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/dump-ada-spec-9.C
@@ -0,0 +1,19 @@
+/* { dg-do compile } */
+/* { dg-options "-fdump-ada-spec" } */
+
+class Base {
+ public:
+ virtual void Primitive ();
+
+};
+
+void Base::Primitive () {
+
+}
+
+void Dispatch (Base * B) {
+ B->Primitive ();
+}
+
+/* { dg-final { scan-ada-spec-not "CPP_Constructor" } } */
+/* { dg-final { cleanup-ada-spec } } */