Log in

No account? Create an account

Previous Entry | Next Entry


2004 GCC Developers' Summit, Day 3

  • 6th Jun, 2004 at 12:50 PM

Now I am safely back in Montréal, after a train ride, some hacking, and then much needed sleep. Day 3 of the GCC Summit was very good, with well-prepared presentations by major GCC hackers.

Nathan Sidwell and Zack Weinberg started the day with a presentation on statically typed trees in GCC. Now, the current abstract syntax tree, as Julie can tell you, in a massive union of structs. And too often, these structs are overloaded with some other meaning. Ugly! So they're proposing a simplified system, a much smaller union with supporting macros that do inheritance. Now, an inheritance system in C is ugly, but it looks like they'll get it right. And they'll also get compile-time checks, instead of run-time checks for parse-tree failures; which can only be a win. People asked if C++ could be used to write the front-ends, but I got the impression that this would be a bigger headache than it would first seem.

After this, Diego Novillo went up and talked about TreeSSA. He went over the history of the project, and how it was merged into mainline. Then he discussed the benefits of SSA form, for people who haven't been tracking it, and the sorts of improvements that have been made. In addition, he mentioned the future of the SSA optimisations, and what could be possible. For instance, many of the optimisers in the RTL are redundant because of the superior SSA optimisations. But the current SSA doesn't have any loop optimisers, which should be coming with the upcoming LNO work. As well, there are murmurs of pushing SSA form into the back-ends, so that machine-specific optimisations could be applied.

Next, David Edhelson talked to us about the loop optimisers, sitting in the LNO (Loop Nested Optimisers) branch. This pass works on the SSA structures, and tries to improve the performance of loops. For instance, if you have a nested loop, switching the nesting of the loops might improve cache locality. They've added a data dependence framework for analysing data-flow in the code. Then, they added a matrix-based transformation method for rearrranging the loop nests. The advantage of using a matrix-based transformation is that this code rearrangement will not need multiple passes. You just compute the appropriate transformation, and rearrange the code all at once.

The next talk was presented by Dorit Naislos on autovectorisation. Referencing the talk that Intel gave on Day 1, Dorit spoke on how IBM was working on code tt automatically discover loops, and to exploit vector-based instructions for speeding up computation. As we know, many platforms support vector maths, where operations can be performed on multiple variables at a time. If a loop doesn't have any data-dependence on its previous values, you can parallise its computation; something that is current done by hand in assembler. This is in the LNO branch, building on that work.

The last talk of the day was presented by Jan Hubicka, on the Call Graph Module. This talk was about changed to the interfaces of the call-graph, and how it improves such things as inlining, and inter-procedural propogation. It looks like the inlining improvements have been paying off; now the space-time balance is much better than it was in the days of 3.3.

Finally, there was a Q&A session with the GCC Steering Committee. This was mostly a session where the philosophy of the project was dissemenated, which I think is constructive if you want a cohesive group.

At the end of this, we had a nice group picture, and then headed off to socialise. We went to the Black Thorne, where I ordered a salmon fillet (overcooked) and a nice steak (brilliantly grilled.) I got to chat with some people, and enjoyed their conversations very much. After a while, we were kicked out of there, and went to Mother McGinty's, where people made me dance to very loud music. At the end of the night, I headed off with Jeff and Angie to their hotel, we chatted for a while and did some e-mail. Then I dragged myself to the hostel and went to sleep. The train ride home was gruelling, and I slept for most of it.

Over all, this conference was very good. Exhausting, but very imformative. I hope to see these people at OLS next month.