Search results
Results from the WOW.Com Content Network
The AMD Optimizing C/C++ Compiler (AOCC) is an optimizing C/C++ and Fortran compiler suite from AMD targeting 32-bit and 64-bit Linux platforms. [1] [2] It is a proprietary fork of LLVM + Clang with various additional patches to improve performance for AMD's Zen microarchitecture in Epyc, and Ryzen microprocessors.
LLVM can accept the IR from the GNU Compiler Collection (GCC) toolchain, allowing it to be used with a wide array of extant compiler front-ends written for that project. LLVM can also be built with gcc after version 7.5. [37] LLVM can also generate relocatable machine code at compile-time or link-time or even binary machine code at runtime.
The LLVM project originally intended to use GCC's front end. The GCC source code, however, is large and somewhat cumbersome; as one long-time GCC developer put it referring to LLVM, "Trying to make the hippo dance is not really a lot of fun". [18] Besides, Apple software uses Objective-C, which is a low priority for GCC developers.
This is a severe performance bottleneck on certain applications such as scientific code. Bounds-checking elimination allows the compiler to safely remove bounds checking in many situations where it can determine that the index must fall within valid bounds; for example, if it is a simple loop variable.
[2] [3] Unlike compiler backends such as LLVM that focus more on ahead-of-time compilation, Cranelift instead focuses on just-in-time compilation with short compile time being an explicit goal of the project. [4] As of 2023, Cranelift supports instruction set architectures such as x86-64, AArch64, RISC-V, and IBM z/Architecture.
Whole program optimization (WPO) is the compiler optimization of a program using information about all the modules in the program. Normally, optimizations are performed on a per module, "compiland", basis; but this approach, while easier to write and test and less demanding of resources during the compilation itself, does not allow certainty about the safety of a number of optimizations such ...
Like GCC, LLVM also targets some IRs meant for direct distribution, including Google's PNaCl IR and SPIR. A further development within LLVM is the use of Multi-Level Intermediate Representation ( MLIR ) with the potential to generate code for different heterogeneous targets, and to combine the outputs of different compilers.
AOT compilers can perform complex and advanced code optimizations which in most cases of JITing will be considered much too costly. In contrast, AOT usually cannot perform some optimizations possible in JIT like runtime profile-guided optimization (PGO), pseudo-constant propagation, or indirect-virtual function inlining.