We held a GCC mini-summit at Google on Wednesday, April 18. About 40
people came. This is my very brief summary of what we talked about.
Corrections and additions very welcome.
The goal of the mini-summit was just to let gcc developers meet face
to face and talk. There was no goal of actually making any decisions,
and, indeed, no decisions were made.
If you comment on some particular item here, I'd like to suggest that
you change the Subject line so that conversations can be tracked more
easily.
I didn't do a good job of recording who said what. And indeed most of
this is from memory. I apologize for any mistakes or slights. They
are entirely unintentional.
1) Introductions.
2) A phone call with Uday Khedker and other gcc developers in India
from IIT Bombay in Mumbai. David Edelsohn arranged for this to
happen. The call had to be from another room, and I didn't
participate, so I don't have any details.
3) A discussion of gcc 4.2 and the gcc release process in general.
Nobody objected to shipping gcc 4.2 today, even though it does not
meet the goal of fewer than 100 regressions from an earlier
release. People did comment that we should fix all the P1 bugs
before shipping.
We count regressions from any old release. That means that we have
open bugs which were regressions in 3.x, but we are still counting
them as release-blocking regressions. There were a few suggestions
about how to avoid this:
a) only count regressions from the last two releases.
b) discount old regressions over time, perhaps by lowering their
priority.
c) add voting to bugzilla for which old regressions should count as
release-blocking. Somebody suggested using the number of e-mail
addresses CC'ed on the bug as votes.
d) some people commented that this was a good thing, since it
encourages us to fix old regressions, and that we should not
avoid it at all.
Somebody observed that our focus on regressions can cause us to
ignore important wrong-code bugs which should be fixed even if they
are not actually regressions--perhaps they are bugs in new features
which were not present in earlier versions.
4) A discussion of dataflow. Ken Zadeck described the current state
of dataflow branch. It seems stable, and just about within the
compilation time guidelines set by the SC. He will do more testing
and retesting this weekend, and hopes to commit it to mainline
quite soon, maybe as early as next week if the testing goes well.
5) A discussion of tuples, the IR, and LTO. Diego Novillo described
the tuples proposal, which is an incremental change to the IR. Ken
Zadeck described the current state of his LTO work. He described
LTO as having three parts: writing out types, which is being done
in DWARF; serializing trees; eliminating langhooks.
Discussion about writing out types in DWARF, since apparently
several new DWARF attributes had to be invented to capture
everything that gcc cares about. Michael Eager pointed out that if
the new attributes would be of use for the debugger, he and the
DWARF standardization committee would like to hear about them.
Discussion of LTO and IMA; Geoff Keating said that if LTO works
better than IMA, IMA should be removed. There was some concern
that LTO would be slower than IMA, since in some ways it has to do
more work, since the trees have to be written out and read in;
however, in other ways it does less work.
Discussion of a middle-end type system. Daniel Berlin said that it
wasn't clear that we really needed a type system. He proposed that
the middle-end use structural equivalence for the type system, and
that front-ends annotate types which appear the same but are not.
Interestingly, the types_compatible_p langhook is only used for C
and C++ at present. People talked about the consequences for
debugging information, with no clear outcome. Frontends would have
to annotate types with their alias set in order for TBAA to work
properly.
6) Lunch at the main Google cafeteria.
7) Daniel Berlin described the most recent draft of GPLv3. His
conclusion is that, unlike earlier drafts, it is not substantially
different from GPLv2. There was a fair amount of discussion. In
particular there was some concern about the libgcc exception
license, and whether that could ever go away. The general feeling
was that that was unlikely.
8) A discussion of register allocation. This didn't go too far as
none of the people working on register allocation were there.
Diego Novillo briefly described Vlad Makarov's work and mentioned
Andrew MacLeod's work. David Edelsohn mentioned Peter Bergner's
work. There was some discussion of eliminating reload as the first
step, and of taking pieces out of reload as the first incremental
step.
9) A discussion of maintainership and code review. We discussed the
new non-algorithmic maintainers, and there was general agreement
that it seemed to be OK. Zdenek Dvorak mentioned that the
boundaries of non-algorithmic were unclear, and Joe Buck agreed
that that was inevitable.
We talked about variants on the current system, like having people
who could approve other people's patches but did not have the right
to commit their own patches. It is clear that some people already
review patches which they can not approve. This is a good thing
but there was no clear idea of how to encourage it. Diego Novillo
talked about the difficulties of switching between code writing
mode and patch review mode.
We discussed the patch tracker. None of the active maintainers who
were there appear to use it very much or at all. I proposed
automatic e-mail pings, but that wasn't generally welcomed.
Richard Henderson suggested that the patch tracker should have a
way to quickly and easily approve a patch. A couple of people said
it would be nice to be able to use the tracker to send an e-mail
reply; it does provide a mechanism for that, but it is web-based
rather than being part of one's usual mail reader. One possibility
mentioned was to have a button for the patch tracker to send the
maintainer a copy of the e-mail, which would be a convenient way to
write the reply in a preferred mail reader.
10) Eric Christopher reported that Tom Tromey (who was not present)
had suggested a new mascot for gcc: a unicorn with rainbows. This
was met with general approval, and Eric suggested that everybody
e-mail Tom with their comments. I personally would like to see
the drawing.
11) H.J. Lu discussed SPEC CPU 2006. He reported that a couple of the
tests do not run successfully, and it appears to be due to bugs in
the tests which cause gcc to compile them in unexpected ways. He
has been reporting the problems to the SPEC committee, but is
being ignored. He encouraged other people to try it themselves
and make their own reports.
12) Jose Dana reported his results comparing different versions of gcc
and icc at CERN. They have a lot of performance sensitive C++
code, and have gathered a large number of standalone snippets
which they use for performance comparisons. Some of these can
directly become bugzilla enhancement requests. In general this
could ideally be turned into a free performance testsuite. All
the code is under free software licenses.
13) Michael Meissner raised the idea of compiling functions
differently for different processors, choosing the version based
on a runtime decision. This led to some discussion of how this
could be done effectively. In particular if there is an
architectural difference, such as Altivec, you may get prologue
instructions which save and restore registers which are not
present on all architectures.
14) I asked whether people found the meeting to be valuable. The
general sense was that it was. I asked whether people would be
interested in coming to another one in the future. The general
sense was that they would. So perhaps we will hold another one in
the fall, either at Google or elsewhere.
15) We adjourned for ice cream.