This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC 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] |
2008/8/14 Tom Tromey <tromey@redhat.com>: > > ISTR Manuel having a patch for caret diagnostic output... ? > I was planning to submit it this week to consider it for GCC 4.4 (disabled by default). I am still testing it. Bootstrap and regression testing with --enable-languages=all,ada,obj-c++ is very slow even on a x86_64-unknown-gnu-linux-pc. But here it is for your reviewing and testing pleasure. ;-) The approach followed is to never free the input buffers and keep pointers to the start of each line tracked by each line-map. Alternative approaches are: b) Re-open the file and fseek but that is not trivial since we need to do it fast but still do all character conversions that we did when libcpp opened it the first time. This is approximately what clang does as far as I know except that they keep a cache of buffers ever reopened. I think that thanks to our line-maps implementation, we can do the seeking quite more efficiently in terms of computation time. Still I do not know how to *properly* and *efficiently* re-open a file. c) Memcpy the relevant lines to a buffer for each line_map. This does not seem a good approach under any circumstance. It means more memory needed while the input buffers are opened (because we will end up with two copies of the buffer) and we cannot free up that memory later because we do not track how many references there are to each line_maps, so we never free them. Perhaps the GC can help here? This is the approach followed by GFortran. Comments are welcome. However, I don't have time to do memory/computation time tests (setting up the environment itself seems very time consuming), so those would be *greatly* appreciated! You can see many examples of the caret output by configuring with --enable-caret-diagnostics, then reverting the changes to gcc/testsuite/lib/gcc.exp and running the testsuite. Check the output in the gcc.log and g++.log files. Cheers, Manuel.
Attachment:
caret-diagnostics-20080814.diff
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |