awesome-llvm
A curated list of awesome LLVM (including Clang, etc) related resources.
https://github.com/learn-llvm/awesome-llvm
Last synced: 20 days ago
JSON representation
Starchart
- references
- its doxygen docs
- discourse forum
- llvm-commits archives
- llvm-bugs archives
- Open Projects
- An Unofficial LLVM Website
- LLVM @ reddit
- GitHub LLVM topic
- LLVM documentation in hdoc
- Using the New Pass Manager - LLVM's new pass manager for optimization (both CLI and API changed)
- LLVM Remarks - emit diagnostics describing whether an optimization is performed/missed
- Tools for Learning LLVM TableGen - tutorial by David Spickett about LLVM's TableGen
- LLVM @ Google Scholar
- Learn LLVM 12 - good to start with
- Getting Started with LLVM Core Libraries
- LLVM Cookbook
- LLVM Techniques, Tips, and Best Practices Clang and Middle-End Libraries
- Engineering LLVM Backend
- Core C++ 2021 :: opt-viewer: Inspecting compiler optimizations in high-level code
- LLVM Optimization Remarks - Ofek Shilon - CppCon 2022
-
lli
- Directly execute/intepreter programs from LLVM bitcode, running on
.llor.bcfiles -
llvm-readelf
- LLVM's readelf,
llvm-readelf -a main.o - libc++ - LLVM's implementation of C++ standard library
- libc++abi - LLVM's C++ ABI library that provides an implementation of the library portion of the Itanium C++ ABI
- Compiler-RT - runtime libraries, including sanitizers, profiling utilities, etc
- MLIR - Multi-Level Intermediate Representation
- Sparsifier - Google MLIR sparsifier
- intel/mlir-extensions - Intel® Extension for MLIR
- libfuzzer - a library for coverage-guided fuzz testing
- LLD - LLVM's integrated linker, similar to GNU ld and gold linker
- LLVM Gold Linker plugin
- GDB to LLDB command map
- LLVM's libunwind - an implementation of the interface defined by the HP libunwind project
- OpenMP in LLVM
- LLVM OpenMP @ discourse
- OpenCL C in LLVM - open source, BSD/MIT dual licensed implementation of the library requirements of the OpenCL C programming language
- BOLT - a post-link optimizer developed to speed up large applications
- Infer - Facebook's static analysis framework; C/C++/objc is based on LLVM/Clang
- ollvm - code obfuscation based on LLVM4.0
- S2E - Selective Symbolic Execution (use KLEE as symbolic executor)
- here
- LLVM Rust crates - Rust bindings
- GHC Haskell
- Julia
- Crystal
- mojo
- static-analysis - A curated list of static analysis tools and linters for all programming languages, config files, build tools, and more
- program analysis topics on GitHub
- awesome lists on GitHub
- List of tools for static code analysis (on Wikipedia)
- llvm-mca - LLVM Machine Code Analyzer
- ChenWj's LLVM Wiki
- A Gentle Introduction to LLVM IR
- Opaque Pointers - Opaque pointer that was introduced in LLVM14 and fully deprecates typed pointers in LLVM17
- MLIR Workshop @ EuroLLVM 2024 - topics with slides available, also notes about MLIR at round table
- Working with MLIR
- Python Version of the LLVM Tutorial
- PSA: Instruction-constructors changing to iterator-only insertion - VSCode LLVM Compiler Explorer
- Tutorial: Creating an LLVM Backend for the Cpu0 Architecture
- LLVM-Tutor - A collection of out-of-tree LLVM passes for teaching and learning
- learning-llvm - a project for learning about llvm
- srg-llvm-pass-tutorial - A tutorial about llvm passes from Software reliability group
- Get Started with the LLVM C API
- lahiri-phdworks/LLVM-Examples - LLVM Repository and Code samples. LLVM Passes and quick bytes.
- wuzhanglin/llvm-IR-examples - Some examples for using LLVM to generate IR
- llvm-ir-tutorial
- LLVM @ ACM-DL
- LLVM @ IEEEXplore
- llvm/Torch-LLVM - first class support from the PyTorch ecosystem to the MLIR ecosystem
- llvm/Polygeist - C/C++ frontend for MLIR
- j2kun/mlir-tutorial - a series of articles on the MLIR framework for building compilers
- Lewuathe/mlir-hello - minimal Hello-World example of MLIR
- melior - The rustic MLIR bindings in Rust; see also introduction blog post
- zincnode/mlir-he - standalone-template](https://github.com/jmgorius/mlir-standalone-template), Lewuathe/mlir-hello
- SVF-tools - Pointer Analysis and Program Dependence Analysis for C and C++ Programs
- smack - SMACK Software Verifier and Verification Toolchain
- Phasar - A LLVM-based static analysis framework
- mstorsjo/llvm-mingw - An LLVM/Clang/LLD based mingw-w64 toolchain
- microsoft/llvm-mctoll - statically (AOT) translates (or raises) binaries to LLVM IR
- whole-program-llvm - A wrapper script to build whole-program LLVM bitcode files; its go port gllvm
- RetDec - a retargetable machine-code decompiler based on LLVM
- capstone - Disassembler based on the MC component of the LLVM compiler infrastructure
- cling - The cling C++ interpreter (1.0 has been released)
- remill - Library for lifting machine code to LLVM bitcode
- llvm2cpg - LLVM meets Code Property Graphs
- QBDI - A Dynamic Binary Instrumentation framework based on LLVM
- circt - Circuit IR Compilers and Tools
- klee - Symbolic Virtual Machine
- IKOS - Static analyzer for C/C++ based on the theory of Abstract Interpretation.
- GaloisInc/yapall - A precise and scalable pointer analysis for LLVM, written in Ascent
- google/souper - A superoptimizer for LLVM IR
- llvm2c - Decompiler of LLVM bitcode to C
- dr checker - A Soundy Vulnerability Detection Tool for Linux Kernel Drivers
- DG - Various program analyses, construction of dependence graphs and program slicing of LLVM bitcode
- llvm-crash-analyzer - crash analysis against coredump files based on LLVM Machine-IR, together with LLDB
- seahorn/clam - a static analyzer (CLI) based on seahorn/crab, the latter of which is abstract Interpretation-based library
- llvm-pass-skeleton - example LLVM pass
- llvmlite - A lightweight LLVM python binding for writing JIT compilers
- go-llvm - Go binding
- Swift
- scala-native
- ldc
- codon
- numba
- Ola - a toy language, for learning LLVM-backend codegen
- go-llvm
- awesome-llvm-security - awesome llvm security projects
- dynamic-analysis - A curated list of dynamic analysis tools and linters for all programming languages, binaries, and more
- LLVM-Guide
- LLVM @ DBLP
- DWGrep - A tool for querying Dwarf (debuginfo) graphs
- LLVM Essentials
- solang
- ELLCC - Online LLVM Demo Page~~
- Emscripten - An LLVM-to-JavaScript Compiler
- American fuzzy lop (AFL) - LLVM mode for instrumentation
- Learn LLVM 17
- LLVM Tutorial Walkthrough - Toby Ho's tutorial
- LLVM @ StackOverflow
- Star History Chart
- LLVMProj @ YouTube - official account, including LLVM devmeeting, EuroLLVM, etc
- LLVM Community events calendar
- LLVM Style RTTI
- Create A Project
- A Tour of ADT - the LLVM Developer's Toolbox
- Introduction to the Low-Level Virtual Machine (LLVM) - UFMG's Compilers Lab's tutorial
- Understanding Compiler Optimization - Chandler Carruth's Opening Keynote Meeting C++ 2015
- reference
-
opt
- LLVM optimizer, for LLVM analysis and transformation passes, works on
.llor.bcfiles -
llvm-dis
- LLVM disassembler, from
.bcto.ll -
llvm-as
- LLVM assembler, from
.llto.bc -
llvm-link
- LLVM bitcode linker, merge multiple
.bcs/.lls into one -
llvm-dwarfdump
- Print contents of DWARF sections,
llvm-dwarfdump -a main.o -
llvm-config
- Print LLVM compilation options, e.g.,
llvm-config --includedir - llvm-extract - Extract functions from an LLVM module
-
llvm-bcanalyzer
- LLVM bitcode analyzer,
llvm-bcanalyzer main.bc -
llvm-objdump
- LLVM's objdump,
llvm-objdump -a main.o - llvm-nm - LLVM's nm
-
llvm-readobj
- LLVM object reader,
llvm-readobj --all main.o - llvm-diff - LLVM structural "diff"
-
llc
- LLVM static compiler, compile LLVM IR to native assembly,
llc main.ll -o main.s - llvm-ar - ranlib) - LLVM archiver
- lit - LLVM Integrated Tester, for testing purpose during development
- MLIR News - MLIR News issue on discourse
- MLIR Is Not an ML Compiler, and Other Common Misconceptions
- Polly - LLVM Framework for High-Level Loop and Data-Locality Optimizations
- reference
- diffkemp - Static analysis of semantic differences in kernel versionsa
- LLVM Debian/Ubuntu nightly packages - Debian APT sources