Nils Weller's C compiler

applications

This page begins with a table of popular open-source applications which can be compiled correctly with nwcc.

The table lists results from the most up-to-date version using the most favorable environment. For example, Mac OS X/x86 support is much worse than Linux/x86 support, but I do most software compatibility testing on Linux/x86. Also, the software version number isn't listed; Not all versions may work with nwcc.

Note that "second-tier" architectures such as PowerPC and SPARC haven't received a lot of testing yet. Some of the programs listed below (such as gzip and less) have been tested and found to be working on all of them at some point. However, a full test run with the current version is missing and will be done later.

The status of an application is distinguished as follows:

It is important to keep in mind that the absence of runtime errors is never guaranteed. I've tried many of the compilable applications superficially without finding bugs, but there may well be bugs in code paths that weren't covered by my tests.


Applications


Version x86 AMD64 SPARC MIPS PPC
gcc Yes ? ? ? ?
PHP Yes ? ? ? ?
Apache Yes ? ? ? ?
PostgreSQL Yes ? ? ? ?
tar Yes ? ? ? ?
less Yes ? ? ? ?
lynx Yes ? ? ? ?
wget Yes ? ? ? ?
xterm Yes ? ? ? ?
gxemul Yes Yes ? ? ?
Python Yes ? ? ? ?
nasm Yes ? ? ? ?
strace Yes ? ? ? ?
nwcc Yes ? ? ? ?
bash Yes ? ? ? ?
lsof Yes ? ? ? ?
gawk Yes ? ? ? ?
mksh Yes ? ? ? ?
nano Yes ? ? ? ?
links Yes ? ? ? ?
gzip Yes ? ? ? ?
gmake Yes ? ? ? ?
vim Yes ? ? ? ?
gsed Yes ? ? ? ?
bison Yes ? ? ? ?
zsh Yes ? ? ? ?
lsof Yes ? ? ? ?
findutils Yes ? ? ? ?
Tcl Yes ? ? ? ?
Monkey httpd Yes ? ? ? ?

Scroll down for some test suite results for the current version.


Version history


Version x86 AMD64 SPARC MIPS PPC
0.8.3 Yes Yes ? ? ?
0.8.2 Yes Yes ? ? Yes
0.8.1 Yes Yes ? ? Yes
0.7.9 Yes Yes ? ? Yes
0.7.8 Yes Yes Yes ? Yes
0.7.7 Yes Yes Yes ? Yes
0.7.6 Yes Yes Yes ? ?
0.7.5 Yes Yes Yes ? Yes
0.7.4 Yes Yes Yes Yes Yes
0.7.3 Yes Yes Yes Yes Yes
0.7.2 Yes Yes Yes ? ?
0.7.1 Yes Yes Yes Yes Yes
0.7 Yes Yes No Yes Yes
0.6.6 Yes Yes No Yes Yes
0.6.5 Yes Yes No Yes Yes
0.6.4 Yes Yes No No Yes
0.6.3 Yes Yes No Yes Yes
0.6.2 Yes Yes No Yes No
0.6.1 Yes No No Yes No
0.6 Yes No No Yes No
0.5 Yes No No No No
0.4 Yes No No No No
0.3 Yes No No No No
0.2 Yes No No No No
0.1 Yes No No No No
0.1-pre Yes No No No No


Test suite

nwcc has always had a test suite containing various simple regression tests. Every one of those tests is composed of a single C source file, which is compiled once with nwcc and once with gcc. The output of the resulting programs is compared to determine whether the nwcc-compiled program yields the same output as the gcc-compiled one. Since gcc is very mature and proven, divergence from gcc output is considered a bug (this means that the test's output should not depend on peculiarities like exact object memory addresses, order of function argument evaluation, and outright undefined constructs).

There is another new test suite which tests some more involved things, like compiling some files with gcc and some with nwcc, and linking them together to check ABI compatibility.

The topic of this page is a much newer and bigger test suite: A modified version of the gcc test suite! I have taken all of the C files from the gcc test suite and adapted my nwcc test suite script to them (for example, many of those files do not have a main() function, and thus only test whether the code is compiled at all). This test suite has been used to find and fix many bugs, and will henceforth help measure progress on the various supported architectures.

Note that many tests of the original suite have been removed (or changed) for one reason or another. Most importantly, I have deleted all test cases making use of GNU C and C99 features that are not desirable in nwcc (at least for the time being). See the bugs page for a list of some of those features. A few tests which still yield compile time errors border on the undesirable and may be deleted in the future. Various other tests which do illegal things like dereferencing uninitialized pointers were also removed.

The test results are from Linux on x86, AMD64 and PPC64. AIX was used for PPC32. The test suite cannot be run on SPARC yet because the SPARC test system has a broken gcc installation, and Sun's compiler wouldn't handle the GNU C test files properly. MIPS test suite results could be obtained, but MIPS support is too weak to try it at this point.

Version Result x86 AMD64 SPARC MIPS PPC32 PPC64
0.8.3 Passed 1590 1590 ? ? ? ?
Runtime failure 11 8 ? ? ? ?
Compile error 33 36 ? ? ? ?
0.8.1 Passed 1587 1585 ? ? ? 1553
Runtime failure 12 12 ? ? ? 17
Compile error 35 35 ? ? ? 62
0.7.9 Passed 1587 1585 ? ? ? 1553
Runtime failure 12 12 ? ? ? 17
Compile error 35 35 ? ? ? 62
0.7.8 Passed 1581 1579 ? ? 1539 1553
Runtime failure 12 12 ? ? 23 17
Compile error 41 44 ? ? 70 62
0.7.7 Passed 1568 1566 ? ? 1518 1541
Runtime failure 13 11 ? ? 29 16
Compile error 52 57 ? ? 105 76
0.7.6 Passed 1572 1566 ? ? ? ?
Runtime failure 11 10 ? ? ? ?
Compile error 52 57 ? ? ? ?
0.7.5 Passed 1438 ? ? ? ? ?
Runtime failure 134 ? ? ? ? ?
Compile error 63 ? ? ? ? ?
0.7.4 Passed 1431 ? ? ? ? ?
Runtime failure 139 ? ? ? ? ?
Compile error 65 ? ? ? ? ?
0.7.3 Passed 1345 ? ? ? ? ?
Runtime failure 215 ? ? ? ? ?
Compile error 75 ? ? ? ? ?
nwcc © Nils Weller 2003 - 2011 Valid XHTML 1.0 Strict SourceForge Logo