aboutsummaryrefslogtreecommitdiff
path: root/gcc/c-family/c-ada-spec.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/c-family/c-ada-spec.c')
-rw-r--r--gcc/c-family/c-ada-spec.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c
index 30fdb59d55c..f5f558c5a5c 100644
--- a/gcc/c-family/c-ada-spec.c
+++ b/gcc/c-family/c-ada-spec.c
@@ -2686,6 +2686,8 @@ print_destructor (pretty_printer *buffer, tree t, tree type)
tree decl_name = DECL_NAME (TYPE_NAME (type));
pp_string (buffer, "Delete_");
+ if (strncmp (IDENTIFIER_POINTER (DECL_NAME (t)), "__dt_del", 8) == 0)
+ pp_string (buffer, "And_Free_");
pp_ada_tree_identifier (buffer, decl_name, t, 0, false);
}
@@ -2937,9 +2939,10 @@ dump_ada_declaration (pretty_printer *buffer, tree t, tree type, int spc)
if (DECL_ARTIFICIAL (t))
return 0;
- /* Only consider constructors/destructors for complete objects. */
+ /* Only consider complete constructors and deleting destructors. */
if (strncmp (IDENTIFIER_POINTER (decl_name), "__ct_comp", 9) != 0
- && strncmp (IDENTIFIER_POINTER (decl_name), "__dt_comp", 9) != 0)
+ && strncmp (IDENTIFIER_POINTER (decl_name), "__dt_comp", 9) != 0
+ && strncmp (IDENTIFIER_POINTER (decl_name), "__dt_del", 8) != 0)
return 0;
}