diff mbox

Adjust -fdump-ada-spec to C++14 switch (2)

Message ID 2570164.Ue7Jp2EBMt@polaris
State New
Headers show

Commit Message

Eric Botcazou July 8, 2015, 9:56 p.m. UTC
We need to skip the constexpr default constructors.

Tested on x86_64-suse-linux, applied on the mainline as obvious.


2015-07-08  Eric Botcazou  <ebotcazou@adacore.com>

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.


2015-07-08  Eric Botcazou  <ebotcazou@adacore.com>

	* g++.dg/other/dump-ada-spec-9.C: New test.
diff mbox

Patch

Index: c-family/c-ada-spec.h
===================================================================
--- c-family/c-ada-spec.h	(revision 225533)
+++ c-family/c-ada-spec.h	(working copy)
@@ -27,6 +27,7 @@  along with GCC; see the file COPYING3.
 typedef enum {
   HAS_DEPENDENT_TEMPLATE_ARGS,
   IS_ABSTRACT,
+  IS_CONSTEXPR,
   IS_CONSTRUCTOR,
   IS_DESTRUCTOR,
   IS_COPY_CONSTRUCTOR,
Index: c-family/c-ada-spec.c
===================================================================
--- c-family/c-ada-spec.c	(revision 225533)
+++ c-family/c-ada-spec.c	(working copy)
@@ -2887,6 +2887,7 @@  print_ada_declaration (pretty_printer *b
       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 *b
       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 *b
 
       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;
Index: cp/decl2.c
===================================================================
--- cp/decl2.c	(revision 225533)
+++ cp/decl2.c	(working copy)
@@ -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: