LLVM  11.0.0git
Public Member Functions | List of all members
llvm::MIRParserImpl Class Reference

This class implements the parsing of LLVM IR that's embedded inside a MIR file. More...

Public Member Functions

 MIRParserImpl (std::unique_ptr< MemoryBuffer > Contents, StringRef Filename, LLVMContext &Context, std::function< void(Function &)> ProcessIRFunction)
 
void reportDiagnostic (const SMDiagnostic &Diag)
 
bool error (const Twine &Message)
 Report an error with the given message at unknown location. More...
 
bool error (SMLoc Loc, const Twine &Message)
 Report an error with the given message at the given location. More...
 
bool error (const SMDiagnostic &Error, SMRange SourceRange)
 Report a given error with the location translated from the location in an embedded string literal to a location in the MIR file. More...
 
std::unique_ptr< ModuleparseIRModule (DataLayoutCallbackTy DataLayoutCallback)
 Try to parse the optional LLVM module and the machine functions in the MIR file. More...
 
FunctioncreateDummyFunction (StringRef Name, Module &M)
 Create an empty function with the given name. More...
 
bool parseMachineFunctions (Module &M, MachineModuleInfo &MMI)
 
bool parseMachineFunction (Module &M, MachineModuleInfo &MMI)
 Parse the machine function in the current YAML document. More...
 
bool initializeMachineFunction (const yaml::MachineFunction &YamlMF, MachineFunction &MF)
 Initialize the machine function to the state that's described in the MIR file. More...
 
bool parseRegisterInfo (PerFunctionMIParsingState &PFS, const yaml::MachineFunction &YamlMF)
 
bool setupRegisterInfo (const PerFunctionMIParsingState &PFS, const yaml::MachineFunction &YamlMF)
 
bool initializeFrameInfo (PerFunctionMIParsingState &PFS, const yaml::MachineFunction &YamlMF)
 
bool initializeCallSiteInfo (PerFunctionMIParsingState &PFS, const yaml::MachineFunction &YamlMF)
 
bool parseCalleeSavedRegister (PerFunctionMIParsingState &PFS, std::vector< CalleeSavedInfo > &CSIInfo, const yaml::StringValue &RegisterSource, bool IsRestored, int FrameIdx)
 
template<typename T >
bool parseStackObjectsDebugInfo (PerFunctionMIParsingState &PFS, const T &Object, int FrameIdx)
 
bool initializeConstantPool (PerFunctionMIParsingState &PFS, MachineConstantPool &ConstantPool, const yaml::MachineFunction &YamlMF)
 
bool initializeJumpTableInfo (PerFunctionMIParsingState &PFS, const yaml::MachineJumpTable &YamlJTI)
 

Detailed Description

This class implements the parsing of LLVM IR that's embedded inside a MIR file.

Definition at line 52 of file MIRParser.cpp.

Constructor & Destructor Documentation

◆ MIRParserImpl()

MIRParserImpl::MIRParserImpl ( std::unique_ptr< MemoryBuffer Contents,
StringRef  Filename,
LLVMContext Context,
std::function< void(Function &)>  ProcessIRFunction 
)

Definition at line 172 of file MIRParser.cpp.

Member Function Documentation

◆ createDummyFunction()

Function * MIRParserImpl::createDummyFunction ( StringRef  Name,
Module M 
)

◆ error() [1/3]

bool MIRParserImpl::error ( const Twine Message)

◆ error() [2/3]

bool MIRParserImpl::error ( SMLoc  Loc,
const Twine Message 
)

Report an error with the given message at the given location.

Always returns true.

Definition at line 189 of file MIRParser.cpp.

References llvm::LLVMContext::diagnose(), llvm::SourceMgr::DK_Error, llvm::DS_Error, and llvm::SourceMgr::GetMessage().

◆ error() [3/3]

bool MIRParserImpl::error ( const SMDiagnostic Error,
SMRange  SourceRange 
)

Report a given error with the location translated from the location in an embedded string literal to a location in the MIR file.

Always returns true.

Definition at line 195 of file MIRParser.cpp.

References assert(), llvm::SourceMgr::DK_Error, llvm::SMDiagnostic::getKind(), and reportDiagnostic().

◆ initializeCallSiteInfo()

bool MIRParserImpl::initializeCallSiteInfo ( PerFunctionMIParsingState PFS,
const yaml::MachineFunction YamlMF 
)

◆ initializeConstantPool()

bool MIRParserImpl::initializeConstantPool ( PerFunctionMIParsingState PFS,
MachineConstantPool ConstantPool,
const yaml::MachineFunction YamlMF 
)

◆ initializeFrameInfo()

bool MIRParserImpl::initializeFrameInfo ( PerFunctionMIParsingState PFS,
const yaml::MachineFunction YamlMF 
)

Definition at line 649 of file MIRParser.cpp.

References llvm::yaml::MachineFrameInfo::AdjustsStack, llvm::AMDGPU::HSAMD::Kernel::Arg::Key::Align, llvm::MachineFrameInfo::CreateFixedObject(), llvm::MachineFrameInfo::CreateFixedSpillStackObject(), llvm::MachineFrameInfo::CreateStackObject(), llvm::MachineFrameInfo::CreateVariableSizedObject(), llvm::yaml::MachineFrameInfo::CVBytesOfCalleeSavedRegisters, llvm::MachineFrameInfo::ensureMaxAlignment(), llvm::Error, error(), F(), llvm::yaml::MachineFunction::FixedStackObjects, llvm::PerFunctionMIParsingState::FixedStackObjectSlots, llvm::yaml::MachineFunction::FrameInfo, llvm::MachineFunction::getFrameInfo(), llvm::TargetSubtargetInfo::getFrameLowering(), llvm::MachineFunction::getFunction(), llvm::Value::getName(), llvm::MachineFunction::getSubtarget(), llvm::Function::getValueSymbolTable(), llvm::yaml::MachineFrameInfo::HasCalls, llvm::yaml::MachineFrameInfo::HasMustTailInVarArgFunc, llvm::yaml::MachineFrameInfo::HasOpaqueSPAdjustment, llvm::yaml::MachineFrameInfo::HasPatchPoint, llvm::yaml::MachineFrameInfo::HasStackMap, llvm::yaml::MachineFrameInfo::HasVAStart, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::insert(), llvm::yaml::MachineFrameInfo::IsFrameAddressTaken, llvm::yaml::MachineFrameInfo::IsReturnAddressTaken, llvm::TargetFrameLowering::isSupportedStackID(), llvm::yaml::MachineFrameInfo::LocalFrameSize, llvm::ValueSymbolTable::lookup(), llvm::MachineFrameInfo::mapLocalFrameObject(), llvm::yaml::MachineFrameInfo::MaxAlignment, llvm::yaml::MachineFrameInfo::MaxCallFrameSize, llvm::PerFunctionMIParsingState::MF, Name, llvm::Object, llvm::yaml::MachineFrameInfo::OffsetAdjustment, parseCalleeSavedRegister(), llvm::parseStackObjectReference(), parseStackObjectsDebugInfo(), llvm::yaml::MachineFrameInfo::RestorePoint, llvm::yaml::MachineFrameInfo::SavePoint, llvm::MachineFrameInfo::setAdjustsStack(), llvm::MachineFrameInfo::setCalleeSavedInfo(), llvm::MachineFrameInfo::setCalleeSavedInfoValid(), llvm::MachineFrameInfo::setCVBytesOfCalleeSavedRegisters(), llvm::MachineFrameInfo::setFrameAddressIsTaken(), llvm::MachineFrameInfo::setHasCalls(), llvm::MachineFrameInfo::setHasMustTailInVarArgFunc(), llvm::MachineFrameInfo::setHasOpaqueSPAdjustment(), llvm::MachineFrameInfo::setHasPatchPoint(), llvm::MachineFrameInfo::setHasStackMap(), llvm::MachineFrameInfo::setHasVAStart(), llvm::MachineFrameInfo::setLocalFrameSize(), llvm::MachineFrameInfo::setMaxCallFrameSize(), llvm::MachineFrameInfo::setObjectAlignment(), llvm::MachineFrameInfo::setObjectOffset(), llvm::MachineFrameInfo::setOffsetAdjustment(), llvm::MachineFrameInfo::setRestorePoint(), llvm::MachineFrameInfo::setReturnAddressIsTaken(), llvm::MachineFrameInfo::setSavePoint(), llvm::MachineFrameInfo::setStackID(), llvm::MachineFrameInfo::setStackProtectorIndex(), llvm::MachineFrameInfo::setStackSize(), llvm::yaml::StringValue::SourceRange, llvm::yaml::MachineStackObject::SpillSlot, llvm::yaml::FixedMachineStackObject::SpillSlot, llvm::yaml::MachineFunction::StackObjects, llvm::PerFunctionMIParsingState::StackObjectSlots, llvm::yaml::MachineFrameInfo::StackProtector, llvm::yaml::MachineFrameInfo::StackSize, llvm::SMRange::Start, llvm::yaml::StringValue::Value, and llvm::yaml::MachineStackObject::VariableSized.

Referenced by initializeMachineFunction().

◆ initializeJumpTableInfo()

bool MIRParserImpl::initializeJumpTableInfo ( PerFunctionMIParsingState PFS,
const yaml::MachineJumpTable YamlJTI 
)

◆ initializeMachineFunction()

bool MIRParserImpl::initializeMachineFunction ( const yaml::MachineFunction YamlMF,
MachineFunction MF 
)

Initialize the machine function to the state that's described in the MIR file.

Return true if error occurred.

Definition at line 401 of file MIRParser.cpp.

References llvm::SourceMgr::AddNewSourceBuffer(), llvm::yaml::MachineFunction::Alignment, assert(), llvm::MachineFunction::assignBeginEndSections(), llvm::yaml::MachineFunction::Body, llvm::yaml::MachineFunction::Constants, llvm::MachineFunction::createBBLabels(), llvm::yaml::MachineJumpTable::Entries, llvm::Error, error(), llvm::yaml::MachineFunction::ExposesReturnsTwice, llvm::MachineFunctionProperties::FailedISel, llvm::yaml::MachineFunction::FailedISel, llvm::MachineRegisterInfo::freezeReservedRegs(), llvm::TargetMachine::getBBSectionsType(), llvm::MachineFunction::getConstantPool(), llvm::MemoryBuffer::getMemBuffer(), llvm::MachineFunction::getProperties(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::MachineFunction::getTarget(), llvm::MachineFunction::hasBBSections(), llvm::yaml::MachineFunction::HasWinCFI, initializeCallSiteInfo(), initializeConstantPool(), initializeFrameInfo(), initializeJumpTableInfo(), llvm::yaml::MachineFunction::JumpTableInfo, llvm::Labels, llvm::MachineFunctionProperties::Legalized, llvm::yaml::MachineFunction::Legalized, llvm::yaml::MachineFunction::MachineFuncInfo, llvm::TargetSubtargetInfo::mirFileLoaded(), MRI, llvm::parseMachineBasicBlockDefinitions(), llvm::TargetMachine::parseMachineFunctionInfo(), llvm::parseMachineInstructions(), parseRegisterInfo(), llvm::MachineFunctionProperties::RegBankSelected, llvm::yaml::MachineFunction::RegBankSelected, reportDiagnostic(), llvm::MachineFunctionProperties::Selected, llvm::yaml::MachineFunction::Selected, llvm::MachineFunctionProperties::set(), llvm::MachineFunction::setAlignment(), llvm::MachineFunction::setBBSectionsType(), llvm::MachineFunction::setExposesReturnsTwice(), llvm::MachineFunction::setHasWinCFI(), setupRegisterInfo(), llvm::PerFunctionMIParsingState::SM, llvm::yaml::StringValue::SourceRange, llvm::SystemZISD::TM, llvm::yaml::StringValue::Value, llvm::yaml::BlockStringValue::Value, llvm::MaybeAlign::valueOrOne(), and llvm::MachineFunction::verify().

Referenced by parseMachineFunction().

◆ parseCalleeSavedRegister()

bool MIRParserImpl::parseCalleeSavedRegister ( PerFunctionMIParsingState PFS,
std::vector< CalleeSavedInfo > &  CSIInfo,
const yaml::StringValue RegisterSource,
bool  IsRestored,
int  FrameIdx 
)

◆ parseIRModule()

std::unique_ptr< Module > MIRParserImpl::parseIRModule ( DataLayoutCallbackTy  DataLayoutCallback)

Try to parse the optional LLVM module and the machine functions in the MIR file.

Return null if an error occurred.

Definition at line 221 of file MIRParser.cpp.

References llvm::Error, llvm::parseAssembly(), and reportDiagnostic().

◆ parseMachineFunction()

bool MIRParserImpl::parseMachineFunction ( Module M,
MachineModuleInfo MMI 
)

◆ parseMachineFunctions()

bool MIRParserImpl::parseMachineFunctions ( Module M,
MachineModuleInfo MMI 
)

Definition at line 258 of file MIRParser.cpp.

References parseMachineFunction().

◆ parseRegisterInfo()

bool MIRParserImpl::parseRegisterInfo ( PerFunctionMIParsingState PFS,
const yaml::MachineFunction YamlMF 
)

◆ parseStackObjectsDebugInfo()

template<typename T >
bool MIRParserImpl::parseStackObjectsDebugInfo ( PerFunctionMIParsingState PFS,
const T Object,
int  FrameIdx 
)

◆ reportDiagnostic()

void MIRParserImpl::reportDiagnostic ( const SMDiagnostic Diag)

◆ setupRegisterInfo()

bool MIRParserImpl::setupRegisterInfo ( const PerFunctionMIParsingState PFS,
const yaml::MachineFunction YamlMF 
)

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