LLVM
LLVM-Go is nice way to interact with LLVM IR.
llvmbox is great.
Links
- Vellvm - Verifying the LLVM.
- Vellvm: Verifying the LLVM - Steve Zdancewic (2018) - Great intro to LLVM.
- Code Generation with llvm-hs by Stephen Diehl (2018)
- Souper - Superoptimizer for LLVM IR. (HN)
- Mull - Mutation testing system built on top of LLVM.
- LLVM Tutorial: Table of Contents
- Compiler basics (3): LLVM (2019)
- CodeGen - Experimental wrapper over LLVM for generating and compiling code at run-time.
- LLVM backend for the Accelerate Array Language
- kaleidoscope-rs - LLVM tutorial implementation in Rust with llvm-sys.
- Compiler basics (3): LLVM (2019)
- Let's Write an LLVM Specializer for Python (2019) (HN)
- 2019 LLVM Developers’ Meeting: E. Christopher & J. Doerfert “Introduction to LLVM”
- LLVM Tutor - Collection of self-contained reference LLVM passes. It's a tutorial that targets novice and aspiring LLVM developers.
- LLVM Discourse
- LLVM Discord
- LLVM for Grad Students (2015) (step-by-step tutorial for building an LLVM sample pass)
- Quala - Type Qualifiers for LLVM/Clang.
- haybale - Symbolic execution of LLVM IR, written in Rust.
- 2019 EuroLLVM Developers’ Meeting: V. Bridgers & F. Piovezan “LLVM IR Tutorial - Phis, GEPs ...”
- Beyond debug information: Improving program reconstruction in LLDB using C++ modules (2019)
- LLVM source code
- Generating Verified LLVM from Isabelle/HOL
- Snel: SQL Native Execution for LLVM (2020) (HN)
- Clang - C language family frontend for LLVM. (Docs)
- Alive2 - Automatic verification of LLVM optimizations. (Paper)
- Micro C, Part 3: Generating LLVM (2020)
- jitmap - Small library providing an execution engine for logical binary expressions on bitmaps.
- LLVM Explore - Notes created while studying LLVM compiler infrastructure in preparation for compiler engineer job and onsite interview.
- Joseph Groff & Chris Lattner “Swift's High-Level IR: A Case Study..." (2015)
- Chris Lattner: Compilers, LLVM, Swift, TPU, and ML Accelerators (2019)
- Cilk - Toy Compiler Infrastructure influenced by LLVM written in Rust.
- Make LLVM fast again (2020) (Reddit) (HN)
- Mapping High Level Constructs to LLVM IR (Code)
- KLEE LLVM Execution Engine - Symbolic virtual machine built on top of LLVM. (HN)
- Anselm - Tool that allows you to describe and detect patterns of bad behavior in function calls.
- pitchfork - Verifying constant-time code with symbolic execution.
- PhASAR - LLVM-based Static Analysis Framework. (Web)
- cclyzer - Tool for analyzing LLVM bitcode using Datalog.
- Vellvm - Coq formalization of the semantics of (a subset of) the LLVM compiler IR.
- Writing an LLVM Optimization (2020)
- KLEE - Symbolic virtual machine built on top of the LLVM compiler infrastructure.
- ALLVM Research Project - All software components — except a small set needed for bootstrapping — are represented in a virtual instruction set instead of native machine code.
- Run LLVM Assembly in the Browser (HN)
- Compiling a Higher-Order Smart Contract Language to LLVM (Tweet)
- The Dynamic Runtime Inlining (DRTI) - With this project it is possible to take the output from an LLVM compiler such as clang and allow selected parts of the code to recompile themselves at runtime. (HN)
- Understanding static single assignment forms (2020)
- LLVM tutorial in Rust language
- A tutorial on how to write a compiler using LLVM (2020)
- cargo-llvm-lines - Count lines of LLVM IR per generic function.
- QBE vs. LLVM (HN)
- Infrastructure for ML - Driven Optimizations in LLVM
- LLVM Project Blog
- A Complete Guide to LLVM for Programming Language Creators (2020) (HN)
- The Architecture of Open Source Applications: LLVM (Reddit)
- Enzyme - High-Performance Automatic Differentiator of LLVM. (Docs)
- DebugIR - Debugging LLVM-IR Files.
- Dumbo: LLVM-based Dumb Obfuscator (2019)
- LLVM Meets Code Property Graphs (2021)
- LLVM Project Blog
- revng - Static binary translator. Given a input ELF binary for one of the supported architectures, it will analyze it and emit an equivalent LLVM IR.
- PolyTracker - LLVM-based instrumentation tool for universal taint analysis.
- A look at LLVM - comparing clamp implementations (2021) (HN)
- Speedbuilding LLVM/Clang in 5 minutes (2021)
- Building LLVM in 90 seconds using Amazon Lambda (2021) (Lobsters)
- eBPF assembly with LLVM (2020)
- Alive2: Bounded Translation Validation for LLVM (2021)
- llvm-deobfuscator - Performs the inverse operation of the control flow flattening pass performed by LLVM-Obfuscator. (Article)
- LLVM MinGW - LLVM/Clang/LLD based mingw-w64 toolchain.
- Design issues in LLVM IR (2021)
- Can memcpy be implemented in LLVM IR? (2021)
- Clang and LLVM Tutorial - AST Interpreter, Function Pointer Analysis, Value Range Analysis, Data-Flow Analysis, Andersen Pointer Analysis, LLVM Backend.
- LLVM Internals: The Bitcode Format (2021)
- A Journey to Understand LLVM-IR (2021)
- Can we directly execute LLVM-IR?
- Learning Almost Nothing About LLVM (2021) (HN)
- Whole Program LLVM in Go - Drop-in replacement for wllvm, that builds the bitcode in parallel, and is faster.
- The select story (2021) - Story about the removal of a compiler optimization that had been in LLVM for a long time.
- LLVM 13.0.0 (2021) (HN)
- llvm-pretty - LLVM pretty printer inspired by the Haskell LLVM binding.
- Generating relocatable code for ARM processors (2021) (HN)
- llvmlite - Lightweight LLVM Python Binding for Writing JIT Compilers. (Docs)
- gem5-SALAM (System Architecture for LLVM-based Accelerator Modeling) - Novel system architecture designed to enable LLVM-based modeling and simulation of custom hardware accelerators.
- mlir-hs - Haskell bindings for MLIR.
- Make LLVM fast again (2020)
- Building a Distribution of LLVM
- How to learn compilers: LLVM Edition (2021) (HN)
- llvm-reduce (2021)
- 2021 LLVM Developers' Meeting
- manyclangs - Project enabling you to run any commit of clang within a few seconds, without having to build it.
- LLVM relicensing update and call for help (2021) (HN) (Lobsters)
- Remill - Library for lifting of x86, amd64, and aarch64 machine code to LLVM bitcode.
- mollusc - Pure-Rust libraries for parsing, interpreting, and analyzing LLVM.
- “LLVM-Libc” C Standard Library (HN)
- llvm-deno - LLVM bindings for Deno.
- Building an Operating System from Scratch with LLVM (2021)
- Pedigree - LLVM dependence graphs.
- llvm-sys.rs - Rust bindings to LLVM's C API.
- Crellvm - Verified Credible Compilation for LLVM.
- llvm-c-search - Terminal interface to search the LLVM-C API.
- Instrew - High performance LLVM-based dynamic binary instrumentation framework.
- bruh - Tool to make LLVM IR more human readable.
- Summus - Simple compiler frontend using LLVM as backend. Can easily be used as a starting point for any kind of compiler.
- Taming Undefined Behavior in LLVM (2017)
- Fracture - Architecture-independent decompiler to LLVM IR.
- Reducing WebAssembly size by exploring all executions in LLVM (2022) (HN)
- FileCheck - Standalone Swift version of LLVM's flexible pattern matching file verifier.
- Lanai, the mystery CPU architecture in LLVM (Lobsters) (HN)
- RFC: Add an LLVM CAS library and experiment with fine-grained caching for builds (2022)
- Apple LLVM fork
- LLVM Guide
- McSema - Framework for lifting x86, amd64, aarch64, sparc32, and sparc64 program binaries to LLVM bitcode.
- Peephole Optimizer (For QBE): Studying the LLVM and GCC Optimizers (2022)
- Whole Program LLVM - Wrapper script to build whole-program LLVM bitcode files.
- PochiVM - JIT (just-in-time) code-generation framework backed by LLVM and a novel baseline compiler.
- Guide to Performance Debugging LLVM-based Programs (2022)
- Writing an LLVM-IR compiler in Rust
- Rock - Native language with Rust & LLVM.
- High-Throughput, Formal-Methods-Assisted Fuzzing for LLVM (2022)
- Formal-Methods-Based Bugfinding for LLVM’s AArch64 Back End (2022) (HN)
- Caffeine - Symbolic execution engine that interprets LLVM IR.
- Clang IR (CIR): New IR for Clang (HN) (Lobsters)
- LLVM/SPIR-V Bi-Directional Translator
- Lazification of Function Arguments - Automatic conversion of call by value into call by need in the LLVM IR.
- Minotaur: A SIMD-Oriented Synthesizing Superoptimizer
- Ghidra-to-LLVM - Binary-to-LLVM IR lifter that leverages Ghidra's IR and analysis.
- LLVM on iOS - How to use LLVM + Clang to provide an iOS app with some scripting capability.
- Swift Bindings for LLVM
- LLVM Discussion Forums
- LLVM crash analyzer
- Clam - Static Analyzer for LLVM bitcode based on Abstract Interpretation.
- LLVM Passes for Security: A Brief Introduction (Lobsters)
- Smaller debug info with constructor type homing (2021)
- m2lang - LLVM-based Modula-2 compiler.
- O-MVLL - LLVM-based obfuscator for native code (Android & iOS).
- MDL: A Micro-Architecture Description Language for LLVM (2022)
- LLVM based Practical compiler
- LLVM’s New Pass Manager (2022)
- llparse - Generating parsers in LLVM IR.
- LLD-rs - Wrapper around LLVM's LLD.
- RuSTy - Structured Text Parser and LLVM Frontend.
- Kaleidoscope: Implementing a Language with LLVM
- How to contribute to LLVM (2022) (Reddit)
- This year in LLVM (2022)
- Go LLVM - Go bindings to a system-installed LLVM. Used as part of TinyGo.
- Compile and run LLVM IR in the browser (Code)
- Encoding Variable-Length Instructions in LLVM (2022)
- llvmbox - Self contained, fully static LLVM tools & libs. (Lobsters)
- Rellume - Lift machine code to performant LLVM IR.
- llvm-ir-taint - Taint tracking for LLVM IR.
- Writing an LLVM backend for the Move language in Rust (2023)
- Adding a new target/object backend to LLVM JITLink (2023)
- llvm-ir-analysis - Static analysis of LLVM IR.
- LLVM: The middle-end optimization pipeline (2023)
- Swifty-LLVM - Swifty interface for the LLVM compiler infrastructure.
- LLVM: Canonicalization and target-independence (2023)
- LLVM Haskell Codegen
- A whirlwind tour of the LLVM optimizer (2023) (HN)
- LLVM Discord
- Port LLVM XRay to Apple systems (2023)
- Copy Hunting (2023) (HN)
- A Gentle Introduction to LLVM IR (2023)
- Writing a toy compiler with Go and LLVM (2022)
- cargo-remark - Cargo subcommand for viewing LLVM optimization remarks.
- Reflections on LLVM's switch to GitHub pull requests (2023) (Lobsters)