scispace - formally typeset
Open AccessProceedings ArticleDOI

LLVM: a compilation framework for lifelong program analysis & transformation

Reads0
Chats0
TLDR
The design of the LLVM representation and compiler framework is evaluated in three ways: the size and effectiveness of the representation, including the type information it provides; compiler performance for several interprocedural problems; and illustrative examples of the benefits LLVM provides for several challenging compiler problems.
Abstract
We describe LLVM (low level virtual machine), a compiler framework designed to support transparent, lifelong program analysis and transformation for arbitrary programs, by providing high-level information to compiler transformations at compile-time, link-time, run-time, and in idle time between runs. LLVM defines a common, low-level code representation in static single assignment (SSA) form, with several novel features: a simple, language-independent type-system that exposes the primitives commonly used to implement high-level language features; an instruction for typed address arithmetic; and a simple mechanism that can be used to implement the exception handling features of high-level languages (and setjmp/longjmp in C) uniformly and efficiently. The LLVM compiler framework and code representation together provide a combination of key capabilities that are important for practical, lifelong analysis and transformation of programs. To our knowledge, no existing compilation approach provides all these capabilities. We describe the design of the LLVM representation and compiler framework, and evaluate the design in three ways: (a) the size and effectiveness of the representation, including the type information it provides; (b) compiler performance for several interprocedural problems; and (c) illustrative examples of the benefits LLVM provides for several challenging compiler problems.

read more

Content maybe subject to copyright    Report

Citations
More filters
Journal ArticleDOI

Julia: A Fresh Approach to Numerical Computing

TL;DR: The Julia programming language as mentioned in this paper combines expertise from the diverse fields of computer science and computational science to create a new approach to numerical computing, which is designed to be easy and fast and questions notions generally held to be “laws of nature" by practitioners of numerical computing.
Proceedings ArticleDOI

KLEE: unassisted and automatic generation of high-coverage tests for complex systems programs

TL;DR: A new symbolic execution tool, KLEE, capable of automatically generating tests that achieve high coverage on a diverse set of complex and environmentally-intensive programs, and significantly beat the coverage of the developers' own hand-written test suite is presented.
Journal ArticleDOI

CasADi: a software framework for nonlinear optimization and optimal control

TL;DR: This article gives an up-to-date and accessible introduction to the CasADi framework, which has undergone numerous design improvements over the last 7 years.
References
More filters
Book

The Java Virtual Machine Specification

Tim Lindholm, +1 more
TL;DR: In this article, the authors present a detailed overview of the Java Virtual Machine, including the internal structure of the class file format, the internal form of Fully Qualified Class and Interface names, and the implementation of new class instances.
Journal ArticleDOI

Efficiently computing static single assignment form and the control dependence graph

TL;DR: In this article, the authors present new algorithms that efficiently compute static single assignment forms and control dependence graphs for arbitrary control flow graphs using the concept of {\em dominance frontiers} and give analytical and experimental evidence that these data structures are usually linear in the size of the original program.
Proceedings ArticleDOI

Self: The power of simplicity

TL;DR: Because Self does not distinguish state from behavior, it narrows the gaps between ordinary objects, procedures, and closures and offers new insights into object-oriented computation.
Journal ArticleDOI

Dynamo: a transparent dynamic optimization system

TL;DR: The design and implementation of Dynamo, a software dynamic optimization system that is capable of transparently improving the performance of a native instruction stream as it executes on the processor, are described and evaluated.
Proceedings ArticleDOI

Efficient implementation of the smalltalk-80 system

TL;DR: The most significant optimization techniques developed over the course of the Smalltalk-80 programming system are discussed, many of which are applicable to other languages.
Related Papers (5)
Trending Questions (1)
Which programming languages are supported best by LLMS?

LLVM supports various programming languages by providing a low-level representation that captures high-level operational behavior effectively, including features like complex numbers, structures, unions, and more.