Main Page
From LLVM
Welcome to the LLVM Wiki.
This wiki is very much a work in progress - feel free to lend a hand.
The wiki is not intended to replace the 'official' documentation. It should serve as a supplement, especially for those developing on LLVM, detailing the very many aspects and intricacies of the LLVM system.
The wiki is publicly editable, so feel free to add whatever information you feel is relevant. We do ask that you try to follow the Wiki guidelines though.
Contents |
[edit] Developing On LLVM
[edit] Tools for development
[edit] LLVM General
- Nodes and Values
- Flags
- Chains
- DAGs
- Machine* classes vs Target* classes
- Using the casting infrastructure for your own classes
[edit] Analysis passes
[edit] Optimization passes
[edit] Backend
- Absolute Minimum Backend
- TableGen
- Instruction Lowering
- Instruction Selection
- Emitting Assembly
- Emitting Code
- Understanding and writing an LLVM Compiler Backend
[edit] Common backend tasks
- About: FrameIndexes
- About: Function calls
- About: Debug Information
- HowTo: Expand nodes to library functions
- HowTo: Implement 8-bit memory access on a platform which only supports 32-bit memory operations
- HowTo: Implement calling conventions
- HowTo: Implement branching instructions
- HowTo: Implement conditional instructions
- HowTo: Implement addressing modes
- HowTo: Implement extending loads and truncating stores
- HowTo: Manage stack frame allocation
- HowTo: Implement reserved stack frames
- HowTo: Allocate stack space for return address
- HowTo: Add arbitrary properties to instructions
[edit] FAQ
- How do I emit '$' in an instruction using tblgen?
- How do I write an instruction pattern to copy between registers?
- How do I get the size of a Type at compile time?
- How do I compile on Visual C++?
[edit] Other
Raw notes/dumps. Should probably be folded into one of the above sections.
[edit] Developing LLVM
[edit] Active Projects
[edit] Proposed Projects
[edit] Wishlist
[edit] LLVM in the Future
[edit] Modifying LLVM-GCC
[edit] Using LLVM
- HowTo: LLVM-based cross compiler
- HowTo: Generate c code from an IR file
- HowTo: JIT slowly-running machine code really quickly
- HowTo: Tell GDB about JITted code
- HowTo: Print native code emitted by the JIT
- HowTo: Call LLVM intrinsics from C code
- HowTo: Build JIT based Exception mechanism
[edit] Projects built on LLVM
[edit] Languages
- Pure
- LDC
- Roadsend PHP
- Unladen Swallow - Optimizing Python performance.
- PHP LLVM JIT
- llvm-lua, adds JIT and static compiling support to lua using LLVM.

