⚙️

Classical Compilers

Production implementations of compiler algorithms and techniques

Repositories

(7)

dotnet/runtime

10 papers

gcc-mirror/gcc

14 papers

golang/go

13 papers

llvm/llvm-project

29 papers

openjdk/jdk

16 papers

rust-lang/rust

20 papers

swiftlang/swift

11 papers

Papers

(100)
Showing 20 of 100 papers

Accurate garbage collection in an uncooperative environment.

Fergus Henderson
2002
1 reference

Previous attempts at garbage collection in uncooperative environments have generally used conservative or mostly-conservative approaches. We describe a technique for doing fully type-accurate garbage collection in an uncooperative environment, using ...

An abstract interpretation for SPMD divergence on reducible control flow graphs

Julian Rosemann, Simon Moll, Sebastian Hack
2021
1 reference

Vectorizing compilers employ divergence analysis to detect at which program point a specific variable is uniform, i.e. has the same value on all SPMD threads that execute this program point. They exploit uniformity to retain branching to counter bran...

Deep Residual Learning for Image Recognition

Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun
2015
9 references

Deeper neural networks are more difficult to train. We present a residual learning framework to ease the training of networks that are substantially deeper than those used previously. We explicitly reformulate the layers as learning residual function...

Demystifying Differentiable Programming: Shift/Reset the Penultimate Backpropagator

Fei Wang, Daniel Zheng, James Decker, Xilun Wu, Grégory M. Essertel, Tiark Rompf
2018
1 reference

Deep learning has seen tremendous success over the past decade in computer vision, machine translation, and gameplay. This success rests in crucial ways on gradient-descent optimization and the ability to learn parameters of a neural network by backp...

Dependence Graphs and Compiler Optimizations.

David J. Kuck, Robert H. Kuhn, David Padua, Bruce Leasure, Michael Wolfe
1981
1 reference

Dependence graphs can be used as a vehicle for formulating and implementing compiler optimizations. This paper defines such graphs and discusses two kinds of transformations. The first are simple rewriting transformations that remove dependence arcs....

Efficient Implementation of Lattice Operations.

Hassan Aı̈t-Kaci, Robert S. Boyer, Patrick Lincoln, Roger Nasr
1989
1 reference

Lattice operations such as greatest lower bound (GLB), least upper bound (LUB), and relative complementation (BUTNOT) are becoming more and more important in programming languages supporting object inheritance. We present a general technique for the ...

Fast and scalable minimal perfect hashing for massive key sets

Antoine Limasset, Guillaume Rizk, Rayan Chikhi, Pierre Peterlongo
2017
1 reference

Minimal perfect hash functions provide space-efficient and collision-free hashing on static sets. Existing algorithms and implementations that build such functions have practical limitations on the number of input elements they can process, due to hi...

Fast Random Integer Generation in an Interval

Daniel Lemire
2018
4 references

In simulations, probabilistic algorithms and statistical tests, we often generate random integers in an interval (e.g., [0,s)). For example, random integers in an interval are essential to the Fisher-Yates random shuffle. Consequently, popular langua...

Fast splittable pseudorandom number generators

G. Steele, D. Lea, Christine H. Flood
2014
2 references

We describe a new algorithm SplitMix for an object-oriented and splittable pseudorandom number generator (PRNG) that is quite fast: 9 64-bit arithmetic/logical operations per 64 bits generated. A conventional linear PRNG object provides a generate me...

GPU Accelerated Automatic Differentiation With Clad

Ioana Ifrim, Vassil M. Vassilev, D. J. Lange
2022
1 reference

Automatic Differentiation (AD) is instrumental for science and industry. It is a tool to evaluate the derivative of a function specified through a computer program. The range of AD application domain spans from Machine Learning to Robotics to High En...

IR2VEC

S. VenkataKeerthy, Rohit Aggarwal, Shalini Jain, M. Desarkar, Ramakrishna Upadrasta, Y. Srikant
2020
4 references

We propose IR2VEC, a Concise and Scalable encoding infrastructure to represent programs as a distributed embedding in continuous space. This distributed embedding is obtained by combining representation learning methods with flow information to captu...

Memory Tagging and how it improves C/C++ memory safety

Youren Shen, Yu Chen, Kang Chen, Hongliang Tian, Shoumeng Yan
2018
2 references

Memory safety in C and C++ remains largely unresolved. A technique usually called "memory tagging" may dramatically improve the situation if implemented in hardware with reasonable overhead. This paper describes two existing implementations of memory...

Printing floating-point numbers: a faster, always correct method

Marc Andrysco, Ranjit Jhala, Sorin Lerner
2016
1 reference

Floating-point numbers are an essential part of modern software, recently gaining particular prominence on the web as the exclusive numeric format of Javascript. To use floating-point numbers, we require a way to convert binary machine representation...

Printing floating-point numbers quickly and accurately with integers

Florian Loitsch
2010
1 reference

We present algorithms for accurately converting floating-point numbers to decimal representation. They are fast (up to 4 times faster than commonly used algorithms that use high-precision integers) and correct: any printed number will evaluate to the...

RL4ReAl: Reinforcement Learning for Register Allocation

Shalini Jain, Yashas Andaluri, S. VenkataKeerthy, Ramakrishna Upadrasta
2022
4 references

We aim to automate decades of research and experience in register allocation, leveraging machine learning. We tackle this problem by embedding a multi-agent reinforcement learning algorithm within LLVM, training it with the state of the art technique...

String-rewriting systems

Ronald V. Book, Friedrich Otto
1993
1 reference

In this chapter we introduce the string-rewriting systems and study their basic properties. Such systems are the primary subject of this work. We provide formal definitions of string-rewriting systems and their induced reduction relations and Thue co...

The program dependence graph and its use in optimization

Jeanne Ferrante, Karl J. Ottenstein, Joe Warren
1987
1 reference

In this paper we present an intermediate program representation, called the program dependence graph ( PDG ), that makes explicit both the data and control dependences for each operation in a program. Data dependences have been used to represent only...

The simple essence of automatic differentiation

Conal Elliott
2018
1 reference

Automatic differentiation (AD) in reverse mode (RAD) is a central component of deep learning and other uses of large-scale optimization. Commonly used RAD algorithms such as backpropagation, however, are complex and stateful, hindering deep understan...