# LLVM

## Links

* [Vellvm](https://www.cis.upenn.edu/~stevez/vellvm/) - Verifying the LLVM.
* [Vellvm: Verifying the LLVM - Steve Zdancewic (2018)](https://www.youtube.com/watch?v=q6gSC3OxB_8) - Great intro to LLVM.
* [Code Generation with llvm-hs by Stephen Diehl (2018)](https://www.youtube.com/watch?v=wn-xW3g8jXY)
* [Souper](https://github.com/google/souper) - Superoptimizer for LLVM IR. ([HN](https://news.ycombinator.com/item?id=26020879))
* [Mull](https://github.com/mull-project/mull) - Mutation testing system built on top of LLVM.
* [LLVM Tutorial: Table of Contents](https://llvm.org/docs/tutorial/)
* [Compiler basics (3): LLVM (2019)](http://notes.eatonphil.com/compiler-basics-llvm.html)
* [CodeGen](https://github.com/pdziepak/codegen) - Experimental wrapper over LLVM for generating and compiling code at run-time.
* [LLVM backend for the Accelerate Array Language](https://github.com/AccelerateHS/accelerate-llvm)
* [kaleidoscope-rs](https://github.com/beam2d/kaleidoscope-rs) - LLVM tutorial implementation in Rust with llvm-sys.
* [Compiler basics (3): LLVM (2019)](http://notes.eatonphil.com/compiler-basics-llvm.html)
* [Let's Write an LLVM Specializer for Python (2019)](http://dev.stephendiehl.com/numpile/) ([HN](https://news.ycombinator.com/item?id=21268287))
* [2019 LLVM Developers’ Meeting: E. Christopher & J. Doerfert “Introduction to LLVM”](https://www.youtube.com/watch?v=J5xExRGaIIY)
* [LLVM Tutor](https://github.com/banach-space/llvm-tutor) - Collection of self-contained reference LLVM passes. It's a tutorial that targets novice and aspiring LLVM developers.
* [LLVM Discourse](https://llvm.discourse.group/)
* [LLVM Discord](https://discordapp.com/invite/xS7Z362)
* [LLVM for Grad Students (2015)](https://www.cs.cornell.edu/~asampson/blog/llvm.html) ([step-by-step tutorial for building an LLVM sample pass](https://github.com/abenkhadra/llvm-pass-tutorial))
* [Quala](https://github.com/sampsyo/quala) - Type Qualifiers for LLVM/Clang.
* [haybale](https://github.com/PLSysSec/haybale) - Symbolic execution of LLVM IR, written in Rust.
* [2019 EuroLLVM Developers’ Meeting: V. Bridgers & F. Piovezan “LLVM IR Tutorial - Phis, GEPs ...”](https://www.youtube.com/watch?v=m8G_S5LwlTo)
* [Beyond debug information: Improving program reconstruction in LLDB using C++ modules (2019)](https://odr.chalmers.se/handle/20.500.12380/300037)
* [LLVM source code](https://github.com/llvm-mirror/llvm)
* [Generating Verified LLVM from Isabelle/HOL](https://drops.dagstuhl.de/opus/volltexte/2019/11077/pdf/LIPIcs-ITP-2019-22.pdf)
* [Snel: SQL Native Execution for LLVM (2020)](https://arxiv.org/abs/2002.09449) ([HN](https://news.ycombinator.com/item?id=22404004))
* [Clang](http://clang.llvm.org/) - C language family frontend for LLVM. ([Docs](http://clang.llvm.org/docs/index.html))
* [Alive2](https://github.com/AliveToolkit/alive2) - Automatic verification of LLVM optimizations.
* [Micro C, Part 3: Generating LLVM (2020)](https://blog.josephmorag.com/posts/mcc3/)
* [jitmap](https://github.com/fsaintjacques/jitmap) - Small library providing an execution engine for logical binary expressions on bitmaps.
* [LLVM Explore](https://github.com/mkitzan/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)](https://www.youtube.com/watch?v=Ntj8ab-5cvE)
* [Chris Lattner: Compilers, LLVM, Swift, TPU, and ML Accelerators (2019)](https://www.youtube.com/watch?v=yCd3CzGSte8)
* [Cilk](https://github.com/maekawatoshiki/cilk) - Toy Compiler Infrastructure influenced by LLVM written in Rust.
* [Make LLVM fast again (2020)](https://nikic.github.io/2020/05/10/Make-LLVM-fast-again.html) ([Reddit](https://www.reddit.com/r/cpp/comments/gh3huh/make_llvm_fast_again/)) ([HN](https://news.ycombinator.com/item?id=23137345))
* [Mapping High Level Constructs to LLVM IR](https://mapping-high-level-constructs-to-llvm-ir.readthedocs.io/en/latest/README.html) ([Code](https://github.com/f0rki/mapping-high-level-constructs-to-llvm-ir))
* [KLEE LLVM Execution Engine](https://klee.github.io/) - Symbolic virtual machine built on top of LLVM. ([HN](https://news.ycombinator.com/item?id=23283706))
* [Anselm](https://github.com/trailofbits/anselm) - Tool that allows you to describe and detect patterns of bad behavior in function calls.
* [pitchfork](https://github.com/PLSysSec/haybale-pitchfork) - Verifying constant-time code with symbolic execution.
* [PhASAR](https://github.com/secure-software-engineering/phasar) - LLVM-based Static Analysis Framework. ([Web](https://phasar.org/))
* [cclyzer](https://github.com/plast-lab/cclyzer) - Tool for analyzing LLVM bitcode using Datalog.
* [Vellvm](https://github.com/vellvm/vellvm) - Coq formalization of the semantics of (a subset of) the LLVM compiler IR.
* [Writing an LLVM Optimization (2020)](https://www.youtube.com/watch?v=MagR2KY8MQI)
* [KLEE](https://github.com/klee/klee) - Symbolic virtual machine built on top of the LLVM compiler infrastructure.
* [ALLVM Research Project](https://publish.illinois.edu/allvm-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](http://kripken.github.io/llvm.js/demo.html) ([HN](https://news.ycombinator.com/item?id=24097446))
* [Compiling a Higher-Order Smart Contract Language to LLVM](https://arxiv.org/pdf/2008.05555.pdf) ([Tweet](https://twitter.com/maqstik/status/1294170007891566593))
* [The Dynamic Runtime Inlining (DRTI)](https://github.com/drti/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.
* [Understanding static single assignment forms (2020)](https://blog.yossarian.net/2020/10/23/Understanding-static-single-assignment-forms)
* [LLVM tutorial in Rust language](https://github.com/jauhien/iron-kaleidoscope)
* [A tutorial on how to write a compiler using LLVM (2020)](https://tomassetti.me/a-tutorial-on-how-to-write-a-compiler-using-llvm/)
* [cargo-llvm-lines](https://github.com/dtolnay/cargo-llvm-lines) - Count lines of LLVM IR per generic function.
* [QBE vs. LLVM](https://c9x.me/compile/doc/llvm.html) ([HN](https://news.ycombinator.com/item?id=25273907))
* [Infrastructure for ML - Driven Optimizations in LLVM](https://github.com/google/ml-compiler-opt)
* [LLVM Project Blog](https://blog.llvm.org/)
* [A Complete Guide to LLVM for Programming Language Creators (2020)](https://mukulrathi.co.uk/create-your-own-programming-language/llvm-ir-cpp-api-tutorial/) ([HN](https://news.ycombinator.com/item?id=25539797))
* [The Architecture of Open Source Applications: LLVM](http://www.aosabook.org/en/llvm.html) ([Reddit](https://www.reddit.com/r/programming/comments/ku9xza/the_architecture_of_open_source_applications_llvm/))
* [Enzyme](https://github.com/wsmoses/Enzyme) - High-Performance Automatic Differentiator of LLVM. ([Docs](https://enzyme.mit.edu/))
* [DebugIR](https://github.com/vaivaswatha/debugir) - Debugging LLVM-IR Files.
* [Dumbo: LLVM-based Dumb Obfuscator (2019)](https://www.babush.me/dumbo-llvm-based-dumb-obfuscator.html)
