> The initial impression I get is that LLVM involves starting from scratch. > I don't quite agree that this is necessary. One of the engineering > challenges we need to tackle is the requirement of keeping a fully > functional compiler *while* we improve its architecture. I don't think that it involves starting from scratch. If we write a LLVM -> GIMPLE converter the compilation process can look like GENERIC -> GIMPLE -> LLVM -> GIMPLE -> RTL
In a first stage nothing will be done with the LLVM representation except convert it back to GIMPLE. This will make sure that all necessary information (including debug) can pass through the LLVM. The conversion will also receive very good testing with this. Latter the optimizations can be moved one by one and in a last stage the backend can also be replaced to work directly with LLVM. This has the advantage that only the last stage of the port is architecture dependent. Rafael