top | up | prev | next

LlvmCodeGenerator Abstract Class

Definition at line 29 of LlvmCodeGenerator.hpp

Constructors

LlvmCodeGenerator(EmittingContext& emittingContext_)
LlvmCodeGenerator(const LlvmCodeGenerator&) delete

Member Functions

void* CleanupBlock() override
void ClearFlags()
void* CreateClassDIType(void* classPtr) override
void CreateExitFunctionCall()
Pad* CurrentPad() override
void* EntryBasicBlock() const
void ExitBlocks(BoundCompoundStatement* targetBlock)
void GenJumpingBoolCode()
void GenerateCode(void* boundCompileUnit) override
void GenerateCodeForCleanups() pure virtual
void GenerateEnterFunctionCode(BoundFunction& boundFunction)
void GenerateExitFunctionCode(BoundFunction& boundFunction)
void GenerateGlobalInitFuncion(BoundCompileUnit& boundCompileUnit)
void GenerateInitCompileUnitFunction(BoundCompileUnit& boundCompileUnit)
void GenerateInitUnwindInfoFunction(BoundCompileUnit& boundCompileUnit)
void* GetGlobalStringPtr(int stringId) override
void* GetGlobalUStringConstant(int stringId) override
void* GetGlobalUuidConstant(int uuidId) override
void* GetGlobalWStringConstant(int stringId) override
void* GetPersonalityFunction() const pure virtual
std::string GetSourceFilePath(const Span& span, const boost::uuids::uuid& moduleId) override
void* HandlerBlock() override
int Install(const std::string& str) override
int Install(const std::u16string& str) override
int Install(const std::u32string& str) override
void MoveAllocaIntoEntryBlock(void* allocaInst)
bool NewCleanupNeeded() override
void Optimize(int optimizationLevel, const std::string& bcFilePath, const std::string& optBCFilePath)
void SetLineNumber(int32_t lineNumber) override
void SetTarget(BoundStatement* labeledStatement)
void Visit(BoundAddressOfExpression& boundAddressOfExpression) override
void Visit(BoundAsExpression& boundAsExpression) override
void Visit(BoundAssignmentStatement& boundAssignmentStatement) override
void Visit(BoundBitCast& boundBitCast) override
void Visit(BoundCaseStatement& boundCaseStatement) override
void Visit(BoundClass& boundClass) override
void Visit(BoundClassDelegateCall& boundClassDelegateCall) override
void Visit(BoundClassOrClassDelegateConversionResult& boundClassOrClassDelegateConversionResult) override
void Visit(BoundCompileUnit& boundCompileUnit) override
void Visit(BoundCompoundStatement& boundCompoundStatement) override
void Visit(BoundConjunction& boundConjunction) override
void Visit(BoundConstant& boundConstant) override
void Visit(BoundConstructAndReturnTemporaryExpression& boundConstructAndReturnTemporaryExpression) override
void Visit(BoundConstructExpression& boundConstructExpression) override
void Visit(BoundConstructionStatement& boundConstructionStatement) override
void Visit(BoundConversion& boundConversion) override
void Visit(BoundDefaultStatement& boundDefaultStatement) override
void Visit(BoundDelegateCall& boundDelegateCall) override
void Visit(BoundDereferenceExpression& boundDereferenceExpression) override
void Visit(BoundDisjunction& boundDisjunction) override
void Visit(BoundDoStatement& boundDoStatement) override
void Visit(BoundEmptyStatement& boundEmptyStatement) override
void Visit(BoundEnumConstant& boundEnumConstant) override
void Visit(BoundEnumTypeDefinition& boundEnumTypeDefinition) override
void Visit(BoundExpressionStatement& boundExpressionStatement) override
void Visit(BoundForStatement& boundForStatement) override
void Visit(BoundFunction& boundFunction) override
void Visit(BoundFunctionCall& boundFunctionCall) override
void Visit(BoundFunctionPtr& boundFunctionPtr) override
void Visit(BoundGlobalVariable& boundGlobalVariable) override
void Visit(BoundIfStatement& boundIfStatement) override
void Visit(BoundInitializationStatement& boundInitializationStatement) override
void Visit(BoundIsExpression& boundIsExpression) override
void Visit(BoundLiteral& boundLiteral) override
void Visit(BoundLocalVariable& boundLocalVariable) override
void Visit(BoundMemberVariable& boundMemberVariable) override
void Visit(BoundNamespace& boundNamespace) override
void Visit(BoundParameter& boundParameter) override
void Visit(BoundReferenceToPointerExpression& boundReferenceToPointerExpression) override
void Visit(BoundSequenceStatement& boundSequenceStatement) override
void Visit(BoundSetVmtPtrStatement& boundSetVmtPtrStatement) override
void Visit(BoundSizeOfExpression& boundSizeOfExpression) override
void Visit(BoundSwitchStatement& boundSwitchStatement) override
void Visit(BoundTemporary& boundTemporary) override
void Visit(BoundThrowStatement& boundThrowStatement) override
void Visit(BoundTypeNameExpression& boundTypeNameExpression) override
void Visit(BoundWhileStatement& boundWhileStatement) override
LlvmCodeGenerator& operator=(const LlvmCodeGenerator&) delete

Member Variables

bool basicBlockOpen
std::unordered_map<BoundCompoundStatement*, std::vector<std::unique_ptr<BoundFunctionCall>>> blockDestructionMap
std::vector<BoundCompoundStatement*> blocks
void* breakTarget
BoundCompoundStatement* breakTargetBlock
std::stack<BoundClass*> classStack
void* cleanupBlock
std::vector<std::unique_ptr<Cleanup>> cleanups
BoundCompileUnit* compileUnit
std::set<FunctionSymbol*> compileUnitFunctions
std::string compileUnitId
int compoundLevel
void* continueTarget
BoundCompoundStatement* continueTargetBlock
BoundCompoundStatement* currentBlock
std::unordered_map<IntegralValue, void*, IntegralValueHash>* currentCaseMap
BoundClass* currentClass
BoundFunction* currentFunction
Pad* currentPad
bool debugInfo
void* defaultDest
bool destructorCallGenerated
Emitter* emitter
EmittingContext* emittingContext
void* entryBasicBlock
void* falseBlock
void* function
bool genJumpingBoolCode
void* handlerBlock
std::unordered_map<BoundStatement*, void*> labeledStatementMap
void* lastAlloca
bool lastInstructionWasRet
void* module
bool newCleanupNeeded
std::vector<std::unique_ptr<Pad>> pads
int prevLineNumber
BoundStatement* sequenceSecond
SymbolTable* symbolTable
Module* symbolsModule
void* trueBlock
std::unordered_map<int, void*> utf16stringMap
std::unordered_map<int, void*> utf32stringMap
std::unordered_map<int, void*> utf8stringMap
std::unordered_map<int, void*> uuidMap

Constructor Details

LlvmCodeGenerator Constructor

cmajor::codegenllvm::LlvmCodeGenerator::LlvmCodeGenerator(EmittingContext & emittingContext_)

Definition at line 40 of LlvmCodeGenerator.cpp :
  40 :
  41 cmajor::codegenbase::CodeGenerator(emittingContext_)symbolTable(nullptr)symbolsModule(nullptr)emitter(GetEmitter())emittingContext(&emittingContext_)debugInfo(false)
  42 compileUnit(nullptr)currentClass(nullptr)currentFunction(nullptr)trueBlock(nullptr)falseBlock(nullptr)breakTarget(nullptr)continueTarget(nullptr)handlerBlock(nullptr)
  43 cleanupBlock(nullptr)entryBasicBlock(nullptr)newCleanupNeeded(false)currentPad(nullptr)prevLineNumber(0)destructorCallGenerated(false)lastInstructionWasRet(false)
  44 basicBlockOpen(false)lastAlloca(nullptr)compoundLevel(0)function(nullptr)sequenceSecond(nullptr)currentBlock(nullptr)genJumpingBoolCode(false)breakTargetBlock(nullptr)
  45 continueTargetBlock(nullptr)defaultDest(nullptr)currentCaseMap(nullptr)
  46 {
  47     emitter->SetEmittingDelegate(this);
  48 }


Declaration at line 32 of LlvmCodeGenerator.hpp


LlvmCodeGenerator Constructor

cmajor::codegenllvm::LlvmCodeGenerator::LlvmCodeGenerator(const LlvmCodeGenerator &) delete

Definition at line 33 of LlvmCodeGenerator.hpp


Member Function Details

CleanupBlock Member Function

void * cmajor::codegenllvm::LlvmCodeGenerator::CleanupBlock() override

Definition at line 1568 of LlvmCodeGenerator.cpp :
1569 {
1570     return cleanupBlock;
1571 }


Declaration at line 89 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::ir::EmittingDelegate::CleanupBlock


ClearFlags Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::ClearFlags()

Definition at line 1710 of LlvmCodeGenerator.cpp :
1711 {
1712     destructorCallGenerated = false;
1713     lastInstructionWasRet = false;
1714     basicBlockOpen = false;
1715 }


Declaration at line 105 of LlvmCodeGenerator.hpp


CreateClassDIType Member Function

void * cmajor::codegenllvm::LlvmCodeGenerator::CreateClassDIType(void * classPtr) override

Definition at line 1588 of LlvmCodeGenerator.cpp :
1589 {
1590     ClassTypeSymbol* cls = static_cast<ClassTypeSymbol*>(classPtr);
1591     return cls->CreateDIType(*emitter);
1592 }


Declaration at line 93 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::ir::EmittingDelegate::CreateClassDIType

Calls: cmajor::symbols::ClassTypeSymbol::CreateDIType


CreateExitFunctionCall Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::CreateExitFunctionCall()

Definition at line 1594 of LlvmCodeGenerator.cpp
Declaration at line 94 of LlvmCodeGenerator.hpp

Calls: cmajor::binder::BoundFunction::GetFunctionSymbol , cmajor::ir::Emitter::CreateCall , cmajor::ir::Emitter::CreateCallInst , cmajor::ir::Emitter::GetIrTypeForFunction , cmajor::ir::Emitter::GetIrTypeForVoid , cmajor::ir::Emitter::GetOrInsertFunction , cmajor::ir::Emitter::SetDebugLoc , cmajor::symbols::FunctionSymbol::DontThrow


CurrentPad Member Function

Pad * cmajor::codegenllvm::LlvmCodeGenerator::CurrentPad() override

Definition at line 1583 of LlvmCodeGenerator.cpp :
1584 {
1585     return currentPad;
1586 }


Declaration at line 92 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::ir::EmittingDelegate::CurrentPad


EntryBasicBlock Member Function

void * cmajor::codegenllvm::LlvmCodeGenerator::EntryBasicBlock() const

Definition at line 111 of LlvmCodeGenerator.hpp :
111 { return entryBasicBlock; }


ExitBlocks Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::ExitBlocks(BoundCompoundStatement * targetBlock)

Definition at line 1633 of LlvmCodeGenerator.cpp
Declaration at line 103 of LlvmCodeGenerator.hpp

Calls: cmajor::binder::BoundCompoundStatement::EndSpan , cmajor::binder::BoundCompoundStatement::Statements , cmajor::binder::BoundFunction::Body , cmajor::binder::BoundNode::GetBoundNodeType , cmajor::ir::Emitter::CreateBasicBlock , cmajor::ir::Emitter::CreateBr , cmajor::ir::Emitter::SetCurrentBasicBlock , cmajor::ir::Emitter::SetCurrentDebugLocation

Called by: cmajor::codegenllvm::LlvmCodeGenerator::Visit


GenJumpingBoolCode Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::GenJumpingBoolCode()

Definition at line 1694 of LlvmCodeGenerator.cpp
Declaration at line 104 of LlvmCodeGenerator.hpp

Calls: cmajor::binder::BoundNode::Accept , cmajor::binder::BoundStatement::SetGenerated , cmajor::ir::Emitter::CreateCondBr , cmajor::ir::Emitter::Stack , cmajor::ir::ValueStack::Pop

Called by: cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit


GenerateCode Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::GenerateCode(void * boundCompileUnit) override

Definition at line 50 of LlvmCodeGenerator.cpp :
  51 {
  52     BoundCompileUnit* compileUnit = static_cast<BoundCompileUnit*>(boundCompileUnit);
  53     compileUnit->Accept(*this);
  54 }


Declaration at line 35 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::codegenbase::CodeGenerator::GenerateCode

Calls: cmajor::binder::BoundCompileUnit::Accept


GenerateCodeForCleanups Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::GenerateCodeForCleanups() pure virtual

Definition at line 101 of LlvmCodeGenerator.hpp

Called by: cmajor::codegenllvm::LlvmCodeGenerator::Visit


GenerateEnterFunctionCode Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::GenerateEnterFunctionCode(BoundFunction & boundFunction)

Definition at line 1352 of LlvmCodeGenerator.cpp
Declaration at line 95 of LlvmCodeGenerator.hpp

Calls: cmajor::binder::BoundFunction::EnterCode , cmajor::binder::BoundFunction::GetFunctionSymbol , cmajor::ir::Emitter::CreateAlloca , cmajor::ir::Emitter::SetIrObject , cmajor::symbols::FunctionSymbol::PrevUnwindInfoVar , cmajor::symbols::FunctionSymbol::UnwindInfoVar , cmajor::symbols::TypeSymbol::IrType , cmajor::symbols::VariableSymbol::GetType

Called by: cmajor::codegenllvm::LlvmCodeGenerator::Visit


GenerateExitFunctionCode Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::GenerateExitFunctionCode(BoundFunction & boundFunction)

Definition at line 1370 of LlvmCodeGenerator.cpp :
1371 {
1372     const std::std::vector<std::std::unique_ptr<BoundStatement>>&exitCode=boundFunction.ExitCode();
1373     if (exitCode.empty()) return;
1374     for (const auto& statement : exitCode)
1375     {
1376         statement->Accept(*this);
1377     }
1378 }


Declaration at line 96 of LlvmCodeGenerator.hpp

Calls: cmajor::binder::BoundFunction::ExitCode

Called by: cmajor::codegenllvm::LlvmCodeGenerator::Visit


GenerateGlobalInitFuncion Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::GenerateGlobalInitFuncion(BoundCompileUnit & boundCompileUnit)

Definition at line 1515 of LlvmCodeGenerator.cpp
Declaration at line 99 of LlvmCodeGenerator.hpp

Calls: cmajor::binder::BoundCompileUnit::AllCompileUnitInitFunctionSymbols , cmajor::binder::BoundCompileUnit::GetGlobalInitializationFunctionSymbol , cmajor::ir::Emitter::CreateBasicBlock , cmajor::ir::Emitter::CreateRetVoid , cmajor::ir::Emitter::DIBuilder , cmajor::ir::Emitter::GetOrInsertFunction , cmajor::ir::Emitter::ResetCurrentDebugLocation , cmajor::ir::Emitter::SetCurrentBasicBlock , cmajor::ir::Emitter::SetCurrentDIBuilder , cmajor::ir::Emitter::SetCurrentSourceSpan , cmajor::ir::Emitter::SetFunction , cmajor::ir::Emitter::SetFunctionName , cmajor::symbols::FunctionSymbol::FullName , cmajor::symbols::FunctionSymbol::IrType , cmajor::symbols::Symbol::GetSpan , cmajor::symbols::Symbol::MangledName , cmajor::symbols::Symbol::SourceModuleId

Called by: cmajor::codegenllvm::LlvmCodeGenerator::Visit


GenerateInitCompileUnitFunction Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::GenerateInitCompileUnitFunction(BoundCompileUnit & boundCompileUnit)

Definition at line 1455 of LlvmCodeGenerator.cpp
Declaration at line 98 of LlvmCodeGenerator.hpp

Calls: cmajor::binder::BoundCompileUnit::GetCompileUnitUnwindInfoVarSymbol , cmajor::binder::BoundCompileUnit::GetInitCompileUnitFunctionSymbol , cmajor::binder::BoundCompileUnit::GetInitUnwindInfoDelegateType , cmajor::binder::BoundCompileUnit::GetInitUnwindInfoFunctionSymbol , cmajor::binder::BoundCompileUnit::GetPushCompileUnitUnwindInfoInitFunctionSymbol , cmajor::binder::BoundExpression::GetType , cmajor::ir::Emitter::CreateBasicBlock , cmajor::ir::Emitter::CreateRetVoid , cmajor::ir::Emitter::DIBuilder , cmajor::ir::Emitter::GetOrInsertFunction , cmajor::ir::Emitter::ResetCurrentDebugLocation , cmajor::ir::Emitter::SetCurrentBasicBlock , cmajor::ir::Emitter::SetCurrentDIBuilder , cmajor::ir::Emitter::SetCurrentSourceSpan , cmajor::ir::Emitter::SetFunction , cmajor::ir::Emitter::SetFunctionName , cmajor::symbols::FunctionSymbol::FullName , cmajor::symbols::FunctionSymbol::IrType , cmajor::symbols::Symbol::GetSpan , cmajor::symbols::Symbol::MangledName , cmajor::symbols::Symbol::SourceModuleId , cmajor::symbols::TypeSymbol::AddPointer

Called by: cmajor::codegenllvm::LlvmCodeGenerator::Visit


GenerateInitUnwindInfoFunction Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::GenerateInitUnwindInfoFunction(BoundCompileUnit & boundCompileUnit)

Definition at line 1380 of LlvmCodeGenerator.cpp
Declaration at line 97 of LlvmCodeGenerator.hpp

Calls: cmajor::binder::BoundCompileUnit::GetInitUnwindInfoFunctionSymbol , cmajor::binder::BoundCompileUnit::GetSystemRuntimeAddCompileUnitFunctionSymbol , cmajor::codegenllvm::LlvmCodeGenerator::GetSourceFilePath , cmajor::codegenllvm::LlvmCodeGenerator::Install , cmajor::ir::Emitter::CreateBasicBlock , cmajor::ir::Emitter::CreateRetVoid , cmajor::ir::Emitter::DIBuilder , cmajor::ir::Emitter::GetOrInsertFunction , cmajor::ir::Emitter::SetCurrentBasicBlock , cmajor::ir::Emitter::SetCurrentDIBuilder , cmajor::ir::Emitter::SetCurrentSourceSpan , cmajor::ir::Emitter::SetFunction , cmajor::ir::Emitter::SetFunctionName , cmajor::symbols::FunctionSymbol::FullName , cmajor::symbols::FunctionSymbol::IrType , cmajor::symbols::Symbol::GetSpan , cmajor::symbols::Symbol::MangledName , cmajor::symbols::Symbol::SourceModuleId , cmajor::symbols::SymbolTable::GetTypeByName , cmajor::symbols::TypeSymbol::AddConst , cmajor::symbols::TypeSymbol::AddPointer

Called by: cmajor::codegenllvm::LlvmCodeGenerator::Visit


GetGlobalStringPtr Member Function

void * cmajor::codegenllvm::LlvmCodeGenerator::GetGlobalStringPtr(int stringId) override

Definition at line 1234 of LlvmCodeGenerator.cpp
Declaration at line 83 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::ir::EmittingDelegate::GetGlobalStringPtr

Calls: cmajor::binder::BoundCompileUnit::GetUtf8String , cmajor::ir::Emitter::CreateGlobalStringPtr


GetGlobalUStringConstant Member Function

void * cmajor::codegenllvm::LlvmCodeGenerator::GetGlobalUStringConstant(int stringId) override

Definition at line 1278 of LlvmCodeGenerator.cpp
Declaration at line 85 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::ir::EmittingDelegate::GetGlobalUStringConstant

Calls: cmajor::binder::BoundCompileUnit::GetUtf32String , cmajor::ir::Emitter::CreateIrValueForConstantArray , cmajor::ir::Emitter::CreateIrValueForUInt , cmajor::ir::Emitter::GetIrTypeForArrayType , cmajor::ir::Emitter::GetIrTypeForUInt , cmajor::ir::Emitter::GetOrInsertGlobal , cmajor::ir::Emitter::SetInitializer , cmajor::ir::Emitter::SetPrivateLinkage


GetGlobalUuidConstant Member Function

void * cmajor::codegenllvm::LlvmCodeGenerator::GetGlobalUuidConstant(int uuidId) override

Definition at line 1307 of LlvmCodeGenerator.cpp
Declaration at line 86 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::ir::EmittingDelegate::GetGlobalUuidConstant

Calls: cmajor::binder::BoundCompileUnit::GetUuid , cmajor::ir::Emitter::CreateIrValueForByte , cmajor::ir::Emitter::CreateIrValueForConstantArray , cmajor::ir::Emitter::GetIrTypeForArrayType , cmajor::ir::Emitter::GetIrTypeForByte , cmajor::ir::Emitter::GetOrInsertGlobal , cmajor::ir::Emitter::SetInitializer , cmajor::ir::Emitter::SetPrivateLinkage


GetGlobalWStringConstant Member Function

void * cmajor::codegenllvm::LlvmCodeGenerator::GetGlobalWStringConstant(int stringId) override

Definition at line 1249 of LlvmCodeGenerator.cpp
Declaration at line 84 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::ir::EmittingDelegate::GetGlobalWStringConstant

Calls: cmajor::binder::BoundCompileUnit::GetUtf16String , cmajor::ir::Emitter::CreateIrValueForConstantArray , cmajor::ir::Emitter::CreateIrValueForUShort , cmajor::ir::Emitter::GetIrTypeForArrayType , cmajor::ir::Emitter::GetIrTypeForUShort , cmajor::ir::Emitter::GetOrInsertGlobal , cmajor::ir::Emitter::SetInitializer , cmajor::ir::Emitter::SetPrivateLinkage


GetPersonalityFunction Member Function

void * cmajor::codegenllvm::LlvmCodeGenerator::GetPersonalityFunction() const pure virtual

Definition at line 100 of LlvmCodeGenerator.hpp

Called by: cmajor::codegenllvm::LlvmCodeGenerator::Visit


GetSourceFilePath Member Function

std::string cmajor::codegenllvm::LlvmCodeGenerator::GetSourceFilePath(const Span& span, const boost::uuids::uuid& moduleId) override

Definition at line 1578 of LlvmCodeGenerator.cpp :
1579 {
1580     return cmajor::symbols::GetSourceFilePath(span.fileIndexmoduleId);
1581 }


Declaration at line 91 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::ir::EmittingDelegate::GetSourceFilePath

Called by: cmajor::codegenllvm::LlvmCodeGenerator::GenerateInitUnwindInfoFunction


HandlerBlock Member Function

void * cmajor::codegenllvm::LlvmCodeGenerator::HandlerBlock() override

Definition at line 1563 of LlvmCodeGenerator.cpp :
1564 {
1565     return handlerBlock;
1566 }


Declaration at line 88 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::ir::EmittingDelegate::HandlerBlock


Install Member Function

int cmajor::codegenllvm::LlvmCodeGenerator::Install(const std::string& str) override

Definition at line 1717 of LlvmCodeGenerator.cpp :
1718 {
1719     return compileUnit->Install(str);
1720 }


Declaration at line 106 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::ir::EmittingDelegate::Install

Calls: cmajor::binder::BoundCompileUnit::Install

Called by: cmajor::codegenllvm::LlvmCodeGenerator::GenerateInitUnwindInfoFunction


Install Member Function

int cmajor::codegenllvm::LlvmCodeGenerator::Install(const std::u16string& str) override

Definition at line 1722 of LlvmCodeGenerator.cpp :
1723 {
1724     return compileUnit->Install(str);
1725 }


Declaration at line 107 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::ir::EmittingDelegate::Install

Calls: cmajor::binder::BoundCompileUnit::Install


Install Member Function

int cmajor::codegenllvm::LlvmCodeGenerator::Install(const std::u32string& str) override

Definition at line 1727 of LlvmCodeGenerator.cpp :
1728 {
1729     return compileUnit->Install(str);
1730 }


Declaration at line 108 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::ir::EmittingDelegate::Install

Calls: cmajor::binder::BoundCompileUnit::Install


MoveAllocaIntoEntryBlock Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::MoveAllocaIntoEntryBlock(void * allocaInst)

Definition at line 1732 of LlvmCodeGenerator.cpp :
1733 {
1734     emitter->MoveAllocaIntoBasicBlock(allocaInstlastAllocaentryBasicBlock);
1735     lastAlloca = allocaInst;
1736 }


Declaration at line 109 of LlvmCodeGenerator.hpp

Calls: cmajor::ir::Emitter::MoveAllocaIntoBasicBlock


NewCleanupNeeded Member Function

bool cmajor::codegenllvm::LlvmCodeGenerator::NewCleanupNeeded() override

Definition at line 1573 of LlvmCodeGenerator.cpp :
1574 {
1575     return newCleanupNeeded;
1576 }


Declaration at line 90 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::ir::EmittingDelegate::NewCleanupNeeded


Optimize Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Optimize(int optimizationLevel, const std::string& bcFilePath, const std::string& optBCFilePath)

Definition at line 1738 of LlvmCodeGenerator.cpp :
1739 {
1740     emitter->Optimize(bcFilePathoptBCFilePath"-O" + std::to_string(optimizationLevel));
1741 }


Declaration at line 110 of LlvmCodeGenerator.hpp

Calls: cmajor::ir::Emitter::Optimize

Called by: cmajor::codegenllvm::LlvmCodeGenerator::Visit


SetLineNumber Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::SetLineNumber(int32_t lineNumber) override

Definition at line 1335 of LlvmCodeGenerator.cpp
Declaration at line 87 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::ir::EmittingDelegate::SetLineNumber

Calls: cmajor::binder::BoundFunction::GetFunctionSymbol , cmajor::binder::BoundFunction::GetLineCode , cmajor::binder::BoundNode::Accept , cmajor::ir::Emitter::BeginSubstituteLineNumber , cmajor::ir::Emitter::EndSubstituteLineNumber , cmajor::symbols::FunctionSymbol::DontThrow

Called by: cmajor::codegenllvm::LlvmCodeGenerator::Visit


SetTarget Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::SetTarget(BoundStatement * labeledStatement)

Definition at line 1617 of LlvmCodeGenerator.cpp
Declaration at line 102 of LlvmCodeGenerator.hpp

Calls: cmajor::binder::BoundNode::GetSpan , cmajor::binder::BoundNode::ModuleId , cmajor::binder::BoundStatement::Label , cmajor::ir::Emitter::CreateBr , cmajor::ir::Emitter::SetCurrentBasicBlock

Called by: cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit , cmajor::codegenllvm::LlvmCodeGenerator::Visit


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundAddressOfExpression & boundAddressOfExpression) override

Definition at line 1110 of LlvmCodeGenerator.cpp :
1111 {
1112     boundAddressOfExpression.Load(*emitterOperationFlags::none);
1113 }


Declaration at line 65 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundAddressOfExpression::Load


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundAsExpression & boundAsExpression) override

Definition at line 1174 of LlvmCodeGenerator.cpp :
1175 {
1176     boundAsExpression.Load(*emitterOperationFlags::none);
1177 }


Declaration at line 76 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundAsExpression::Load


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundAssignmentStatement & boundAssignmentStatement) override

Definition at line 974 of LlvmCodeGenerator.cpp :
 975 {
 976     destructorCallGenerated = false;
 977     lastInstructionWasRet = false;
 978     basicBlockOpen = false;
 979     SetTarget(&boundAssignmentStatement);
 980     boundAssignmentStatement.AssignmentCall()->Accept(*this);
 981 }


Declaration at line 51 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundAssignmentStatement::AssignmentCall , cmajor::binder::BoundFunctionCall::Accept , cmajor::codegenllvm::LlvmCodeGenerator::SetTarget


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundBitCast & boundBitCast) override

Definition at line 1184 of LlvmCodeGenerator.cpp :
1185 {
1186     boundBitCast.Load(*emitterOperationFlags::none);
1187 }


Declaration at line 78 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundBitCast::Load


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundCaseStatement & boundCaseStatement) override

Definition at line 880 of LlvmCodeGenerator.cpp
Declaration at line 48 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundCaseStatement::CaseValues , cmajor::binder::BoundCaseStatement::CompoundStatement , cmajor::binder::BoundCompoundStatement::Accept , cmajor::binder::BoundNode::GetSpan , cmajor::binder::BoundNode::ModuleId , cmajor::codegenllvm::LlvmCodeGenerator::SetTarget , cmajor::ir::Emitter::SetCurrentBasicBlock


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundClass & boundClass) override

Definition at line 172 of LlvmCodeGenerator.cpp
Declaration at line 38 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundClass::ContainsSourceFunctions , cmajor::binder::BoundClass::GetClassTypeSymbol , cmajor::binder::BoundClass::Members , cmajor::binder::BoundNode::Accept , cmajor::ir::Emitter::CreateDITypeForClassType , cmajor::ir::Emitter::CreateIrDIForwardDeclaration , cmajor::ir::Emitter::DIBuilder , cmajor::ir::Emitter::GetDITypeByTypeId , cmajor::ir::Emitter::GetOffsetInBits , cmajor::ir::Emitter::MapClassPtr , cmajor::ir::Emitter::MapFwdDeclaration , cmajor::ir::Emitter::PopScope , cmajor::ir::Emitter::PushScope , cmajor::ir::Emitter::ResetCurrentDebugLocation , cmajor::ir::Emitter::SetCurrentDIBuilder , cmajor::ir::Emitter::SetDITypeByTypeId , cmajor::symbols::ClassTemplateSpecializationSymbol::GetClassTemplate , cmajor::symbols::ClassTypeSymbol::BaseClass , cmajor::symbols::ClassTypeSymbol::CreateDIForwardDeclaration , cmajor::symbols::ClassTypeSymbol::IrType , cmajor::symbols::ClassTypeSymbol::IsPolymorphic , cmajor::symbols::ClassTypeSymbol::MemberVariables , cmajor::symbols::ClassTypeSymbol::VmtPtrHolderClass , cmajor::symbols::MemberVariableSymbol::GetDIMemberType , cmajor::symbols::MemberVariableSymbol::LayoutIndex , cmajor::symbols::Symbol::FullName , cmajor::symbols::Symbol::GetSpan , cmajor::symbols::Symbol::GetSymbolType , cmajor::symbols::Symbol::MangledName , cmajor::symbols::Symbol::Name , cmajor::symbols::Symbol::SourceModuleId , cmajor::symbols::TypeSymbol::GetDIType , cmajor::symbols::TypeSymbol::TypeId


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundClassDelegateCall & boundClassDelegateCall) override

Definition at line 1138 of LlvmCodeGenerator.cpp :
1139 {
1140     boundClassDelegateCall.Load(*emitterOperationFlags::none);
1141     GenJumpingBoolCode();
1142 }


Declaration at line 70 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundClassDelegateCall::Load , cmajor::codegenllvm::LlvmCodeGenerator::GenJumpingBoolCode


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundClassOrClassDelegateConversionResult & boundClassOrClassDelegateConversionResult) override

Definition at line 1162 of LlvmCodeGenerator.cpp :
1163 {
1164     boundClassOrClassDelegateConversionResult.Load(*emitterOperationFlags::none);
1165     GenJumpingBoolCode();
1166 }


Declaration at line 74 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundClassOrClassDelegateConversionResult::Load , cmajor::codegenllvm::LlvmCodeGenerator::GenJumpingBoolCode


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundCompileUnit & boundCompileUnit) override

Definition at line 56 of LlvmCodeGenerator.cpp
Declaration at line 36 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundCompileUnit::BCFilePath , cmajor::binder::BoundCompileUnit::BoundNodes , cmajor::binder::BoundCompileUnit::GetCompileUnitNode , cmajor::binder::BoundCompileUnit::GetConstantArrayRepository , cmajor::binder::BoundCompileUnit::GetConstantStructureRepository , cmajor::binder::BoundCompileUnit::GetGlobalInitializationFunctionSymbol , cmajor::binder::BoundCompileUnit::GetModule , cmajor::binder::BoundCompileUnit::GetSymbolTable , cmajor::binder::BoundCompileUnit::Id , cmajor::binder::BoundCompileUnit::LLFilePath , cmajor::binder::BoundCompileUnit::ObjectFilePath , cmajor::binder::BoundCompileUnit::OptBCFilePath , cmajor::binder::BoundCompileUnit::OptLLFilePath , cmajor::binder::BoundNode::Accept , cmajor::binder::ConstantArrayRepository::ConstantArrays , cmajor::binder::ConstantStructureRepository::ConstantStructures , cmajor::codegenllvm::LlvmCodeGenerator::GenerateGlobalInitFuncion , cmajor::codegenllvm::LlvmCodeGenerator::GenerateInitCompileUnitFunction , cmajor::codegenllvm::LlvmCodeGenerator::GenerateInitUnwindInfoFunction , cmajor::codegenllvm::LlvmCodeGenerator::Optimize , cmajor::ir::Emitter::Compile , cmajor::ir::Emitter::Disassemble , cmajor::ir::Emitter::EmitIrFile , cmajor::ir::Emitter::EmitIrText , cmajor::ir::Emitter::EmitObjectCodeFile , cmajor::ir::Emitter::EndDebugInfo , cmajor::ir::Emitter::FinalizeDebugInfo , cmajor::ir::Emitter::ResetCurrentDebugLocation , cmajor::ir::Emitter::SetCompileUnitId , cmajor::ir::Emitter::SetDataLayout , cmajor::ir::Emitter::SetSourceFileName , cmajor::ir::Emitter::SetTargetTriple , cmajor::ir::Emitter::StartDebugInfo , cmajor::ir::Emitter::VerifyModule , cmajor::ir::EmittingContext::DataLayout , cmajor::ir::EmittingContext::TargetTriple , cmajor::symbols::ConstantSymbol::ArrayIrObject , cmajor::symbols::ConstantSymbol::StructureIrObject , cmajor::symbols::Module::AddCompileUnitId , cmajor::symbols::Module::IsCore


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundCompoundStatement & boundCompoundStatement) override

Definition at line 620 of LlvmCodeGenerator.cpp
Declaration at line 42 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundCompoundStatement::Statements , cmajor::binder::BoundNode::Accept , cmajor::binder::BoundNode::GetSpan , cmajor::binder::BoundNode::ModuleId , cmajor::codegenllvm::LlvmCodeGenerator::ExitBlocks , cmajor::codegenllvm::LlvmCodeGenerator::SetLineNumber , cmajor::codegenllvm::LlvmCodeGenerator::SetTarget , cmajor::ir::Emitter::CreateLexicalBlock , cmajor::ir::Emitter::PopScope , cmajor::ir::Emitter::SetCurrentDebugLocation


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundConjunction & boundConjunction) override

Definition at line 1211 of LlvmCodeGenerator.cpp
Declaration at line 81 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundConjunction::Left , cmajor::binder::BoundConjunction::Right , cmajor::binder::BoundExpression::DestroyTemporaries , cmajor::binder::BoundNode::Accept , cmajor::ir::Emitter::CreateBasicBlock , cmajor::ir::Emitter::SetCurrentBasicBlock


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundConstant & boundConstant) override

Definition at line 1081 of LlvmCodeGenerator.cpp :
1082 {
1083     boundConstant.Load(*emitterOperationFlags::none);
1084     GenJumpingBoolCode();
1085 }


Declaration at line 60 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundConstant::Load , cmajor::codegenllvm::LlvmCodeGenerator::GenJumpingBoolCode


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundConstructAndReturnTemporaryExpression & boundConstructAndReturnTemporaryExpression) override

Definition at line 1156 of LlvmCodeGenerator.cpp :
1157 {
1158     boundConstructAndReturnTemporaryExpression.Load(*emitterOperationFlags::none);
1159     GenJumpingBoolCode();
1160 }


Declaration at line 73 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundConstructAndReturnTemporaryExpression::Load , cmajor::codegenllvm::LlvmCodeGenerator::GenJumpingBoolCode


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundConstructExpression & boundConstructExpression) override

Definition at line 1150 of LlvmCodeGenerator.cpp :
1151 {
1152     boundConstructExpression.Load(*emitterOperationFlags::none);
1153     GenJumpingBoolCode();
1154 }


Declaration at line 72 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundConstructExpression::Load , cmajor::codegenllvm::LlvmCodeGenerator::GenJumpingBoolCode


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundConstructionStatement & boundConstructionStatement) override

Definition at line 930 of LlvmCodeGenerator.cpp
Declaration at line 50 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundCompoundStatement::EndSpan , cmajor::binder::BoundConstructionStatement::ConstructorCall , cmajor::binder::BoundFunctionCall::Accept , cmajor::binder::BoundFunctionCall::Arguments , cmajor::binder::BoundFunctionCall::GetFunctionSymbol , cmajor::binder::BoundNode::GetSpan , cmajor::binder::BoundNode::ModuleId , cmajor::codegenllvm::LlvmCodeGenerator::SetTarget , cmajor::symbols::ClassTypeSymbol::Destructor , cmajor::symbols::FunctionSymbol::IsBasicTypeOperation , cmajor::symbols::Symbol::IsClassTypeSymbol


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundConversion & boundConversion) override

Definition at line 1144 of LlvmCodeGenerator.cpp :
1145 {
1146     boundConversion.Load(*emitterOperationFlags::none);
1147     GenJumpingBoolCode();
1148 }


Declaration at line 71 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundConversion::Load , cmajor::codegenllvm::LlvmCodeGenerator::GenJumpingBoolCode


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundDefaultStatement & boundDefaultStatement) override

Definition at line 910 of LlvmCodeGenerator.cpp
Declaration at line 49 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundCompoundStatement::Accept , cmajor::binder::BoundDefaultStatement::CompoundStatement , cmajor::binder::BoundNode::GetSpan , cmajor::binder::BoundNode::ModuleId , cmajor::codegenllvm::LlvmCodeGenerator::SetTarget , cmajor::ir::Emitter::SetCurrentBasicBlock


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundDelegateCall & boundDelegateCall) override

Definition at line 1132 of LlvmCodeGenerator.cpp :
1133 {
1134     boundDelegateCall.Load(*emitterOperationFlags::none);
1135     GenJumpingBoolCode();
1136 }


Declaration at line 69 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundDelegateCall::Load , cmajor::codegenllvm::LlvmCodeGenerator::GenJumpingBoolCode


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundDereferenceExpression & boundDereferenceExpression) override

Definition at line 1115 of LlvmCodeGenerator.cpp :
1116 {
1117     boundDereferenceExpression.Load(*emitterOperationFlags::none);
1118     GenJumpingBoolCode();
1119 }


Declaration at line 66 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundDereferenceExpression::Load , cmajor::codegenllvm::LlvmCodeGenerator::GenJumpingBoolCode


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundDisjunction & boundDisjunction) override

Definition at line 1194 of LlvmCodeGenerator.cpp
Declaration at line 80 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundDisjunction::Left , cmajor::binder::BoundDisjunction::Right , cmajor::binder::BoundExpression::DestroyTemporaries , cmajor::binder::BoundNode::Accept , cmajor::ir::Emitter::CreateBasicBlock , cmajor::ir::Emitter::SetCurrentBasicBlock


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundDoStatement & boundDoStatement) override

Definition at line 730 of LlvmCodeGenerator.cpp
Declaration at line 45 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundDoStatement::Condition , cmajor::binder::BoundDoStatement::Statement , cmajor::binder::BoundNode::Accept , cmajor::codegenllvm::LlvmCodeGenerator::SetTarget , cmajor::ir::Emitter::CreateBasicBlock , cmajor::ir::Emitter::CreateBr , cmajor::ir::Emitter::SetCurrentBasicBlock


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundEmptyStatement & boundEmptyStatement) override

Definition at line 1009 of LlvmCodeGenerator.cpp
Declaration at line 54 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundNode::GetSpan , cmajor::codegenllvm::LlvmCodeGenerator::SetTarget , cmajor::ir::Emitter::CreateCall , cmajor::ir::Emitter::CreateCallInst , cmajor::ir::Emitter::GetIrTypeForFunction , cmajor::ir::Emitter::GetIrTypeForVoid , cmajor::ir::Emitter::GetOrInsertFunction


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundEnumConstant & boundEnumConstant) override

Definition at line 1087 of LlvmCodeGenerator.cpp :
1088 {
1089     boundEnumConstant.Load(*emitterOperationFlags::none);
1090     GenJumpingBoolCode();
1091 }


Declaration at line 61 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundEnumConstant::Load , cmajor::codegenllvm::LlvmCodeGenerator::GenJumpingBoolCode


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundEnumTypeDefinition & boundEnumTypeDefinition) override

Definition at line 247 of LlvmCodeGenerator.cpp
Declaration at line 39 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundEnumTypeDefinition::GetEnumTypeSymbol , cmajor::ir::Emitter::CreateDITypeForEnumConstant , cmajor::ir::Emitter::CreateDITypeForEnumType , cmajor::ir::Emitter::SetDITypeByTypeId , cmajor::symbols::EnumConstantSymbol::GetValue , cmajor::symbols::EnumTypeSymbol::GetEnumConstants , cmajor::symbols::EnumTypeSymbol::UnderlyingType , cmajor::symbols::LongValue::GetValue , cmajor::symbols::Symbol::FullName , cmajor::symbols::Symbol::GetSpan , cmajor::symbols::Symbol::MangledName , cmajor::symbols::Symbol::Name , cmajor::symbols::Symbol::SourceModuleId , cmajor::symbols::SymbolTable::GetTypeByName , cmajor::symbols::TypeSymbol::AlignmentInBits , cmajor::symbols::TypeSymbol::GetDIType , cmajor::symbols::TypeSymbol::IsUnsignedType , cmajor::symbols::TypeSymbol::SizeInBits , cmajor::symbols::TypeSymbol::TypeId , cmajor::symbols::ULongValue::GetValue , cmajor::symbols::Value::As


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundExpressionStatement & boundExpressionStatement) override

Definition at line 983 of LlvmCodeGenerator.cpp
Declaration at line 52 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundExpression::HasValue , cmajor::binder::BoundExpressionStatement::Expression , cmajor::binder::BoundNode::Accept , cmajor::codegenllvm::LlvmCodeGenerator::SetTarget , cmajor::ir::Emitter::Stack , cmajor::ir::ValueStack::Pop


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundForStatement & boundForStatement) override

Definition at line 769 of LlvmCodeGenerator.cpp
Declaration at line 46 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundForStatement::ActionS , cmajor::binder::BoundForStatement::Condition , cmajor::binder::BoundForStatement::InitS , cmajor::binder::BoundForStatement::LoopS , cmajor::binder::BoundNode::Accept , cmajor::codegenllvm::LlvmCodeGenerator::SetTarget , cmajor::ir::Emitter::CreateBasicBlock , cmajor::ir::Emitter::CreateBr , cmajor::ir::Emitter::SetCurrentBasicBlock


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundFunction & boundFunction) override

Definition at line 285 of LlvmCodeGenerator.cpp
Declaration at line 40 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundClass::GetClassTypeSymbol , cmajor::binder::BoundClass::IsInlineFunctionContainer , cmajor::binder::BoundCompileUnit::CodeGenerated , cmajor::binder::BoundCompileUnit::GetCopyConstructorFor , cmajor::binder::BoundCompileUnit::SetCodeGenerated , cmajor::binder::BoundCompoundStatement::Accept , cmajor::binder::BoundCompoundStatement::Statements , cmajor::binder::BoundFunction::Body , cmajor::binder::BoundFunction::GetFunctionSymbol , cmajor::binder::BoundFunction::LabeledStatements , cmajor::binder::BoundNode::GetBoundNodeType , cmajor::binder::BoundNode::GetSpan , cmajor::binder::BoundNode::ModuleId , cmajor::binder::BoundStatement::Label , cmajor::codegenllvm::LlvmCodeGenerator::GenerateCodeForCleanups , cmajor::codegenllvm::LlvmCodeGenerator::GenerateEnterFunctionCode , cmajor::codegenllvm::LlvmCodeGenerator::GenerateExitFunctionCode , cmajor::codegenllvm::LlvmCodeGenerator::GetPersonalityFunction , cmajor::ir::Emitter::AddInlineFunctionAttribute , cmajor::ir::Emitter::AddNoUnwindAttribute , cmajor::ir::Emitter::AddUWTableAttribute , cmajor::ir::Emitter::CreateAlloca , cmajor::ir::Emitter::CreateBasicBlock , cmajor::ir::Emitter::CreateCall , cmajor::ir::Emitter::CreateDIAutoVariable , cmajor::ir::Emitter::CreateDIFunction , cmajor::ir::Emitter::CreateDIMethod , cmajor::ir::Emitter::CreateDIParameterVariable , cmajor::ir::Emitter::CreateRet , cmajor::ir::Emitter::CreateRetVoid , cmajor::ir::Emitter::CreateStore , cmajor::ir::Emitter::CreateSubroutineType , cmajor::ir::Emitter::DIBuilder , cmajor::ir::Emitter::GetFunctionArgument , cmajor::ir::Emitter::GetFunctionFlags , cmajor::ir::Emitter::GetOrInsertAnyFunctionComdat , cmajor::ir::Emitter::GetOrInsertFunction , cmajor::ir::Emitter::GetPureVirtualVirtuality , cmajor::ir::Emitter::GetVirtualVirtuality , cmajor::ir::Emitter::IsStaticObjectCreated , cmajor::ir::Emitter::IsVmtObjectCreated , cmajor::ir::Emitter::PopScope , cmajor::ir::Emitter::PushScope , cmajor::ir::Emitter::ResetCurrentDebugLocation , cmajor::ir::Emitter::SetCurrentBasicBlock , cmajor::ir::Emitter::SetCurrentDIBuilder , cmajor::ir::Emitter::SetCurrentDebugLocation , cmajor::ir::Emitter::SetDISubprogram , cmajor::ir::Emitter::SetFunction , cmajor::ir::Emitter::SetFunctionCallConventionToStdCall , cmajor::ir::Emitter::SetFunctionLinkage , cmajor::ir::Emitter::SetInPrologue , cmajor::ir::Emitter::SetIrObject , cmajor::ir::Emitter::SetPersonalityFunction , cmajor::ir::GenObject::SetType , cmajor::symbols::ClassDelegateTypeSymbol::CopyConstructor , cmajor::symbols::ClassTypeSymbol::CopyConstructor , cmajor::symbols::ClassTypeSymbol::IsPolymorphic , cmajor::symbols::ClassTypeSymbol::StaticObject , cmajor::symbols::ClassTypeSymbol::VmtObject , cmajor::symbols::ClassTypeSymbol::VmtPtrHolderClass , cmajor::symbols::FunctionSymbol::DontThrow , cmajor::symbols::FunctionSymbol::FunctionId , cmajor::symbols::FunctionSymbol::GenerateCall , cmajor::symbols::FunctionSymbol::GetFlag , cmajor::symbols::FunctionSymbol::HasLinkOnceOdrLinkage , cmajor::symbols::FunctionSymbol::HasSource , cmajor::symbols::FunctionSymbol::HasTry , cmajor::symbols::FunctionSymbol::IrType , cmajor::symbols::FunctionSymbol::IsAbstract , cmajor::symbols::FunctionSymbol::IsConstructorDestructorOrNonstaticMemberFunction , cmajor::symbols::FunctionSymbol::IsExplicit , cmajor::symbols::FunctionSymbol::IsGeneratedFunction , cmajor::symbols::FunctionSymbol::IsInline , cmajor::symbols::FunctionSymbol::IsVirtualAbstractOrOverride , cmajor::symbols::FunctionSymbol::LocalVariables , cmajor::symbols::FunctionSymbol::Parameters , cmajor::symbols::FunctionSymbol::ReturnParam , cmajor::symbols::FunctionSymbol::ReturnType , cmajor::symbols::FunctionSymbol::ReturnsClassInterfaceOrClassDelegateByValue , cmajor::symbols::FunctionSymbol::SetLinkOnceOdrLinkage , cmajor::symbols::FunctionSymbol::VmtIndex , cmajor::symbols::InterfaceTypeSymbol::CopyConstructor , cmajor::symbols::Symbol::Access , cmajor::symbols::Symbol::GetSpan , cmajor::symbols::Symbol::GetSymbolType , cmajor::symbols::Symbol::IrObject , cmajor::symbols::Symbol::IsClassTypeSymbol , cmajor::symbols::Symbol::IsStatic , cmajor::symbols::Symbol::MangledName , cmajor::symbols::Symbol::Name , cmajor::symbols::Symbol::Parent , cmajor::symbols::Symbol::SourceModuleId , cmajor::symbols::SymbolTable::GetTypeByName , cmajor::symbols::TypeSymbol::AddPointer , cmajor::symbols::TypeSymbol::CreateDefaultIrValue , cmajor::symbols::TypeSymbol::GetDIType , cmajor::symbols::TypeSymbol::IrType , cmajor::symbols::TypeSymbol::TypeId , cmajor::symbols::VariableSymbol::GetType


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundFunctionCall & boundFunctionCall) override

Definition at line 1126 of LlvmCodeGenerator.cpp :
1127 {
1128     boundFunctionCall.Load(*emitterOperationFlags::none);
1129     GenJumpingBoolCode();
1130 }


Declaration at line 68 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundFunctionCall::Load , cmajor::codegenllvm::LlvmCodeGenerator::GenJumpingBoolCode


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundFunctionPtr & boundFunctionPtr) override

Definition at line 1189 of LlvmCodeGenerator.cpp :
1190 {
1191     boundFunctionPtr.Load(*emitterOperationFlags::none);
1192 }


Declaration at line 79 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundFunctionPtr::Load


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundGlobalVariable & boundGlobalVariable) override

Definition at line 1228 of LlvmCodeGenerator.cpp :
1229 {
1230     GlobalVariableSymbol* globalVariableSymbol = boundGlobalVariable.GetGlobalVariableSymbol();
1231     globalVariableSymbol->CreateIrObject(*emitter);
1232 }


Declaration at line 82 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundGlobalVariable::GetGlobalVariableSymbol , cmajor::symbols::GlobalVariableSymbol::CreateIrObject


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundIfStatement & boundIfStatement) override

Definition at line 656 of LlvmCodeGenerator.cpp
Declaration at line 43 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundIfStatement::Condition , cmajor::binder::BoundIfStatement::ElseS , cmajor::binder::BoundIfStatement::ThenS , cmajor::binder::BoundNode::Accept , cmajor::codegenllvm::LlvmCodeGenerator::SetTarget , cmajor::ir::Emitter::CreateBasicBlock , cmajor::ir::Emitter::CreateBr , cmajor::ir::Emitter::SetCurrentBasicBlock


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundInitializationStatement & boundInitializationStatement) override

Definition at line 996 of LlvmCodeGenerator.cpp
Declaration at line 53 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundExpression::HasValue , cmajor::binder::BoundInitializationStatement::InitializationExpression , cmajor::binder::BoundNode::Accept , cmajor::codegenllvm::LlvmCodeGenerator::SetTarget , cmajor::ir::Emitter::Stack , cmajor::ir::ValueStack::Pop


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundIsExpression & boundIsExpression) override

Definition at line 1168 of LlvmCodeGenerator.cpp :
1169 {
1170     boundIsExpression.Load(*emitterOperationFlags::none);
1171     GenJumpingBoolCode();
1172 }


Declaration at line 75 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundIsExpression::Load , cmajor::codegenllvm::LlvmCodeGenerator::GenJumpingBoolCode


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundLiteral & boundLiteral) override

Definition at line 1093 of LlvmCodeGenerator.cpp :
1094 {
1095     boundLiteral.Load(*emitterOperationFlags::none);
1096     GenJumpingBoolCode();
1097 }


Declaration at line 62 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundLiteral::Load , cmajor::codegenllvm::LlvmCodeGenerator::GenJumpingBoolCode


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundLocalVariable & boundLocalVariable) override

Definition at line 1069 of LlvmCodeGenerator.cpp :
1070 {
1071     boundLocalVariable.Load(*emitterOperationFlags::none);
1072     GenJumpingBoolCode();
1073 }


Declaration at line 58 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundLocalVariable::Load , cmajor::codegenllvm::LlvmCodeGenerator::GenJumpingBoolCode


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundMemberVariable & boundMemberVariable) override

Definition at line 1075 of LlvmCodeGenerator.cpp :
1076 {
1077     boundMemberVariable.Load(*emitterOperationFlags::none);
1078     GenJumpingBoolCode();
1079 }


Declaration at line 59 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundMemberVariable::Load , cmajor::codegenllvm::LlvmCodeGenerator::GenJumpingBoolCode


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundNamespace & boundNamespace) override

Definition at line 130 of LlvmCodeGenerator.cpp
Declaration at line 37 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundNamespace::GetNamespaceNode , cmajor::binder::BoundNamespace::Members , cmajor::binder::BoundNode::Accept , cmajor::binder::BoundNode::GetSpan , cmajor::binder::BoundNode::ModuleId , cmajor::ir::Emitter::CreateDebugInfoForNamespace , cmajor::ir::Emitter::CurrentScope , cmajor::ir::Emitter::GetDebugInfoForFile , cmajor::ir::Emitter::PopScope , cmajor::ir::Emitter::PushScope


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundParameter & boundParameter) override

Definition at line 1063 of LlvmCodeGenerator.cpp :
1064 {
1065     boundParameter.Load(*emitterOperationFlags::none);
1066     GenJumpingBoolCode();
1067 }


Declaration at line 57 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundParameter::Load , cmajor::codegenllvm::LlvmCodeGenerator::GenJumpingBoolCode


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundReferenceToPointerExpression & boundReferenceToPointerExpression) override

Definition at line 1121 of LlvmCodeGenerator.cpp :
1122 {
1123     boundReferenceToPointerExpression.Load(*emitterOperationFlags::none);
1124 }


Declaration at line 67 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundReferenceToPointerExpression::Load


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundSequenceStatement & boundSequenceStatement) override

Definition at line 604 of LlvmCodeGenerator.cpp
Declaration at line 41 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundNode::Accept , cmajor::binder::BoundSequenceStatement::First , cmajor::binder::BoundSequenceStatement::Second , cmajor::binder::BoundStatement::Generated , cmajor::codegenllvm::LlvmCodeGenerator::SetTarget


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundSetVmtPtrStatement & boundSetVmtPtrStatement) override

Definition at line 1035 of LlvmCodeGenerator.cpp
Declaration at line 55 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundExpression::GetType , cmajor::binder::BoundNode::Accept , cmajor::binder::BoundSetVmtPtrStatement::ClassPtr , cmajor::binder::BoundSetVmtPtrStatement::ClassType , cmajor::codegenllvm::LlvmCodeGenerator::SetTarget , cmajor::ir::Emitter::CreateBitCast , cmajor::ir::Emitter::CreateStore , cmajor::ir::Emitter::GetIrTypeForVoidPtrType , cmajor::ir::Emitter::GetMemberVariablePtr , cmajor::ir::Emitter::Stack , cmajor::ir::ValueStack::Pop , cmajor::symbols::ClassTypeSymbol::VmtObject , cmajor::symbols::ClassTypeSymbol::VmtPtrIndex , cmajor::symbols::Symbol::IsClassTypeSymbol , cmajor::symbols::TypeSymbol::BaseType


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundSizeOfExpression & boundSizeOfExpression) override

Definition at line 1105 of LlvmCodeGenerator.cpp :
1106 {
1107     boundSizeOfExpression.Load(*emitterOperationFlags::none);
1108 }


Declaration at line 64 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundSizeOfExpression::Load


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundSwitchStatement & boundSwitchStatement) override

Definition at line 813 of LlvmCodeGenerator.cpp
Declaration at line 47 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundDefaultStatement::Accept , cmajor::binder::BoundNode::Accept , cmajor::binder::BoundSwitchStatement::CaseStatements , cmajor::binder::BoundSwitchStatement::Condition , cmajor::binder::BoundSwitchStatement::DefaultStatement , cmajor::codegenllvm::LlvmCodeGenerator::SetTarget , cmajor::ir::Emitter::AddCase , cmajor::ir::Emitter::CreateBasicBlock , cmajor::ir::Emitter::CreateBr , cmajor::ir::Emitter::CreateSwitch , cmajor::ir::Emitter::SetCurrentBasicBlock , cmajor::ir::Emitter::Stack , cmajor::ir::ValueStack::Pop


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundTemporary & boundTemporary) override

Definition at line 1099 of LlvmCodeGenerator.cpp :
1100 {
1101     boundTemporary.Load(*emitterOperationFlags::none);
1102     GenJumpingBoolCode();
1103 }


Declaration at line 63 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundTemporary::Load , cmajor::codegenllvm::LlvmCodeGenerator::GenJumpingBoolCode


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundThrowStatement & boundThrowStatement) override

Definition at line 1054 of LlvmCodeGenerator.cpp :
1055 {
1056     destructorCallGenerated = false;
1057     lastInstructionWasRet = false;
1058     basicBlockOpen = false;
1059     SetTarget(&boundThrowStatement);
1060     boundThrowStatement.ThrowCallExpr()->Accept(*this);
1061 }


Declaration at line 56 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundNode::Accept , cmajor::binder::BoundThrowStatement::ThrowCallExpr , cmajor::codegenllvm::LlvmCodeGenerator::SetTarget


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundTypeNameExpression & boundTypeNameExpression) override

Definition at line 1179 of LlvmCodeGenerator.cpp :
1180 {
1181     boundTypeNameExpression.Load(*emitterOperationFlags::none);
1182 }


Declaration at line 77 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundTypeNameExpression::Load


Visit Member Function

void cmajor::codegenllvm::LlvmCodeGenerator::Visit(BoundWhileStatement & boundWhileStatement) override

Definition at line 693 of LlvmCodeGenerator.cpp
Declaration at line 44 of LlvmCodeGenerator.hpp

Base class overridden functions: cmajor::binder::BoundNodeVisitor::Visit

Calls: cmajor::binder::BoundNode::Accept , cmajor::binder::BoundWhileStatement::Condition , cmajor::binder::BoundWhileStatement::Statement , cmajor::codegenllvm::LlvmCodeGenerator::SetTarget , cmajor::ir::Emitter::CreateBasicBlock , cmajor::ir::Emitter::CreateBr , cmajor::ir::Emitter::SetCurrentBasicBlock


operator= Member Function

LlvmCodeGenerator & cmajor::codegenllvm::LlvmCodeGenerator::operator=(const LlvmCodeGenerator &) delete

Definition at line 34 of LlvmCodeGenerator.hpp


top | up | prev | next