This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

CIL back-end


I'm working for an R&D organization of STMicroelectronics. Within our team we have decided to write a gcc back-end that produces CIL binaries (compliant with ECMA specification, see
Our main motivation is the ability to produce highly-optimized CIL binaries out of plain C code (and C++ in the future), and possibly to add some optimizations to improve, if needed, the quality of the generated code.
There are other open source projects that come with a C to CIL compiler, but none is comparable with gcc in terms of program optimizations.

In CIL, the semantic of a program is expressed in the form of a bytecode
executable by a stack-based virtual machine (similarly with how Java works).
As a new port, CIL substantially differs from the "typical" gcc target.
For instance, RTL representation seems inappropriate since the virtual machine lacks registers, stack frames, ecc. and since RTL itself lacks high-level information (classes, methods, fields, exceptions...) required by CIL.
In other words, compiling for CIL demands a more high-level intermediate representation, which gimple looks to match quite closely.
Therefore, we think that the best way to target CIL is to cut gcc compilation flow at gimple level and to provide the simplest machine description that doesn't break gcc and that meaningfully drives the heuristics of the tree passes.

Every so often CIL looks to poke in the works of the mailing list, but I haven't been able to track the current status of the discussion on the topic.
What do you think about such a port? Are there any people interested?
Of course, opinions, suggestions or any sort of feedback are highly appreciated.
We would be glad to share our development.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]