Optimising/cleaning-up GSOC summary. What was done, future directions.

Dimitrios Apostolou jimis@gmx.net
Tue Aug 21 17:27:00 GMT 2012

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 

[DF] Generate REFs in REGNO order

Show hash table stats when -fmem-report

[line-map] simple oneliner that speeds up track-macro-expansion

PR #53525 - track-macro-expansion performance regression

PR 51094 - fprint_w() in output_addr_const() reinstated

[libiberty] add obstack macros

Assembly output optimisations

A pool of small patches I had not sent until the end of GSOC. See full 

strnlen in libiberty

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 


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!


More information about the Gcc mailing list