This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: intermodule optimisation patch



On Monday, May 19, 2003, at 01:33 PM, Chris Lattner wrote:



The attached patch allows GCC to perform optimisations between
modules.
...
I'd like to spark some discussion of this patch.  Is it the right way
to go for intermodule optimisation,

In my (extremely biased) opinion, no it isn't. :) Take a look at the paper I'm planning to present at the GCC summit this weekend for more information on what I think is the right approach:

http://llvm.cs.uiuc.edu/pubs/2003-05-01-GCCSummit2003.html

at least for the moment?

I'm not sure about that. As described in the paper above, the changes I
would like to see made are fairly dramatic, and are thus are unlikely to
be accepted in the near future, if ever. :)

I saw your paper earlier and thought it was interesting. However, your proposal does have some significant disadvantages:


1. It's not ready now.
2. It's not likely to be ready in the near future, since (among other things) it requires
implementation of a new GCC frontend to read LLVM files and generate code.
3. It permits people to write non-GPLed optimisers and code generators and still use GCC's
parsers.
4. There are other issues with the implementation, for instance it's written in C++.
5. It seems likely it'd ultimately be slower than a single-compile approach because of the
overhead of reading and writing LLVM files and converting them to and from trees.


It does have some advantages, most significantly the compatibility with existing Makefiles. However, this could be achieved in other ways, for instance by writing out a 'stub' .o file that contains only compiler options and a pointer to the real source code.

--
Geoff Keating <geoffk@apple.com>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]