And no this is not a 1st April joke :-)
Thanks, Kirill 2009/4/1 Kirill Kononenko <kirill.konone...@gmail.com>: > Hello Dear GCC Developers, > > > > I would like to ask your opinion about possibility for integration of > the libJIT Just-In-Time compilation library and GCC. For example, the > same way as libffi is integrated within gcc source tree. It seems to > me that LLVM solves many goals that are already complete and solved in > GCC. So I think libJIT potentially is more useful for GCC and software > developers. > > > What is your opinion about this idea? How this should be done and what > improvements could be made to both libJIT and GCC for this kind of > integration? > > > I was also very surprised to read this interesting discussion by Rhys > Weatherley (libJIT) and Chris Lattner (LLVM) (libJIT vs LLVM): > http://lists.gnu.org/archive/html/dotgnu-libjit/2004-05/index.html > > > It talks more about differences in design and goals between libJIT and LLVM. > > > Please let me know your ideas and thoughts. No flaming please. I think > everyone benefits if we can gather enough thoughts about JITing in > GCC. > > > I also would like to point to my personal project about improvement of > libJIT: http://code.google.com/p/libjit-linear-scan-register-allocator/ > . It studies how to make efficient code generation for Common > Intermediate Language and JIT compilers, and implements a full linear > scan register allocator and bin packing register allocator within > libJIT. It also has support of XMM registers for floating point > operations. The experimental target is the Microsoft Common > Intermediate Language. There is various data-flow and control-flow > analysis, including various liveness analysis(fast and full), > dead-code elimination etc with various optimization level. For > example, this code generator gives the following benchmark on my pc > for pnetmark at the moment, with Portable.NET Just-In-Time compiler > 0.8.0: > > LibJIT Linear Scan Register Allocator > Current libJIT 0.1.2 > > Sieve 20439 17499 > Loop 28311 24976 > Logic 57311 55647 > String 16586 16651 > Float 2642 1940 > Method 32426 30401 > > PnetMark(Average Score) 19005 16970 > > The average improvement is 12% or so in pnetmark comparing to a global > register allocator in libJIT which uses number of usage of a variable > as an euristic. With dead-code analysis enabled it jumps another 12% > or so. For example, the logic benchmark jumps over 70%. Other > optimizations enabled can give more improvement. It was remarkably > easy to add dead-code elimination in libJIT for example I spent less > than a week for this. But I am rather interested in the code > generation and linear scan register allocation at the moment and > Common Intermediate Language. I think GCC could benefit a lot if an > integration of both libJIT and GCC could be considered, and there was > cooperation about this. > > > > Thanks, > Kirill >