On Tuesday 22 November 2005 12:53, Scott Robert Ladd wrote:

>       GENERIC -> GIMPLE -> LLVM -> GIMPLE -> RTL
>
> That design adds two phases (GIMPLE -> LLVM, LLVM -> GIMPLE) here --
> perhaps simple one, perhaps not. The line is very straight, but adding
> two more segments make me wonder if we're complicating the plumbing.
>
> How will this effect compiler speed?
>
It will likely slow down the compiler, initially.  Though, we may get the 
usual mixed bag, some things will be faster, others slower.  There will be 
some infrastructure duplication and integration is a tricky game to play.  

We are still fighting integration problems with tree-ssa, and LLVM is bound 
to be trickier to integrate, as it brings a completely new data structure 
and implementation language.

In the end, of course, the result is a better compiler (both in compile 
time and codegen quality).  The question is which road takes us faster to 
the goal.

> Already, we have people who understand frontends, and others who know
> GIMPLE initimately, and still overs who focus on RTL generation. Is
> adding two additional passes going to further fragment expertise?
>
No.  LLVM is conceptually no different from our current infrastructure and 
where we are planning to go framework-wise.  The reason it is attractive 
is that it already solves some data structure and infrastructure problems.  
Its data structures are leaner and it already provides a modern IPA 
architecture.

Reply via email to