Resources for LLVM-relevant techniques; for Clang-specific resources, please see Clang.md. Other resources might also interest you:
- awesome-llvm-security - awesome llvm security
- static-analysis - A curated list of static analysis (SAST) 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
- other awesome lists on GitHub
- List of tools for static code analysis (on Wikipedia)
Documentation (reference)
- LLVM Language Reference Manual
- LLVM Programmerβs Manual
- LLVM Coding Standards
- LLVM Style RTTI
- Writing an LLVM Pass
- LLVM Alias Analysis Infrastructure
- Source Level Debugging
- Create A Project
- LLVM Developer Policy
- CommandLine 2.0 Library Manual
- Getting Started with the LLVM System
- LLVM Tutorials
- Python Version of the LLVM Tutorial
- LLVMβs Analysis and Transform Passes
- FAQ
- LLVM Testing Infrastructure Guide
- The Often Misunderstood GEP Instruction
- Exception Handling in LLVM
- LLVM Bitcode File Format
- Writing an LLVM Backend
- Sanitizers - AddressSanitizer, MemorySanitizer, ThreadSanitizer, UndefinedBehaviorSanitizer, LeakSanitizer, etc
- http://llvm.org/, and its doxygen docs
- http://blog.llvm.org/
- http://llvm.org/devmtg/
- discourse forum
- Mailing List: llvm-weekly
- The Architecture of Open Source Applications - LLVM
- ELLCC - Online LLVM Demo Page
- Eli Bendersky's website
- ChenWj's LLVM Wiki(Traditional Chinese)
- An Unofficial LLVM Website
- LLVM @ StackOverflow
- LLVM @ reddit
- GitHub LLVM topic
- LLVM documentation in hdoc
- π LLVM-Tutor - A collection of out-of-tree LLVM passes for teaching and learning
- π learning-llvm - a few project for learning about llvm
- π LLVM-Pass-Analysis-Collection - A Collection of LLVM Pass for Program Analysis
- π Get Started with the LLVM C API
- π llvm-ir-tutorial (in Chinese)
- βοΈ LLVM Debian/Ubuntu nightly packages - Debian APT sources
- βοΈ Mac OS Homebrew Formula - HomeBrew's LLVM formula
- http://llvm.org/pubs/
- LLVM @ Google Scholar
- LLVM @ Microsoft Academic Search
- LLVM @ ACM-DL
- LLVM @ IEEEXplore
- LLVM @ DBLP
- π Learn LLVM 12 -- good to start with
- π Getting Started with LLVM Core Libraries, also available on ACM library
- π LLVM Cookbook
- π LLVM Essentials
- π LLVM Techniques, Tips, and Best Practices Clang and Middle-End Libraries -- also has some tutorials on Clang (libtooling specific)
- π Engineering LLVM Backend
Official Tools/Libraries (reference)
- opt - LLVM optimizer
- lit - LLVM Integrated Tester
- lli - Directly execute programs from LLVM bitcode
- llvm-dis - LLVM disassembler
- llvm-as - LLVM assembler
- llvm-link - LLVM bitcode linker
- llvm-dwarfdump - Print contents of DWARF sections
- llvm-config - Print LLVM compilation options
- llvm-extract - Extract functions from an LLVM module
- llvm-bcanalyzer - LLVM bitcode analyzer
- llvm-objdump - LLVM objdump
- llvm-nm - LLVM nm
- llvm-readobj - LLVM object reader
- llvm-diff - LLVM structural "diff"
- llc - LLVM static compiler
- llvm-ar(llvm-ranlib) - LLVM archiver
- Polly - LLVM Framework for High-Level Loop and Data-Locality Optimizations
- LLDB - The LLDB Debugger
- libfuzzer - a library for coverage-guided fuzz testing
DragonEgg - Using LLVM as a GCC backendllvm-ld(<=2.9) - LLVM linker
Unofficial Tools/Libraries (reference)
- American fuzzy lop (AFL) - LLVM mode for instrumentation
- SVF-tools - Pointer Analysis and Program Dependence Analysis for C and C++ Programs
- Phasar - A LLVM-based static analysis framework
- Infer - Facebook's static analysis framework; C/C++/objc is based on LLVM/Clang
- whole-program-llvm - A wrapper script to build whole-program LLVM bitcode files; its go port gllvm
- klee - Symbolic Virtual Machine
- 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
- mcsema - An x86 to LLVM IR decompiler
- 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
slicer - Schedule Specialization FrameworkLLBMC - The Low-Level Bounded Model Checkerstack - A static checker for identifying unstable codeandersen - Andersen's inclusion-based pointer analysis re-implementation in LLVMNeonGoby - Alias Analysis Checker
- llvmlite - A lightweight LLVM python binding for writing JIT compilers
- LLVM Rust crates
- C/C++/ObjC/ObjC++
- Swift
- GHC Haskell
- Rust
- Julia
- go-llvm
- scala-native
- ldc
- Crystal
- codon
- numba