d: Remove another dependency on the front-end OutBuffer type.
authorIain Buclaw <ibuclaw@gdcproject.org>
Tue, 23 Jun 2020 16:08:54 +0000 (18:08 +0200)
committerIain Buclaw <ibuclaw@gdcproject.org>
Thu, 25 Jun 2020 15:02:46 +0000 (17:02 +0200)
As the DMD front-end never frees allocated memory, the glue layer
between the DMD front-end and GCC should generally avoid using DMD types
and interfaces if the purpose is internal only.

gcc/d/ChangeLog:

* d-lang.cc (d_parse_file): Replace OutBuffer with obstack.

gcc/d/d-lang.cc

index e4d0a24c65c9584d6b41da9c979eeea959b4f0a3..2c474f8adea3a785e95a3de7f8ea56e78f2fe1fa 100644 (file)
@@ -1032,18 +1032,20 @@ d_parse_file (void)
       message ("binary    %s", global.params.argv0.ptr);
       message ("version   %s", global.version.ptr);
 
-      if (global.params.versionids)
+      if (global.versionids)
        {
-         OutBuffer buf;
-         buf.writestring ("predefs  ");
-         for (size_t i = 0; i < global.params.versionids->length; i++)
+         obstack buffer;
+         gcc_obstack_init (&buffer);
+         obstack_grow (&buffer, "predefs  ", 9);
+         for (size_t i = 0; i < global.versionids->length; i++)
            {
-             const char *s = (*global.params.versionids)[i];
-             buf.writestring (" ");
-             buf.writestring (s);
+             Identifier *id = (*global.versionids)[i];
+             const char *str = id->toChars ();
+             obstack_1grow (&buffer, ' ');
+             obstack_grow (&buffer, str, strlen (str));
            }
 
-         message ("%s", buf.peekChars ());
+         message ("%s", (char *) obstack_finish (&buffer));
        }
     }