This is the ACCEPT approximate compiler project from the University of Washington.
The project's documentation includes instructions for building the tool and using it to optimize approximate programs.
This repository includes lots of stuff:
bin/
: Helpful scripts for developing EnerC as well as the front-end
scripts enerclang
and enerclang++
, which act as C and C++ compiler
executables.clang/
: This git subrepository contains our version of Clang, which is
hacked to support type qualifiers. After running fetch_llvm.sh
, there will
be a symlink to this directory at llvm/tools/clang
.checker/
: The Clang plugin that checks the EnerC type system and
emits annotated LLVM bitcode.checkerlib/
: This small library supports the writing of modular type
checkers for Clang like the one above.pass/
: The LLVM compiler pass that analyzes annotated bitcode and
performs instrumentation/transformation.include/
: A header file that EnerC programs should use (via
#include <enerc.h>
) to get the necessary type qualifiers and
endorsement macros. This directory is automatically added as an
include directory when you run the enerclang
script.rt/
: A runtime library that is linked into EnerC programs for
dynamic analysis.test/
: Some tests for the frontend (type errors and bitcode
emission). This uses LLVM's LIT testing infrastructure. To run the
tests, just type ./bin/runtests.sh
.accept/
: The high-level profile-guided feedback loop used to drive a full
compilation. This Python package also scripts the experiments that generate
the results used in the (eventual) paper.docs/
: The Markdown-formatted documentation. This can be built with the
MkDocs tool.The documentation can be translated into a nice HTML representation using MkDocs. Install it and the SmartyPants Markdown extension with:
$ pip install mkdocs
$ pip install mdx_smartypants
To view the docs locally, type mkdocs serve
and go to the indicated URL.
If you have the appropriate permissions, type make deploydocs
to upload the HTML files to our servers.
ACCEPT is a project of the Sampa group at UW CSE. It was written by Adrian Sampson, Ben Ransford, Andre Baixo, Thierry Moreau, and Joshua Yip. The project is advised by Luis Ceze and Mark Oskin. The code is made available under the MIT license.