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.