]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
c-ada-spec.c (print_destructor): Deal with deleting destructors.
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 9 Apr 2019 19:30:57 +0000 (19:30 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 9 Apr 2019 19:30:57 +0000 (19:30 +0000)
* c-ada-spec.c (print_destructor): Deal with deleting destructors.
(dump_ada_declaration) <FUNCTION_DECL>: Likewise.

From-SVN: r270241

gcc/c-family/ChangeLog
gcc/c-family/c-ada-spec.c

index 5b03b3beb5d4c5468e33164479106e3778d41401..7e77b0974de8803ff1cad9c0f7076524e5d688ce 100644 (file)
@@ -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.
+
 2018-12-06  Release Manager
 
        * GCC 7.4.0 released.
index 18c5ccf1054e3c408488a19be062416b754bb0e2..6d7667e82b31c1916216f0e5c9a56d6200cacdff 100644 (file)
@@ -2663,6 +2663,8 @@ print_destructor (pretty_printer *buffer, tree t)
   tree decl_name = DECL_NAME (DECL_ORIGIN (t));
 
   pp_string (buffer, "Delete_");
+  if (strncmp (IDENTIFIER_POINTER (DECL_NAME (t)), "__del", 5) == 0)
+    pp_string (buffer, "And_Free_");
   pp_ada_tree_identifier (buffer, decl_name, t, false);
 }
 
@@ -2915,8 +2917,9 @@ print_ada_declaration (pretty_printer *buffer, tree t, tree type, int spc)
          if (DECL_ARTIFICIAL (t))
            return 0;
 
-         /* Only consider constructors/destructors for complete objects.  */
-         if (strncmp (IDENTIFIER_POINTER (decl_name), "__comp", 6) != 0)
+         /* Only consider complete constructors and deleting destructors.  */
+         if (strncmp (IDENTIFIER_POINTER (decl_name), "__comp", 6) != 0
+             && strncmp (IDENTIFIER_POINTER (decl_name), "__del", 5) != 0)
            return 0;
        }