Hi Diego,

I agree with what you said. As a researcher I started using GCC instead of 
Open64 in 2005
after I saw some steps towards modularity when pass manager has been introduced 
since it
was really simplifying my life when working on iterative/collective 
compilation. We have
been also trying to propose further modularization/API-zation using plugins and 
interactive compilation
interface to provide more abstractions to GCC but the acceptance was far too 
slow (6+ years).

Up to now, LLVM is quite behind in terms of optimizations, but it's modularity 
simplifies
adding new optimization, instrumentation and analysis passes among other 
things. I still use or 
plan to GCC for many reasons but I also use LLVM and I see some of my 
colleagues 
moving from GCC to LLVM mainly due to modularity and simplicity-of-use reasons. 
I still sometimes hear 
comments that GCC shouldn't be driven at all by the needs of researchers but 
lots of advanced optimizations 
actually came from academic research, so I think this can be a bit 
short-sighted. If GCC will not move
towards modularization and clean APIs (by the way, I am not saying that it's 
easy), it doesn't mean that 
it will disappear, but it will change the role and will have to catch up. So, I 
think having 2 good 
open-source compilers and a healthy competition is not bad ;) ... We also heard 
many similar comments 
from our colleagues at GROW'09 and GROW'10 workshops...

Cheers,
Grigori



-----Original Message-----
From: gcc-ow...@gcc.gnu.org [mailto:gcc-ow...@gcc.gnu.org] On Behalf Of Diego 
Novillo
Sent: Tuesday, April 13, 2010 11:06 PM
To: Steven Bosscher
Cc: Jack Howarth; Paolo Bonzini; Dave Korn; Manuel López-Ibáñez; Duncan Sands; 
gcc@gcc.gnu.org
Subject: Re: dragonegg in FSF gcc?

On Tue, Apr 13, 2010 at 16:51, Steven Bosscher <stevenb....@gmail.com> wrote:

> You say you see benefits for both compilers. What benefits do you see
> for GCC then, if I may ask? And what can GCC take from LLVM? (And I
> mean the FSF GCC, long term.) This is an honest question, because I
> personally really don't see any benefit for GCC.

If comparisons between the two compilers are easy to make, then it's
easy to determine what one compiler is doing better than the other and
do the necessary port.

In terms of internal structure, LLVM is more modular, which simplifies
maintenance (e.g., the automatic bug finder, unit tests).  The various
components of the pipeline have better separation and stronger APIs.
GCC has been slowly moving in that direction, but it still have ways
to go.  LLVM has already proven that organizing the compiler that way
is advantageous (additionally, other research compilers were
structured similarly: Sage++, SUIF), so emulating that structure
sounds like a reasonable approach.

Another example where GCC may want to operate with LLVM is in JIT
compilation.  Clearly, LLVM has made a significant investment in this
area.  If GCC were to generate LLVM IR, it could just use all the JIT
machinery without having to replicate it.

There may be other things GCC could take advantage of.

OTOH, GCC has optimizer and codegen features that LLVM may want to
incorporate.  I don't have specific examples, since I am not very
familiar with LLVM.


Diego.

Reply via email to