the customizable gcc compiler
As a derivate of gcc, mygcc
is distributed under GPL license (the same version as GCC). It
has been submitted as a gcc
patch for the main trunk and is waiting for approval to become
(hopefully) part of the standard gcc release. Until then, we
distribute a current snapshot in full source and as an executable for
the Linux/x86 platform. Currently, the patch is maintained within the
"graphite" development branch of gcc.
Note: Several versions of mygcc are available below for historical reasons, but only the most recent version is maintained, and installation instructions may not apply to older versions.
adds experimental support for C++
checks (or condates) are now parsed using a Bison grammar
the syntax of condates has been significantly revised and extended
a first testsuite has been integrated in gcc's testsuite
more testing, including on gcc itself during compiler's bootstrapping
documentation has been integrated in gcc's info pages
more reliable dynamic allocation using Vectors
adapted the pattern matching to cope with some changes in the pretty-printer
formatted the source code according to gnu & gcc rules
0.2.0 (based on gcc 4.0.1)
constrained reachability checks are now specified on 5 lines (instead of 4)
supports reachability checks and simple checks using two options, --tree-checks and --tree-check respectively
tolerates whitespace in the patterns
variables may be named by any letter (not just X, Y, Z, a, b, c)
compiles itself and passes succesfully the gcc testsuite on Linux/x86
Version 0.1.0 (based on gcc
Note: version 0.1.0 is provided only to reproduce the tests on an old Linux kernel, that cannot be compiled with newer versions. See the page for that example for further instructions.
If you download the source distribution, follow the standard gcc
installation procedure (see the gcc site for more help).
To install the precompiled checking compiler, unpack the downloaded (binary) archive in a directory $MYGCC of your choice. You are now ready to run your first checking example:
mygcc/1.0.1/bin/gcc --tree-checks=ex/ex1.chk ex/ex1.c
mygcc/1.0.1/bin/g++ --tree-checks=ex/ex2.chk ex/ex2.C