1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Memory
  5. Motherboards
  6. Processors
  7. Software
  8. Storage
  9. Operating Systems


Facebook RSS Twitter Twitter Google Plus


Phoronix Test Suite

OpenBenchmarking.org

Talk Of GCC 5.0 To Be Modular, More Like LLVM

Compiler

Published on 19 March 2012 10:39 AM EDT
Written by Michael Larabel in Compiler
20 Comments

Last week a large discussion began among GCC developers about their hopes and plans for GCC 5.0. The common theme is for GCC 5 to be more like the increasingly-popular LLVM compiler infrastructure project.

David Malcolm, a Red Hat developer, initially forked a GCC development list thread and re-titled it to GCC 5? and laid out his views. In his lengthy message he talked about the ongoing work for moving more of the GNU Compiler Collection from being written in plain C to being in C++, the need for a proper GCC plug-in API, and moving GCC towards being a collection of libraries.

These GCC 5 libraries could then be embedded into applications easily, just like LLVM. "What I'm really hoping for from GCC is a move towards a collection of libraries that can be embedded in (license-compatible) apps: LLVM is gaining ground for the use case of programs that need JIT-compilation (e.g. the X server, or a JVM). I appreciate that JIT compilation has different characteristics to a classic ahead-of-time compiler...GCC becomes a family of shared libraries that can be dynamically and statically linked. The executables become a thin wrapper that invoke these libraries (perhaps statically linked to minimize startup costs)." Of course, those are just his views.

Malcolm also brought up some existing GCC architectural issues like lots of global state, memory management issues, no name-spacing, threading, and more. He ended up proposing a GCC API as well in his e-mail. This e-mail sparked a host of replies and then another thread: GCC 5 & modularity.

Many developers it seems are in strong support of the GNU Compiler Collection being properly modularized to the point that GCC could be released as modules. This seems to be the general theme towards GCC 5.0.

Of course, properly modularizing this aging code-base is a huge undertaking. "And making the current GCC core base modular is not easy (it might be impossible), because we cannot decide at a glance to what module a given current code should belong. An important thing if we want to go modular is to define a road-map and probably to accept the fact that, if GCC 5 is a modular GCC, is will have less functionalities, less optimizations, less power than the current GCC 4.7: we probably would have to temporarily drop some feature or power from GCC to make it modular (otherwise, that would be too gigantic an effort). I have no idea if we can do that (this is why I am sometimes pessimistic); probably most GCC contributors are paid by companies which might not afford that."

Besides the huge effort in restructuring GCC, hindering a modularized LLVM-like GCC once complete would be its license. GCC is licensed under the GNU GPLv3 and that's very unlikely to change where as LLVM/Clang is made available under the more liberally licensed under a BSD-style license. More organizations like dealing with LLVM's license than the GPLv3 with GCC and is license-compatible with more software.

GCC would also need to come forward with some strong feature-set in order for developers to re-think their usage of LLVM rather than GCC within their projects. LLVM is already widely deployed within projects from Mesa/Gallium3D, OpenCL to Mono for its JIT engine to other interesting cases like converting C/C++ to JavaScript.

Even if all the developers agree to GCC 5.0's focus on modularity, it will be a while before the release materializes. This would be a significant undertaking and right now the development focus is on GCC 4.8 with GCC 4.7 coming in a few days.

About The Author
Michael Larabel is the principal author of Phoronix.com and founded the web-site in 2004 with a focus on enriching the Linux hardware experience and being the largest web-site devoted to Linux hardware reviews, particularly for products relevant to Linux gamers and enthusiasts but also commonly reviewing servers/workstations and embedded Linux devices. Michael has written more than 10,000 articles covering the state of Linux hardware support, Linux performance, graphics hardware drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated testing software. He can be followed via and or contacted via .
Latest Linux Hardware Reviews
  1. Intel Launches The Core i7 5960X, Mighty Powerful Haswell-E CPUs
  2. AMD Radeon R9 290: Gallium3D vs. Catalyst Drivers
  3. AMD Radeon R9 290 Open-Source Driver Works, But Has A Ways To Go
  4. Trying The Configurable 45 Watt TDP With AMD's A10-7800 / A6-7400K
Latest Linux Articles
  1. The Fastest NVIDIA GPUs For Open-Source Nouveau With Steam Linux Gaming
  2. Testing For The Latest Linux Kernel Power Regression
  3. The Most Energy Efficient Radeon GPU For AMD Linux Gaming
  4. 20-Way Radeon Comparison With Open-Source Graphics For Steam On Linux Gaming
Latest Linux News
  1. Getting Involved With The New Raspberry Pi Graphics Driver
  2. A New AMD Catalyst Linux Driver Unofficially Surfaces
  3. LibreOffice Ported To 64-bit ARM (AArch64)
  4. Enlightenment E19 RC3 Shows Off The New Wayland Compositor
  5. Metro Redux Is Going To Require OpenGL 4.x On Linux
  6. Jailhouse v0.1 Released As A Basic Hypervisor For Linux
  7. Google's Chromebook "Samus" Now Supported By Coreboot
  8. Chrome 38 Now In Beta With Exciting Advancements
  9. Ubuntu's Utopic Unicorn 14.10 Beta 1 Released
  10. Genode OS 14.08 Has New GUI Architecture, Pluggable VFS
Latest Forum Discussions
  1. Catalyst 14.201.1008
  2. Btrfs Gets Talked Up, Googler Encourages You To Try Btrfs
  3. It's Now Possible To Play Netflix Natively On Linux Without Wine Plug-Ins
  4. Users defect to Linux as OpenBSD removes Lynx from base system
  5. Updated and Optimized Ubuntu Free Graphics Drivers
  6. Canonical Joined The Khronos Group To Help Mir/Wayland Drivers
  7. Radeon HD5670 and Ubuntu 14.04
  8. AMD Releases UVD Video Decode Support For R600 GPUs