From: Iain Buclaw Date: Tue, 23 Jun 2020 16:08:54 +0000 (+0200) Subject: d: Remove another dependency on the front-end OutBuffer type. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e52f5d0786fce4ef6ae5937ab33e871c59da3c99;p=gcc.git d: Remove another dependency on the front-end OutBuffer type. 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. --- diff --git a/gcc/d/d-lang.cc b/gcc/d/d-lang.cc index e4d0a24c65c..2c474f8adea 100644 --- a/gcc/d/d-lang.cc +++ b/gcc/d/d-lang.cc @@ -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)); } }