Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
awesome-llvm
A curated list of awesome LLVM (including Clang, etc) related resources.
https://github.com/learn-llvm/awesome-llvm
- Star History Chart
- references
- its doxygen docs
- 2023
- discourse forum
- llvm-commits archives
- llvm-bugs archives
- LLVMProj @ YouTube - official account, including [LLVM devmeeting](http://llvm.org/devmtg/), EuroLLVM, etc
- Open Projects
- LLVM Community events calendar
- llvm-weekly
- The Architecture of Open Source Applications - LLVM
- Eli Bendersky's website
- ChenWj's LLVM Wiki
- An Unofficial LLVM Website
- LLVM @ StackOverflow
- LLVM @ reddit
- GitHub LLVM topic
- LLVM documentation in hdoc
- ELLCC - Online LLVM Demo Page~~
- reference
- LLVM Tutorials - a list of tutorials
- Python Version of the LLVM Tutorial
- LLVM Language Reference Manual - detailed docs for LLVM IR/Bitcode
- LLVM Bitcode File Format
- The Often Misunderstood GEP Instruction
- Opaque Pointers - Opaque pointer that was introduced in LLVM14 and fully deprecates typed pointers in LLVM17
- A Gentle Introduction to LLVM IR
- PSA: Instruction-constructors changing to iterator-only insertion - VSCode LLVM Compiler Explorer
- LLVM Programmer’s Manual - how to develop using LLVM infrastructure
- LLVM Coding Standards
- LLVM Developer Policy
- LLVM Style RTTI
- Source Level Debugging
- Create A Project
- Exception Handling in LLVM
- A Tour of ADT - the LLVM Developer's Toolbox
- CommandLine 2.0 Library Manual - LLVM's CLI option parser library, used by all LLVM CLI tools etc
- Getting Started with the LLVM System - LLVM project's build, configurations, directory layouts etc
- LLVM’s Analysis and Transform Passes
- Using the New Pass Manager - LLVM's new pass manager for optimization (both CLI and API changed)
- Writing an LLVM Pass
- LLVM Alias Analysis Infrastructure
- Tracing Memory Access With an LLVM Pass - a blog post details how to implement an LLVM Pass that allows for tracing memory access
- LLVM Testing Infrastructure Guide
- Writing an LLVM Backend
- LLVM Remarks - emit diagnostics describing whether an optimization is performed/missed
- LLVM FAQ - Frequently Asked Questions
- 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
- LLVM-Pass-Analysis-Collection - A Collection of LLVM Pass for Program Analysis
- srg-llvm-pass-tutorial - A tutorial about llvm passes from [Software reliability group](http://srg.doc.ic.ac.uk/)
- 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 Tutorial Walkthrough - - Toby Ho's tutorial
- 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
- Tools for Learning LLVM TableGen - tutorial by David Spickett about LLVM's [TableGen](https://github.com/llvm/llvm-project/tree/main/llvm/utils/TableGen)
- LLVM @ Google Scholar
- LLVM @ ACM-DL
- LLVM @ IEEEXplore
- LLVM @ DBLP
- Learn LLVM 12 - good to start with
- Learn LLVM 17
- Getting Started with LLVM Core Libraries
- LLVM Cookbook
- LLVM Essentials
- LLVM Techniques, Tips, and Best Practices Clang and Middle-End Libraries
- Engineering LLVM Backend
- reference
- opt - LLVM optimizer, for LLVM analysis and transformation passes, works on `.ll` or `.bc` files
- 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 `.ll` or `.bc` files
- llvm-dis - LLVM disassembler, from `.bc` to `.ll`
- llvm-as - LLVM assembler, from `.ll` to `.bc`
- llvm-link - LLVM bitcode linker, merge multiple `.bc`s/`.ll`s 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](https://en.wikipedia.org/wiki/Objdump), `llvm-objdump -a main.o`
- llvm-nm - LLVM's nm
- llvm-readelf - LLVM's [readelf](https://en.wikipedia.org/wiki/Readelf), `llvm-readelf -a main.o`
- 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
- llvm-mca - LLVM Machine Code Analyzer
- lit - LLVM Integrated Tester, for testing purpose during development
- 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
- MLIR News - MLIR News issue on discourse
- 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](https://edgarluque.com/blog/mlir-with-rust/)
- Sparsifier - Google MLIR sparsifier
- intel/mlir-extensions - Intel® Extension for MLIR
- MLIR Workshop @ EuroLLVM 2024 - - topics with slides available, also [notes about MLIR at round table](https://discourse.llvm.org/t/notes-from-the-mlir-upstream-round-table-eurollvm-2024/78374)
- MLIR Is Not an ML Compiler, and Other Common Misconceptions
- libfuzzer - a library for coverage-guided fuzz testing
- LLD - LLVM's integrated linker, similar to [GNU ld](https://linux.die.net/man/1/ld) and [gold linker](https://en.wikipedia.org/wiki/Gold_(linker))
- LLVM Gold Linker plugin
- LLDB - LLVM's LLDB Debugger
- GDB to LLDB command map
- LLVM's libunwind - an implementation of the interface defined by the HP libunwind project
- Polly - LLVM Framework for High-Level Loop and Data-Locality Optimizations
- 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
- reference
- 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
- Infer - Facebook's static analysis framework; C/C++/objc is based on LLVM/Clang
- mstorsjo/llvm-mingw - An LLVM/Clang/LLD based mingw-w64 toolchain
- microsoft/llvm-mctoll - statically (AOT) translates (or raises) binaries to LLVM IR
- mcsema - An x86 to LLVM IR decompiler
- whole-program-llvm - A wrapper script to build whole-program LLVM bitcode files; its go port [gllvm](https://github.com/SRI-CSL/gllvm)
- ollvm - code obfuscation based on LLVM4.0
- S2E - Selective Symbolic Execution (use KLEE as symbolic executor)
- RetDec - a retargetable machine-code decompiler based on LLVM
- capstone - Disassembler based on the MC component of the LLVM compiler infrastructure
- DWGrep - A tool for querying Dwarf (debuginfo) graphs
- Emscripten - An LLVM-to-JavaScript Compiler
- cling - The cling C++ interpreter ([1.0](https://github.com/vgvassilev/cling/releases/tag/v1.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
- American fuzzy lop (AFL) - LLVM mode for instrumentation
- klee - Symbolic Virtual Machine
- IKOS - Static analyzer for C/C++ based on the theory of Abstract Interpretation.
- diffkemp - Static analysis of semantic differences in kernel versionsa
- GaloisInc/yapall - A precise and scalable pointer analysis for LLVM, written in Ascent
- 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
- here
- 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](https://github.com/seahorn/crab), the latter of which is abstract Interpretation-based library
- llvmlite - A lightweight LLVM **python** binding for writing JIT compilers
- LLVM Rust crates - **Rust** bindings
- go-llvm - **Go** binding
- Swift
- GHC Haskell
- Rust
- Julia
- scala-native
- ldc
- Crystal
- codon
- numba
- mojo
- solang
- Ola - a toy language, for learning LLVM-backend codegen
- go-llvm - **Go** binding
- LLVM Debian/Ubuntu nightly packages - Debian APT sources
- awesome-llvm-security - awesome llvm security projects
- static-analysis - A curated list of static analysis tools and linters for all programming languages, config files, build tools, and more
- dynamic-analysis - A curated list of dynamic analysis tools and linters for all programming languages, binaries, and more
- LLVM-Guide
- program analysis topics on GitHub
- awesome lists on GitHub
- List of tools for static code analysis (on Wikipedia)
Keywords
llvm
24
compiler
9
llvm-ir
8
static-analysis
7
mlir
6
clang
4
c
4
pointer-analysis
3
program-analysis
3
rust
3
analysis
3
static-code-analysis
3
c-plus-plus
2
reverse-engineering
2
code-quality
2
static-analyzer
2
llvm-bitcode
2
parallel-programming
2
python
2
points-to-analysis
2
x86-64
2
compilers
2
llvm-pass
2
llvm-clang
2
cpp
2
tutorial
2
thumb2
1
x86
1
code-property-graph
1
cpg
1
control-dependency
1
backward-slicing
1
dbi
1
backward-slice
1
frida
1
instrumentation
1
circt
1
klee
1
symbolic-execution
1
vulnerability-scanners
1
datalog
1
vulnerability-detection
1
kernel-driver
1
kernel
1
decompiler
1
llvm-plugins
1
llvm-tutor
1
llvm-tutorial
1
llvm-project
1
pytorch
1