hoshi-lang dev
Yet another programming language
Loading...
Searching...
No Matches
LLVMCodegen::LLVMModuleContext Class Reference
Collaboration diagram for LLVMCodegen::LLVMModuleContext:

Public Member Functions

 LLVMModuleContext (const std::shared_ptr< IRModule > &yoiModule, yoi::indexT hash, const yoi::wstr &absolute_path)
 

Public Attributes

std::unique_ptr< llvm::LLVMContext > TheContext
 
yoi::wstr absolute_path
 
std::unique_ptr< llvm::Module > TheModule
 
std::unique_ptr< llvm::IRBuilder<> > Builder
 
std::unique_ptr< llvm::DIBuilder > DBuilder
 
std::map< yoi::wstr, llvm::Function * > runtimeFunctions
 
std::map< yoi::wstr, llvm::DICompileUnit * > compileUnits
 
std::map< yoi::wstr, llvm::DIType * > basicDITypeMap
 
llvm::GlobalVariable * noneObjectSingleton = nullptr
 
llvm::GlobalVariable * RTTITable = nullptr
 
llvm::StructType * RTTIEntryType = nullptr
 
ValueStackWithPhi valueStackPhi
 
llvm::Function * currentFunction = nullptr
 
llvm::Value * currentGeneratorContextValue = nullptr
 
struct { 
 
   llvm::BasicBlock *   resumeBB {} 
 
   llvm::BasicBlock *   cleanupBB {} 
 
   llvm::BasicBlock *   suspendBB {} 
 
currentGeneratorContextBasicBlocks 
 
std::shared_ptr< yoi::IRFunctionDefinitioncurrentFunctionDef
 
std::map< yoi::indexT, llvm::AllocaInst * > namedValues
 
std::map< yoi::indexT, llvm::BasicBlock * > basicBlockMap
 
std::map< yoi::indexT, bool > basicBlockVisited
 
std::map< yoi::indexT, llvm::GlobalVariable * > globalValues
 
std::map< yoi::wstr, llvm::Function * > functionMap
 
std::map< std::tuple< yoi::IRValueType::valueType, yoi::indexT, yoi::indexT >, llvm::StructType * > structTypeMap
 
std::map< std::tuple< yoi::IRValueType::valueType, yoi::indexT, yoi::indexT >, llvm::Type * > foreignTypeMap
 
std::map< std::tuple< yoi::IRValueType::valueType, yoi::indexT, yoi::indexT, yoi::indexT >, llvm::StructType * > arrayTypeMap
 
std::map< std::tuple< yoi::IRValueType::valueType, yoi::indexT, yoi::indexT, yoi::indexT >, llvm::DIType * > arrayDataRegionDITypeMap
 
std::map< std::tuple< yoi::IRValueType::valueType, yoi::indexT, yoi::indexT >, llvm::DIType * > structTypeDIMap
 
std::map< std::tuple< yoi::IRValueType::valueType, yoi::indexT, yoi::indexT, yoi::indexT >, llvm::DIType * > arrayTypeDIMap
 
std::map< yoi::indexT, llvm::DIType * > dataStructDataRegionTypeDIMap
 
std::map< std::tuple< yoi::IRValueType::valueType, yoi::indexT, yoi::indexT, yoi::indexT >, yoi::indexTtypeIDMap
 
yoi::vec< std::tuple< std::shared_ptr< IRValueType >, llvm::StructType *, llvm::Type * > > arrayToGenerateImplementations
 
std::map< yoi::indexT, llvm::StructType * > dataStructDataRegionMap
 
ControlFlowAnalysis controlFlowAnalysis
 
yoi::indexT nextTypeId
 

Detailed Description

Definition at line 105 of file llvmCodegenContext.hpp.

Constructor & Destructor Documentation

◆ LLVMModuleContext()

LLVMModuleContext ( const std::shared_ptr< IRModule > &  yoiModule,
yoi::indexT  hash,
const yoi::wstr absolute_path 
)

Definition at line 4433 of file llvmCodegenContext.cpp.

Member Data Documentation

◆ absolute_path

◆ arrayDataRegionDITypeMap

std::map<std::tuple<yoi::IRValueType::valueType, yoi::indexT, yoi::indexT, yoi::indexT>, llvm::DIType *> arrayDataRegionDITypeMap

Definition at line 149 of file llvmCodegenContext.hpp.

Referenced by LLVMCodegen::getDIType().

◆ arrayToGenerateImplementations

yoi::vec<std::tuple<std::shared_ptr<IRValueType>, llvm::StructType *, llvm::Type *> > arrayToGenerateImplementations

Definition at line 161 of file llvmCodegenContext.hpp.

Referenced by LLVMCodegen::getArrayLLVMType().

◆ arrayTypeDIMap

std::map<std::tuple<yoi::IRValueType::valueType, yoi::indexT, yoi::indexT, yoi::indexT>, llvm::DIType *> arrayTypeDIMap

Definition at line 155 of file llvmCodegenContext.hpp.

Referenced by LLVMCodegen::getDIType().

◆ arrayTypeMap

◆ basicBlockMap

std::map<yoi::indexT, llvm::BasicBlock *> basicBlockMap

◆ basicBlockVisited

std::map<yoi::indexT, bool> basicBlockVisited

◆ basicDITypeMap

std::map<yoi::wstr, llvm::DIType *> basicDITypeMap

Definition at line 114 of file llvmCodegenContext.hpp.

Referenced by LLVMCodegen::getDIType().

◆ Builder

std::unique_ptr<llvm::IRBuilder<> > Builder

Definition at line 110 of file llvmCodegenContext.hpp.

Referenced by LLVMCodegen::actualizeInterfaceObject(), LLVMCodegen::callGcFunction(), LLVMCodegen::createArrayObject(), LLVMCodegen::createBasicObject(), LLVMCodegen::createDynamicArrayObject(), LLVMCodegen::createGeneratorContext(), LLVMCodegen::createStructObject(), LLVMCodegen::declareRuntimeFunctions(), LLVMCodegen::generateArrayGCFunctionDeclarations(), LLVMCodegen::generateArrayGCFunctionImplementations(), LLVMCodegen::generateBasicTypeDeclarations(), LLVMCodegen::generateBasicTypeImplementations(), LLVMCodegen::generateCodeBlock(), LLVMCodegen::generateDataStructDeclarations(), LLVMCodegen::generateExportFunctionDecls(), LLVMCodegen::generateFunction(), LLVMCodegen::generateFunctionExitCleanup(), LLVMCodegen::generateGeneratorContextInitialization(), LLVMCodegen::generateIfTargetNotNull(), LLVMCodegen::generateImportFunctionImplementations(), LLVMCodegen::generateInstruction(), LLVMCodegen::generateInterfaceObjectGCFunctionDeclarations(), LLVMCodegen::generateInterfaceObjectGCFunctionImplementations(), LLVMCodegen::generateMainFunction(), LLVMCodegen::generateRTTIImplmentation(), LLVMCodegen::generateRuntimeFunctionImplementations(), LLVMCodegen::generateStructDeclarations(), LLVMCodegen::generateStructGCFunctionDeclarations(), LLVMCodegen::generateStructGCFunctionImplementations(), LLVMCodegen::handleBinaryOp(), LLVMCodegen::handleComparison(), LLVMCodegen::handleForeignTypeConv(), LLVMCodegen::handleForeignTypeConv(), LLVMCodegen::handleIntrinsicCall(), LLVMCodegen::loadArrayElement(), LLVMCodegen::loadIfDataStructObject(), LLVMCodegen::storeArrayElement(), LLVMCodegen::storeMember(), LLVMCodegen::unboxValue(), LLVMCodegen::unwrapInterfaceObject(), and LLVMCodegen::yoiTypeToLLVMType().

◆ cleanupBB

◆ compileUnits

std::map<yoi::wstr, llvm::DICompileUnit *> compileUnits

◆ controlFlowAnalysis

ControlFlowAnalysis controlFlowAnalysis

◆ currentFunction

◆ currentFunctionDef

◆ [struct]

◆ currentGeneratorContextValue

llvm::Value* currentGeneratorContextValue = nullptr

◆ dataStructDataRegionMap

◆ dataStructDataRegionTypeDIMap

std::map<yoi::indexT, llvm::DIType *> dataStructDataRegionTypeDIMap

Definition at line 156 of file llvmCodegenContext.hpp.

Referenced by LLVMCodegen::getDIType().

◆ DBuilder

std::unique_ptr<llvm::DIBuilder> DBuilder

◆ foreignTypeMap

◆ functionMap

◆ globalValues

std::map<yoi::indexT, llvm::GlobalVariable *> globalValues

◆ namedValues

◆ nextTypeId

◆ noneObjectSingleton

llvm::GlobalVariable* noneObjectSingleton = nullptr

Definition at line 117 of file llvmCodegenContext.hpp.

◆ resumeBB

llvm::BasicBlock* resumeBB {}

Definition at line 126 of file llvmCodegenContext.hpp.

◆ RTTIEntryType

llvm::StructType* RTTIEntryType = nullptr

◆ RTTITable

llvm::GlobalVariable* RTTITable = nullptr

◆ runtimeFunctions

◆ structTypeDIMap

std::map<std::tuple<yoi::IRValueType::valueType, yoi::indexT, yoi::indexT>, llvm::DIType *> structTypeDIMap

Definition at line 152 of file llvmCodegenContext.hpp.

Referenced by LLVMCodegen::getDIType().

◆ structTypeMap

◆ suspendBB

◆ TheContext

std::unique_ptr<llvm::LLVMContext> TheContext

Definition at line 107 of file llvmCodegenContext.hpp.

Referenced by LLVMCodegen::actualizeInterfaceObject(), LLVMCodegen::createArrayObject(), LLVMCodegen::createBasicObject(), LLVMCodegen::createDynamicArrayObject(), LLVMCodegen::createGeneratorContext(), LLVMCodegen::createStructObject(), LLVMCodegen::declareRuntimeFunctions(), LLVMCodegen::generateArrayGCFunctionDeclarations(), LLVMCodegen::generateArrayGCFunctionImplementations(), LLVMCodegen::generateBasicTypeDeclarations(), LLVMCodegen::generateBasicTypeImplementations(), LLVMCodegen::generateCodeBlock(), LLVMCodegen::generateDataStructShallowDeclarations(), LLVMCodegen::generateDescription(), LLVMCodegen::generateExportFunctionDecls(), LLVMCodegen::generateForeignStructTypes(), LLVMCodegen::generateFunction(), LLVMCodegen::generateGeneratorContextInitialization(), LLVMCodegen::generateGlobalInitializers(), LLVMCodegen::generateIfTargetNotNull(), LLVMCodegen::generateImportFunctionImplementations(), LLVMCodegen::generateInstruction(), LLVMCodegen::generateInterfaceObjectGCFunctionDeclarations(), LLVMCodegen::generateInterfaceObjectGCFunctionImplementations(), LLVMCodegen::generateMainFunction(), LLVMCodegen::generateRTTIDeclaration(), LLVMCodegen::generateRTTIImplmentation(), LLVMCodegen::generateRuntimeFunctionImplementations(), LLVMCodegen::generateStructDeclarations(), LLVMCodegen::generateStructGCFunctionDeclarations(), LLVMCodegen::generateStructGCFunctionImplementations(), LLVMCodegen::generateStructShallowDeclarations(), LLVMCodegen::getArrayLLVMType(), LLVMCodegen::handleForeignTypeConv(), LLVMCodegen::handleForeignTypeConv(), LLVMCodegen::storeArrayElement(), LLVMCodegen::unwrapInterfaceObject(), and LLVMCodegen::yoiTypeToLLVMType().

◆ TheModule

◆ typeIDMap

◆ valueStackPhi


The documentation for this class was generated from the following files: