PrincetonUniversity / SCAF

Licence: MIT license
A Speculation-Aware Collaborative Dependence Analysis Framework

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to SCAF

Clang Power Tools
Bringing clang-tidy magic to Visual Studio C++ developers.
Stars: ✭ 285 (+1040%)
Mutual labels:  llvm, static-analysis
Domtresat
Dominator Tree LLVM Pass to Test Satisfiability
Stars: ✭ 42 (+68%)
Mutual labels:  llvm, static-analysis
Clangkit
ClangKit provides an Objective-C frontend to LibClang. Source tokenization, diagnostics and fix-its are actually implemented.
Stars: ✭ 330 (+1220%)
Mutual labels:  llvm, static-analysis
clam
Static Analyzer for LLVM bitcode based on Abstract Interpretation
Stars: ✭ 180 (+620%)
Mutual labels:  llvm, static-analysis
Codechecker
CodeChecker is an analyzer tooling, defect database and viewer extension for the Clang Static Analyzer and Clang Tidy
Stars: ✭ 1,209 (+4736%)
Mutual labels:  llvm, static-analysis
progge.rs
Program analysis playground for a simple, imperative language
Stars: ✭ 29 (+16%)
Mutual labels:  llvm, static-analysis
Svf
Static Value-Flow Analysis Framework for Source Code
Stars: ✭ 540 (+2060%)
Mutual labels:  llvm, static-analysis
Phasar
A LLVM-based static analysis framework.
Stars: ✭ 503 (+1912%)
Mutual labels:  llvm, static-analysis
Dg
[LLVM Static Slicer] Various program analyses, construction of dependence graphs and program slicing of LLVM bitcode.
Stars: ✭ 242 (+868%)
Mutual labels:  llvm, static-analysis
Cxxctp
DEPRECATED. USE INSTEAD github.com/blockspacer/flextool
Stars: ✭ 58 (+132%)
Mutual labels:  llvm, static-analysis
OCCAM
OCCAM: Object Culling and Concretization for Assurance Maximization
Stars: ✭ 20 (-20%)
Mutual labels:  llvm, static-analysis
Crab Llvm
Static Analyzer for LLVM bitcode based on Abstract Interpretation
Stars: ✭ 143 (+472%)
Mutual labels:  llvm, static-analysis
flextool
C++ compile-time programming (serialization, reflection, code modification, enum to string, better enum, enum to json, extend or parse language, etc.)
Stars: ✭ 32 (+28%)
Mutual labels:  llvm, static-analysis
Seahorn
SeaHorn Verification Framework
Stars: ✭ 270 (+980%)
Mutual labels:  llvm, static-analysis
Stoat
STatic (LLVM) Object file Analysis Tool
Stars: ✭ 44 (+76%)
Mutual labels:  llvm, static-analysis
Sea Dsa
A new context, field, and array-sensitive heap analysis for LLVM bitcode based on DSA.
Stars: ✭ 90 (+260%)
Mutual labels:  llvm, static-analysis
Sys
Sys: A Static/Symbolic Tool for Finding Good Bugs in Good (Browser) Code
Stars: ✭ 149 (+496%)
Mutual labels:  llvm, static-analysis
Llvm Ir Tutorial
LLVM IR入门指南
Stars: ✭ 232 (+828%)
Mutual labels:  llvm
sbt-instrumentation
Configurable instrumentation of LLVM bitcode
Stars: ✭ 31 (+24%)
Mutual labels:  llvm
Ts Llvm
TypeScript to LLVM compiler (abandoned)
Stars: ✭ 230 (+820%)
Mutual labels:  llvm

SCAF: A Speculation-Aware Collaborative Dependence Analysis Framework

SCAF is an innovative dependence analysis framework that combines in a modular fashion memory analyses and (optionally) speculative assertions.

Notice

The full implementation of SCAF is not yet integrated in this repository. All the currectly available memory analysis modules are included, but the speculation modules along with a few other components (e.g., profilers) are currently part of another repository (https://github.com/PrincetonUniversity/cpf).

Publications

The novelty, design, implementation, and evaluation of this work is described in the PLDI '20 paper by Apostolakis et al. titled "SCAF: A Speculation-Aware Dependence Analysis Framework" (ACM DL, PDF, Talk, Abstract).

To reproduce the evaluation results presented in the PLDI 2020 paper, please refer to the artifact of the paper: DOI

This work builds upon CAF (CGO '17 by Johnson et al., ACM DL).

If you use SCAF in a publication, we would appreciate a citation to the PLDI '20 paper:

@inproceedings{apostolakis:2020:pldi,
author = {Apostolakis, Sotiris and Xu, Ziyang and Tan, Zujun and Chan, Greg and Campanoni, Simone and August, David I.},
title = {SCAF: A Speculation-Aware Collaborative Dependence Analysis Framework},
year = {2020},
isbn = {9781450376136},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3385412.3386028},
doi = {10.1145/3385412.3386028},
booktitle = {Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation},
pages = {638–654},
numpages = {17},
keywords = {collaboration, dependence analysis, speculation},
location = {London, UK},
series = {PLDI 2020}
}

Version Numbering Scheme

The version number is in the form of [v Major.Minor.Revision ]

  • Major: Each major version matches a specific LLVM version (e.g., version 9 matches LLVM 9, version 11 matches LLVM 11)
  • Minor: Starts from 0, each minor version represents either one or more API replacements/removals that might impact the users OR a forced update every six months (the minimum minor update frequency)
  • Revision: Starts from 0; each revision version may include bug fixes or incremental improvements

Update Frequency

  • Major: Matches the LLVM releases on a best-effort basis
  • Minor: At least once per six months, at most once per month (1/month ~ 2/year)
  • Revision: At least once per month, at most twice per week (2/week ~ 1/month)

Prerequisites

LLVM 9.0.1

Build SCAF

To build and install SCAF, run from the repository root directory: make

Run make clean from the root directory to clean the repository.

Run make uninstall from the root directory to uninstall SCAF.

Configuration

SCAF is customizable and can be used as a conservative memory analysis if the speculation modules are disabled.

Users

If you have any trouble using this framework feel free to create an issue! We will try our best to help.

Contributions

We welcome contributions from the community to improve this framework and evolve it to cater for more users.

License

SCAF is licensed under the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].