This year's GSOC has come to an end.
In a very brief summary, I achieved a few things this summer: Ported
patches from last year - some made it to mainline, extended old patches
and resubmitted them, wrote new but mostly small clean-ups/speed-ups. In a
nutshell:
[DF] Generate REFs in REGNO order
http://gcc.gnu.org/ml/gcc-patches/2012-05/msg01348.html
Show hash table stats when -fmem-report
http://gcc.gnu.org/ml/gcc-patches/2012-05/msg01392.html
http://gcc.gnu.org/ml/gcc-patches/2012-08/
[line-map] simple oneliner that speeds up track-macro-expansion
http://gcc.gnu.org/ml/gcc-patches/2012-06/msg00163.html
PR #53525 - track-macro-expansion performance regression
http://gcc.gnu.org/ml/gcc-patches/2012-07/msg00284.html
PR 51094 - fprint_w() in output_addr_const() reinstated
http://gcc.gnu.org/ml/gcc-patches/2012-07/msg00345.html
[libiberty] add obstack macros
http://gcc.gnu.org/ml/gcc-patches/2012-08/msg00214.html
Assembly output optimisations
http://gcc.gnu.org/ml/gcc-patches/2012-08/msg00329.html
A pool of small patches I had not sent until the end of GSOC. See full
thread:
http://gcc.gnu.org/ml/gcc-patches/2012-08/msg01245.html
strnlen in libiberty
http://gcc.gnu.org/ml/gcc-patches/2012-08/msg00333.html
All in all I plan to resubmit the patches that haven't made it to
mainline, after doing extra changes in some (like converting the hash
table statistics patch to be generic with only code in hashtab.c, though I
have doubts of its usefulness now that more and more code is moving to C++
hash tables).
However I couldn't complete some deeper stuff I started working on. For
example all the strlen() calls on identifier strings seem superfluous, so
I tried converting str to a flexible-array member in struct ht_identifier,
so that length is always at str[-4]. I hadn't noticed that it would
translate to a change in tree_identifier, which lead to a whole number of
changes in irrelevant points. I gave up after getting errors on gengtype
generated files. See more thorough reports concerning my failed attempts
at
http://gcc.gnu.org/ml/gcc-patches/2012-08/msg01362.html
http://gcc.gnu.org/ml/gcc-patches/2012-08/msg01356.html
Other than that, I think a good portion of my time this summer went to
coding a valgrind parser: from callgrind profile to SVG. It was first
presented at [1] and the source is at [2]. I plan to document it a little
and make a proper project out of it. You can see it live at [3], just make
sure you click on the individual points.
[1] http://gcc.gnu.org/ml/gcc/2012-06/msg00373.html
[2] https://code.launchpad.net/~jimis/+junk/callgrind_parser
[3] http://teras-ics.mooo.com:8003/
I believe I've incorporated most ideas we discussed in Cauldron, please
let me know of any more ideas that come to mind. I am now in the process
of moving all the backend to the compile farm (waiting for a support
request to be processed since my requirements are pretty high) and last
step will be emailing @overseers for hosting somewhere more appropriate.
Overall, the experience was great and I am sure that even though summer
ends here my involvement with the GCC community will keep going. I had a
great time, I'm glad I met most of you people in Cauldron, I hope we keep
in touch. Thanks Andrey for your kind mentoring, thanks to everybody else
for comments, patch reviews, opinions, and finally thanks Google for
funding open source development in such an awesome manner!
Yours,
Dimitris