Does the GCC compiler still have a future?
I doubt that the Gnu Compiler Collection (GCC) will go away any time soon. But it is notable that the 25-year old open-source initiative is facing some competition and rivalry – most notably from LLVM. LLVM is an open-source initiative similar to GCC but one that is favored and pushed by the significant force that is Apple.
The Free Software Foundation distributes GCC under the GNU General Public License. This is a license for royalty-free general use but requires that derived works can only be distributed under the same license terms.
GCC, which originally stood for Gnu C Compiler – because only the C software programming language was supported – has played an important role in the growth of free software and as a first port of call for those wishing to add compiler support to hardware. It therefore plays a significant role in embedded development and the world of microcontrollers.
But all things have their season and it may be that GCC's significance will now begin to reduce over time. Or it may respond to competitive pressure being brought to bear by LLVM.
One reference point I can give you is XMOS Ltd. (Bristol, England), a developer of event-driven, low latency multicore processors. XMOS has recently started to reposition the company as a high-end microcontroller company. There's been no significant change in the hardware it sells as yet but the company recently reworked its entire line of development tools and moved them from GCC to LLVM.
The XMOS move reportedly produced improvements in compile time of about 40 percent, in run-time performance of about 60 percent, and reduced code size by 17 percent, over the previous GCC-based compiler.
LLVM used to stand for low-level virtual machine but now has little to do with traditional virtual machines, although it does support runtime as well as static compilation. LLVM began as a research project at the University of Illinois Urbana–Champaign, under the direction of Vikram Adve and Chris Lattner with the goal of providing a three-phase compiler strategy capable of supporting both static and dynamic compilation of arbitrary programming languages.
To read more on this topic, go to “Static versus multiphase compilation,” To read more about compilers, go to "The care and feeding of compilers."