The life and times of Zack Weinberg.
Tuesday, 27 May 2003
# 6 AM
Everyone seems to have gotten sick of verifying PGP keys; there's a timeslot set aside at the end of the conference for this, so they're probably assuming they'll get everyone then.
Diego Novillo picked up where Jason Merrill left off with GIMPLE, describing how SSA form works and introducing some of the optimizations it enables. As Richard predicted, this is almost all of the interesting high-level optimizations one could want. The exceptions involve cross-module optimization, which is difficult mainly for political reasons that I don't care to go into.
Mark and Nathan and I skipped out on the rest of the morning's talks to go wander around Ottawa. We saw the Canadian Houses of Parliament, which Nathan says looks very much like the British prototype, except built with a different kind of stone. Around the back of these, we found the staircase lock connecting the Ottawa River to the Rideau Canal, which goes all over the place but eventually connects to the St. Lawrence Seaway. This was built in the sixteenth century, and was an important shipping route at the time, but it is now used primarily by people out for boating trips. I do mean trips; you wouldn't go up this lock for a short excursion, it takes at least an hour to get from one end to the other. There are at least eight individual steps, and they're operated by hand, using period windlasses and chains.
For lunch we went to the Marché Mövenpick in the mall next to the hotel. This is an extremely upscale cafeteria. You get a tray and a card, and you wander around the place, which is full of faux pushcarts manned by perky teenagers. Each pushcart has a different kind of food, you ask for what you want, they give it to you, and then they put a stamp on your card. When you've got enough you go find a table. After you're done eating you give your card to the cashier, and they tell you how much money they want.
In the afternoon, Michael Matz gave a talk about register allocation. The right approach is to treat it as a graph coloring problem; unfortunately this is NP-complete. There are various clever heuristics that do an OK job, but they're messy and unintuitive. Then you throw in all the weird details of real processors (no one has ever made a CPU where all the registers are exactly the same, alas) and it gets really messy. The good news is it's nearly done, and works well; the bad news is we won't be able to get rid of the infamous "reload" pass entirely. But, it will hopefully shrink quite a bit.
After that, Chris Lattner took the stage to describe his spiffy new intermediate representation, LLVM. LLVM solves more or less the same problem that GIMPLE does, but isn't GIMPLE. He's mostly interested in intermodule optimization, which is unfortunate, because of the aforementioned political problems with that. It is also unfortunate that he's put in a great deal of effort on his IR, and the GIMPLE folks have put in a great deal of effort on their IR, and they aren't compatible. And we don't want two mid-level IRs. I anticipate lots of nasty fallout from this one.
In the evening I hosted a BOF session in which I tried to get about fifty of the core developers to agree on solutions to a handful of the most immediately pressing problems with GCC. It got really heated at times. However, we seem to have come out of it with consensus on all the issues, and we may even get them fixed. After that I went to dinner with Mark, Nathan, and a random collection of people from Red Hat and ACT Europe.