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

DragonEgg 3.0 Puts GCC & LLVM In One Bed

Michael Larabel

Published on 5 December 2011
Written by Michael Larabel
Page 1 of 5 - 11 Comments

LLVM 3.0 was released last week as a major update to this increasingly popular open-source compiler infrastructure. With the release of LLVM 3.0 proper also came major updates to the Clang C/C++ compiler front-end and the DragonEgg GCC plug-in (here are the exciting LLVM3 changes). In this article is a look at DragonEgg for LLVM 3.0 that plugs into GCC to replace its optimizers and code generators with those from LLVM.

The DragonEgg plug-in is not new to LLVM 3.0, but it has been around for quite a while. The DragonEgg plug-in has matured a lot in the past year and is in rather great shape for LLVM 3.0. Last November was when I published the first DragonEgg benchmarks and compared the performance to that of native GCC, LLVM-GCC, and Clang.

With the LLVM 3.0 release, DragonEgg succeeds LLVM-GCC, which was the modified version of the GNU Compiler Collection that used various Low-Level Virtual Machine components internally. With GCC's plug-in support on newer versions of the Free Software Foundation compiler, much of this can be moved to a plug-in that works on an unmodified version of GCC. This makes it easier to switch between a vanilla GCC and that with the LLVM generators/optimizers, is easier to maintain, allows using the latest GCC releases, etc. LLVM-GCC was also using the GCC 4.2 code-base due to licensing differences. Previous versions of DragonEgg did require a small patch to LLVM itself, but now the new version of DragonEgg will work with vanilla versions of GCC 4.5/4.6 and future releases.

DragonEgg with GCC can be useful in cases where LLVM's Clang native C/C++ front-end does not correctly compile the target software, there is other software dependence on GCC, or wishing to compile a language that currently doesn't have a native compiler front-end to LLVM. DragonEgg is currently targeted for x86 and x86_64 architectures. The languages fully supported by the GCC-with-LLVM plug-in include C, C++, ADA, and Fortran. There is also partial DragonEgg support for the Java, Go, Objective-C++, and Objective-C languages. Supported operating systems for using this plug-in are currently Linux, Darwin, and FreeBSD.

Besides now working with mainline GCC 4.5/4.6 with no patches, the type and constant conversion logic has been almost entirely rewritten and the "-fplugin-arg-dragonegg-enable-gcc-optzns" option is largely improved. Passing the "-fplugin-arg-dragonegg-enable-gcc-optzns" option to the compiler results in both the GCC and LLVM optimizers being used when generating binaries. This DragonEgg option is intended to deliver the "ultimate performance", but with the 3.0 release, it is still deemed experimental and in some cases is known to crash the plug-in. This compiler optimization switch will also be illustrated in today's benchmarks.

Latest Articles & Reviews
  1. Khronos Group Announces Vulkan, OpenCL 2.1, SPIR-V
  2. Samsung 850 EVO SSD Linux Benchmarks
  3. Kubuntu 15.04 Is Turning Out Quite Nice, Good Way To Try Out The Latest KDE
  4. 5-Way Linux Distribution Comparison On The Core i3 NUC
  5. OCZ ARC 100 Linux SSD Benchmarks
  6. Lenovo ThinkPad X1 Carbon Works Great As A Linux Ultrabook
Latest Linux News
  1. Samba 4.2 Brings Transparent File Compression & Clustering Support
  2. Mutter 3.15.91 Fixes Wayland Nested Compositor Mode, Pointer Constraining
  3. NVIDIA Opens Up CPU-Based PhysX Code
  4. SPIR-V In GCC Is Already Being Talked About
  5. Valve Launches SteamOS Sale, Confirms A Lot Of New Linux Games
  6. Ubuntu Cloud Switches Over To Using Systemd By Default
  7. Xfce 4.12 Might Make It For Fedora 22
  8. Pictures Of The Near Production Ready Ubuntu Tablet
  9. OpenVG Support Stripped From Gallium3D
  10. Mozilla Is Getting Excited About WebGL 2
Most Viewed News This Week
  1. More Proof That Allwinner Is Violating The GPL
  2. The Tremendous Features Of Fedora 22
  3. Krita 2.9 Released, Their Biggest Release Ever
  4. Confirmed: Vulkan Is The Next-Gen Graphics API
  5. A Single UEFI Executable With The Linux Kernel, Initrd & Command Line
  6. Xfce 4.12 Released After Nearly Three Years Of Work
  7. 8cc: A Small C11 Compiler
  8. LLVM 3.6 & Clang 3.6 Deliver More Features, Complete C++14 Support