This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH fortran/diagnostics] Move gfc_error (buffered) to common diagnostics


On 10 December 2014 at 13:54, Dodji Seketeli <dodji@redhat.com> wrote:
>>  /* Report the number of warnings and errors that occurred to the caller.  */
>>
>> @@ -1525,11 +1625,14 @@ gfc_diagnostics_init (void)
>>  {
>>    diagnostic_starter (global_dc) = gfc_diagnostic_starter;
>>    diagnostic_finalizer (global_dc) = gfc_diagnostic_finalizer;
>>    diagnostic_format_decoder (global_dc) = gfc_format_decoder;
>>    global_dc->caret_char = '^';
>> -  new (&pp_warning_buffer) output_buffer ();
>> +  pp_warning_buffer = new output_buffer ();
>
> When I look at the code of the destructor the pretty_printer type
> (pretty_printer::~pretty_printer) in gcc/pretty-print.c, I see that the
> memory for the output buffer is de-allocated using XDELETE.  So I think
> the memory for the output buffer should be allocated using XNEW and the
> output_buffer type should instantiated using a placement new operator
> that uses that XNEWed allocated memory.

The reason we use this placement-new stuff is precisely the use of
XNEW and XDELETE, since those do not call the cons/des-tructors.
However, a lot of code in GCC is directly using new/delete already. I
don't see any reason to not do so in the pretty-printer/diagnostics
code. In fact, David Malcom recently did a similar change for
tree-pretty-print.c:
https://gcc.gnu.org/ml/gcc-patches/2014-11/msg03213.html

But I agree that using XNEW and placement-new is probably safer for
now. I'll try that and submit a new version.

Cheers,

Manuel.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]