Projects / CIL (C Intermediate Language)

CIL (C Intermediate Language)

CIL is a frontend for the C programming language which facilitates program analysis and transformation. CIL will parse and typecheck a program, and compile it into a simplified subset of C. For example, in CIL, all looping constructs are given a single form and expressions have no side effects. This reduces the number of cases which must be considered when manipulating a C program. CIL has been used for a variety of projects, including CCured, a tool which makes C programs memory safe. It supports ANSI C, as well as most of the extensions of the GNU C and Microsoft C compilers. A Perl script acts as a drop-in replacement for either gcc or Microsoft's cl, and allows merging of the source files in your project. Other features include support for control-flow and points-to analyses.

Tags
Licenses
Operating Systems
Implementation

Recent releases

  •  24 Jul 2013 17:04

    Release Notes: This release fixes installation of the CIL library. It fixes machine-independent flags in cilly (eg. -fPIC).

    •  27 Jun 2013 10:00

      Release Notes: Building and installation of the CIL library was fixed.

      •  18 Jun 2013 15:38

        Release Notes: This release improves the build system and installation (available as an opam package).

        •  03 Jun 2013 18:21

          Release Notes: This release supports C99 flexible array members, supports GCC’s “case range” extension (--useCaseRange), adds a “regtest” make target to run regression tests, installs cilly as a proper Perl script, and adds many bugfixes.

          •  22 Mar 2013 08:51

            Release Notes: New features: support for static local variables and GCC’s "computed gotos" (or "labels as values"). Various bugfixes.

            Screenshot

            Project Spotlight

            OpenStack4j

            A Fluent OpenStack client API for Java.

            Screenshot

            Project Spotlight

            TurnKey TWiki Appliance

            A TWiki appliance that is easy to use and lightweight.