LLVM Backend

Backend

Generate object code using LLVM.

The LLVM backend is the original and default backend for Volt, and as such is the most fully featured.

See also

Modules

volt.llvm.intrinsicVersion Get the intrinsic version.
volt.llvm.backend Main module for the LLVM Backend.
volt.llvm.host Host or JIT compilation code.
volt.llvm.state Implementation of the State class.
volt.llvm.toplevel Code handling control flow and toplevel contstructs.
volt.llvm.type Code and classes for turning Volt Types into LLVM types.
volt.llvm.constant Code for generating constant expresions.
volt.llvm.expression Most of the expression to llvmbitcode generation code is in this module.
volt.llvm.interfaces Interfaces that the rest of the LLVM Backend code uses.
volt.llvm.common Common code generation code.
volt.llvm.debugInfo Debug info generation code.
volt.llvm.dwarf DWARF enums and code.

Classes

LLVMDriver The beckend part of the Driver that handles the backend and running of the commands.
LlvmBackend Main interface for the Driver to the llvm backend.
BitcodeResult A llvm result that saves to bitcode files.
ObjectResult Backend results that procudes a object file.
VoltState Collection of objects used by pretty much all of the translation code. It isn't called Module, Context or Builder because it will collide in meaning with language concepts.
LlvmVisitor Visits a module and turn it into code.
Type Base class for a LLVM backend types. Contains a refernce to the irType for this type, the llvmType and the debugging info for this type.
VoidType Void .
PrimitiveType Integer but not void.
PointerType PointerType represents a standard C pointer.
ArrayType Array type.
StaticArrayType Static array type.
CallableType Base class for callable types FunctionType and DelegateType.
FunctionType Function type.
DelegateType Delegates are lowered here into a struct with two members.
StructType Backend instance of a ir.Struct.
UnionType Backend instance of a ir.Union.
Value Represents a single LLVMValueRef plus the associated high level type.
State Collection of objects used by pretty much all of the translation code. It isn't called Module, Context or Builder because it will collide in meaning with LLVM and language concepts.