?

Log in

No account? Create an account

Previous Entry | Next Entry

nightlife

2004 GCC Developers' Summit, Day 2

  • 4th Jun, 2004 at 7:13 AM

I'm sitting inside my new hostel room this morning, typing up this entry. You see, when I arrived here on Wednesday, the hostel didn't have a single private room, so they stuck me in a nice double room. Now I'm in a small, dingy, dark private room in the attic of their building. It's not as nice, but it was still a good place to sleep. Thanks to some kind soul with a D-Link wireless access point, I can access the Internet.

Day two of the Summit was not as interesting as the first. I found that the presentations just weren't as well prepared, nor were the topics as interesting. Jeff Bailey had showed up overnight, and he told me that he had noticed this as well. In fact, at Debconf 4, he gave a talk on Effective Presentations to the speakers, and Andrew Hutton is considering having Jeff go do thesame for OLS.

Of the presentations that I saw, I think there were only three interesting ones. The others seemed to be about small optimisations that could be performed at the RTL level, and were probably being made redundant by the new SSA form.

Paolo Carlini spoke in the morning about libstdc++-v3 and how far it has come. Now I know how difficult it is to implement a fast and good C++ library, and so their work is pretty impressive. However, their benchmarks were sort of weak, and it is probably due to their lack of manpower.

In the afternoon, Mostofa Hagog talked about Swing Modulo Scheduling, and how you can do partial-loop unrolling to keep a processor's ALUs as full as possible. His algorithm is very interesting, and it seems like it will make GCC perform nicer on modern processors, without significantly increasing code size.

The last talk of the day was by Zdenek Dvorak, who talked about declarative programming languages, and how GCC needs to look at their optimisations. Sadly, many of the things that declarative languages can do are outside the scope of a C compiler, but there are certain things, like tail-call elimination, that could be handled by GCC. For example, code could be turned from recursive into interative. Just take the following function:

int f (int x)
{
  if (x <= 0) then
    return 1;
  else
    return g (x, f (x-1));
}

and turn it into:

int f (int x)
{
  if (x <= 0) then
    return 1;
  r = 1;
  for (int ax = 0; ax != x; )
    {
      ax++;
      r += g (ax, r);
    }
  return r;
}

which is much tighter. This optimisation can only really be done for a specific type of function, but is currently not handled by GCC.

We then had a nice GPG keysigning, again managed by Matthew Wilcox. I've got a whole bunch of keys to sign, and a new group of people verify my key. By the time I leave OLS, I should be very well connected.

The last session of the day was a BOF session about the future of the GNU C Library. Jakub Jelinek, one of the GLibC Steering Committee members was in attendence, so a bunch of distributors and GCC hackers met with him to air their concerns about how GLibC development was proceeding. Jakub promised to talk to Roland McGrath and Ulrich Drepper about it. Ange also volunteered to ask Ulrich to come ot the Summit next year.

After this, we headed off to dinner at Wasabi, a nice Japanese restaurant here. I had two rolls, the names of which I have forgotten, which were tasty; but unremarkable. I think they were too squishy, without the requisite texture. Ah well.

Now I should head to the conference centre so I can get some breakfast in me. Sadly, it seems that Mr. Wireless has taken his access point off-line, or the air pressure has changed and I'm no longer in his range. Ooh! It's back again. I just have to tilt the wireless card upright. Time to upload this entry.


Comments

( 6 comments — Leave a comment )
joenotcharles
4th Jun, 2004 22:14 (UTC)
Isn't GCC officially not just a C compiler any more? (Would "can't be done with GCC's current architecture" be more accurate? What are the hurdles?)
sfllaw
5th Jun, 2004 06:56 (UTC)

You are correct, it is not just a C compiler anymore. Granted, these constructs could probably optimised in the same way across C++, Objective-C, FORTRAN 77, Fortran 90, etc... But really, aren't my examples easier to read than if I wrote it in some other language?

joenotcharles
5th Jun, 2004 20:46 (UTC)
Hmm? You said, "Sadly, many of the things that declarative languages can do are outside the scope of a C compiler." I just meant that GCC *isn't* a C compiler, so why are they outside its scope?
sfllaw
6th Jun, 2004 06:10 (UTC)

I really mean that it's outside the range of a procedural compiler, where the inherent semantics are not available.

For instance, GCC has no idea if you are iterating over a data structure to find something, or iterating over it to apply some transformation.

(Anonymous)
7th Jun, 2004 13:11 (UTC)
Does that code work?
I'm not sure how you did that transform; a desk check with x = 1 reveals:

return g ( 1, f(1-1));

in the first exampe but:

r = g(0,1);

in the second.

I think you want:

r = x;
for (int ax = 0; ax != x; ) {
r += g(r, ax);
ax++;
}
return r;

I'm assuming += otherwise the value of r can be thrown away.

Though I could be wrong.

Anand (at) Debian. You'll figure it out if you care to respond.
sfllaw
7th Jun, 2004 23:11 (UTC)
Re: Does that code work?
Fixed. Thanks.
( 6 comments — Leave a comment )