aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2019-04-09 19:29:17 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2019-04-09 19:29:17 +0000
commit53a3f614250f4e7b440e9932aa92fd03410de10f (patch)
tree744a6d75e35840626f92ce302cf455ef36f1121f /gcc
parent9d89b73c06c84ef461da270830f18a7703503e09 (diff)
downloadgcc-53a3f614250f4e7b440e9932aa92fd03410de10f.zip
gcc-53a3f614250f4e7b440e9932aa92fd03410de10f.tar.gz
gcc-53a3f614250f4e7b440e9932aa92fd03410de10f.tar.bz2
c-ada-spec.c (print_destructor): Deal with deleting destructors.
* c-ada-spec.c (print_destructor): Deal with deleting destructors. (dump_ada_declaration) <FUNCTION_DECL>: Likewise. From-SVN: r270239
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c-family/ChangeLog5
-rw-r--r--gcc/c-family/c-ada-spec.c7
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index c62395f..2d118f2 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,8 @@
+2019-04-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * c-ada-spec.c (print_destructor): Deal with deleting destructors.
+ (dump_ada_declaration) <FUNCTION_DECL>: Likewise.
+
2019-04-07 Eric Botcazou <ebotcazou@adacore.com>
* c-ada-spec.c (is_float128): New predicate extracted from...
diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c
index 2ca8bda..c85e606 100644
--- a/gcc/c-family/c-ada-spec.c
+++ b/gcc/c-family/c-ada-spec.c
@@ -2676,6 +2676,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, false);
}
@@ -2946,9 +2948,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;
}