List of C Compilers


Reading time: 20 minutes

There are over 50 compilers for C like ICC by Intel to GNU GCC by GNU Project. The focus of having multiple compilers is to optimize the compiled C code for specific hardware and software environments. This has lead to a vast number of compilers but some have been abandoned in the path.

Some compilers were developed in 1980s (GNU GCC) while the recent ones are from 2017 (AOCC).

Some compilers like LabWindows are used by a specific and small group of developers. At the same time, there are compilers like GNU GCC and ICC that are widely used till date.

Following is the ultimate list of C compilers that found some users:

Compiler Release Developer In Wide Use Users
pccm 1973 Bell Labs No General
BSD C 1979 Zolman No BSD Unix
Aztec C 1980 Manx Software Systems No DOS
ACK 1980 Tanenbaum, Jacobs Yes NetBSD
Lattice C 1982 Steve Krueger No DOS
MPW 1986 Apple No Early Mac
GCC 1987 GNU Project Yes General
Turbo C 1987 Turbo No Turbo IDE
Megamax C 1988 Megamax, Inc No Atari + Mac
Acorn C 1988 Acorn Yes RISC OS
LabWindows 1989 National Instruments Yes NIC
QuickC 1990 Microsoft No DOS
Oracle C 1991 Oracle Yes Oracle Developer Studio
MinGW 1993 Peters Yes Windows
MSVC 1993 Microsoft Yes Visual IDE
CodeWarrior 1993 Metrowerks No Motorola 68K
LCC 1994 Dave Hanson, Chris Fraser No MathWorks
cc65 1999 Bassewitz Yes Old 6502 systems
Open64 2002 Open64 dev Yes Itanium, x86-64
ICC 2003 Intel Yes Intel Systems
Watcom C 2003 Watcom Yes General + Novell
PathScale 2003 PathScale No MIPS
FPGA C 2005 Bass Yes FPGA
TCC 2005 Fabrice Bellard Yes Various libraries
CLang 2007 LLVM Developers Yes General
XL C 2007 IBM No IBM systems
HP-C 2012 HP No HP systems
AOCC 2017 AMD Yes AMD systems

Beyond this, there are several other compilers that were not used by a significant number of users and originated from several sources like:

  • University research projects
  • Backed by companies but failed to get users
  • Experimental projects by a small group of developers

Why did some compilers go out of use?


One notable example is PCCM. It was widely used at a time as a general compiler but will the entry of better compilers like GCC, users moved from it.

Sometimes, backing companies are dissolved which results in downfall of the compilers like PathScale.

Why we need multiple compilers?


We need multiple compilers because:

  • Instruction set that is optimized for a particular hardware systerm varies.
  • Operating systems plays to significant role in execution.

Hence, a compiler can be optimized for:

  • a particular Hardware system
  • a particular Operating System
  • Particular system load like distributed, real time and others.