LLVM 22.0.0git
llvm::MIRParserImpl Class Reference

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

Classes

struct  VarExprLoc

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.
bool error (SMLoc Loc, const Twine &Message)
 Report an error with the given message at the given location.
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.
std::unique_ptr< ModuleparseIRModule (DataLayoutCallbackTy DataLayoutCallback)
 Try to parse the optional LLVM module and the machine functions in the MIR file.
FunctioncreateDummyFunction (StringRef Name, Module &M)
 Create an empty function with the given name.
bool parseMachineFunctions (Module &M, MachineModuleInfo &MMI, ModuleAnalysisManager *FAM=nullptr)
bool parseMachineFunction (Module &M, MachineModuleInfo &MMI, ModuleAnalysisManager *FAM)
 Parse the machine function in the current YAML document.
bool initializeMachineFunction (const yaml::MachineFunction &YamlMF, MachineFunction &MF)
 Initialize the machine function to the state that's described in the MIR file.
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 initializeSaveRestorePoints (PerFunctionMIParsingState &PFS, const std::vector< yaml::SaveRestorePointEntry > &YamlSRPoints, llvm::SaveRestorePoints &SaveRestorePoints)
bool initializeCallSiteInfo (PerFunctionMIParsingState &PFS, const yaml::MachineFunction &YamlMF)
bool parseCalleeSavedRegister (PerFunctionMIParsingState &PFS, std::vector< CalleeSavedInfo > &CSIInfo, const yaml::StringValue &RegisterSource, bool IsRestored, int FrameIdx)
std::optional< VarExprLocparseVarExprLoc (PerFunctionMIParsingState &PFS, const yaml::StringValue &VarStr, const yaml::StringValue &ExprStr, const yaml::StringValue &LocStr)
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)
bool parseMachineMetadataNodes (PerFunctionMIParsingState &PFS, MachineFunction &MF, const yaml::MachineFunction &YMF)
bool parseCalledGlobals (PerFunctionMIParsingState &PFS, MachineFunction &MF, const yaml::MachineFunction &YMF)

Detailed Description

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

Definition at line 51 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 205 of file MIRParser.cpp.

References handleYAMLDiag(), and llvm::move().

Member Function Documentation

◆ createDummyFunction()

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

◆ error() [1/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 228 of file MIRParser.cpp.

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

◆ error() [2/3]

bool MIRParserImpl::error ( const Twine & Message)

Report an error with the given message at unknown location.

Always returns true.

Definition at line 216 of file MIRParser.cpp.

References llvm::SourceMgr::DK_Error, llvm::DS_Error, and llvm::Twine::str().

Referenced by typecheckMDNode().

◆ error() [3/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 222 of file MIRParser.cpp.

References llvm::SourceMgr::DK_Error, and llvm::DS_Error.

◆ initializeCallSiteInfo()

◆ initializeConstantPool()

◆ initializeFrameInfo()

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

Definition at line 849 of file MIRParser.cpp.

References llvm::yaml::MachineFrameInfo::AdjustsStack, llvm::MachineFrameInfo::CreateFixedObject(), llvm::MachineFrameInfo::CreateFixedSpillStackObject(), llvm::MachineFrameInfo::CreateStackObject(), llvm::MachineFrameInfo::CreateVariableSizedObject(), llvm::yaml::MachineFrameInfo::CVBytesOfCalleeSavedRegisters, llvm::dyn_cast_or_null(), llvm::MachineFrameInfo::ensureMaxAlignment(), llvm::yaml::MachineFunction::EntryValueObjects, error, F, llvm::yaml::MachineFunction::FixedStackObjects, llvm::PerFunctionMIParsingState::FixedStackObjectSlots, llvm::yaml::MachineFunction::FrameInfo, llvm::yaml::MachineFrameInfo::FunctionContext, llvm::MachineFunction::getFrameInfo(), llvm::TargetSubtargetInfo::getFrameLowering(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getSubtarget(), llvm::yaml::MachineFrameInfo::HasCalls, llvm::yaml::MachineFrameInfo::HasMustTailInVarArgFunc, llvm::yaml::MachineFrameInfo::HasOpaqueSPAdjustment, llvm::yaml::MachineFrameInfo::HasPatchPoint, llvm::yaml::MachineFrameInfo::HasStackMap, llvm::yaml::MachineFrameInfo::HasTailCall, llvm::yaml::MachineFrameInfo::HasVAStart, initializeSaveRestorePoints(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::insert(), llvm::yaml::MachineFrameInfo::IsCalleeSavedInfoValid, llvm::yaml::MachineFrameInfo::IsFrameAddressTaken, llvm::yaml::MachineFrameInfo::IsReturnAddressTaken, llvm::TargetFrameLowering::isSupportedStackID(), llvm::yaml::MachineFrameInfo::LocalFrameSize, llvm::MachineFrameInfo::mapLocalFrameObject(), llvm::yaml::MachineFrameInfo::MaxAlignment, llvm::yaml::MachineFrameInfo::MaxCallFrameSize, llvm::PerFunctionMIParsingState::MF, llvm::yaml::MachineFrameInfo::OffsetAdjustment, parseCalleeSavedRegister(), llvm::parseNamedRegisterReference(), llvm::parseStackObjectReference(), parseStackObjectsDebugInfo(), parseVarExprLoc(), llvm::yaml::MachineFrameInfo::RestorePoints, llvm::yaml::MachineFrameInfo::SavePoints, llvm::MachineFrameInfo::setAdjustsStack(), llvm::MachineFrameInfo::setCalleeSavedInfo(), llvm::MachineFrameInfo::setCalleeSavedInfoValid(), llvm::MachineFrameInfo::setCVBytesOfCalleeSavedRegisters(), llvm::MachineFrameInfo::setFrameAddressIsTaken(), llvm::MachineFrameInfo::setFunctionContextIndex(), llvm::MachineFrameInfo::setHasCalls(), llvm::MachineFrameInfo::setHasMustTailInVarArgFunc(), llvm::MachineFrameInfo::setHasOpaqueSPAdjustment(), llvm::MachineFrameInfo::setHasPatchPoint(), llvm::MachineFrameInfo::setHasStackMap(), llvm::MachineFrameInfo::setHasTailCall(), llvm::MachineFrameInfo::setHasVAStart(), llvm::MachineFrameInfo::setLocalFrameSize(), llvm::MachineFrameInfo::setMaxCallFrameSize(), llvm::MachineFrameInfo::setObjectAlignment(), llvm::MachineFrameInfo::setObjectOffset(), llvm::MachineFrameInfo::setOffsetAdjustment(), llvm::MachineFrameInfo::setRestorePoints(), llvm::MachineFrameInfo::setReturnAddressIsTaken(), llvm::MachineFrameInfo::setSavePoints(), llvm::MachineFrameInfo::setStackID(), llvm::MachineFrameInfo::setStackProtectorIndex(), llvm::MachineFrameInfo::setStackSize(), llvm::MachineFunction::setVariableDbgInfo(), llvm::yaml::StringValue::SourceRange, llvm::yaml::FixedMachineStackObject::SpillSlot, llvm::yaml::MachineStackObject::SpillSlot, llvm::yaml::MachineFunction::StackObjects, llvm::PerFunctionMIParsingState::StackObjectSlots, llvm::yaml::MachineFrameInfo::StackProtector, llvm::yaml::MachineFrameInfo::StackSize, llvm::yaml::StringValue::Value, and llvm::yaml::MachineStackObject::VariableSized.

Referenced by initializeMachineFunction().

◆ initializeJumpTableInfo()

◆ 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 551 of file MIRParser.cpp.

References llvm::SourceMgr::AddNewSourceBuffer(), llvm::yaml::MachineFunction::Alignment, assert(), llvm::MachineFunction::assignBeginEndSections(), llvm::yaml::MachineFunction::Body, llvm::yaml::MachineFunction::CallsEHReturn, llvm::yaml::MachineFunction::CallsUnwindInit, llvm::yaml::MachineFunction::Constants, llvm::yaml::MachineJumpTable::Entries, error, llvm::errs(), llvm::yaml::MachineFunction::ExposesReturnsTwice, llvm::yaml::MachineFunction::FailedISel, llvm::yaml::MachineFunction::FailsVerification, llvm::MachineFunction::getConstantPool(), llvm::MemoryBuffer::getMemBuffer(), llvm::MachineFunction::getProperties(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::MachineFunction::getTarget(), llvm::MachineFunction::hasBBSections(), llvm::yaml::MachineFunction::HasEHContTarget, llvm::yaml::MachineFunction::HasEHFunclets, llvm::yaml::MachineFunction::HasEHScopes, llvm::yaml::MachineFunction::HasWinCFI, initializeCallSiteInfo(), initializeConstantPool(), initializeFrameInfo(), initializeJumpTableInfo(), llvm::yaml::MachineFunction::IsOutlined, llvm::yaml::MachineFunction::JumpTableInfo, llvm::yaml::MachineFunction::Legalized, llvm::yaml::MachineFunction::MachineFuncInfo, llvm::yaml::MachineFunction::MachineMetadataNodes, llvm::TargetSubtargetInfo::mirFileLoaded(), MRI, parseCalledGlobals(), llvm::parseMachineBasicBlockDefinitions(), llvm::parseMachineInstructions(), parseMachineMetadataNodes(), parseRegisterInfo(), llvm::yaml::MachineFunction::RegBankSelected, reportDiagnostic(), llvm::yaml::MachineFunction::Selected, llvm::MachineFunction::setAlignment(), llvm::MachineFunction::setCallsEHReturn(), llvm::MachineFunction::setCallsUnwindInit(), llvm::MachineFunction::setExposesReturnsTwice(), llvm::MachineFunction::setHasEHContTarget(), llvm::MachineFunction::setHasEHFunclets(), llvm::MachineFunction::setHasEHScopes(), llvm::MachineFunction::setHasWinCFI(), llvm::MachineFunction::setIsOutlined(), setupRegisterInfo(), llvm::PerFunctionMIParsingState::SM, llvm::yaml::StringValue::SourceRange, llvm::yaml::MachineFunction::TracksDebugUserValues, llvm::yaml::BlockStringValue::Value, llvm::yaml::StringValue::Value, llvm::MaybeAlign::valueOrOne(), and llvm::MachineFunction::verify().

Referenced by parseMachineFunction().

◆ initializeSaveRestorePoints()

bool MIRParserImpl::initializeSaveRestorePoints ( PerFunctionMIParsingState & PFS,
const std::vector< yaml::SaveRestorePointEntry > & YamlSRPoints,
llvm::SaveRestorePoints & SaveRestorePoints )

Definition at line 1098 of file MIRParser.cpp.

References error, MBB, llvm::parseNamedRegisterReference(), and Registers.

Referenced by initializeFrameInfo().

◆ parseCalledGlobals()

◆ 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 254 of file MIRParser.cpp.

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

◆ parseMachineFunction()

◆ parseMachineFunctions()

bool MIRParserImpl::parseMachineFunctions ( Module & M,
MachineModuleInfo & MMI,
ModuleAnalysisManager * FAM = nullptr )

Definition at line 293 of file MIRParser.cpp.

References MAM, and parseMachineFunction().

◆ parseMachineMetadataNodes()

◆ parseRegisterInfo()

◆ parseStackObjectsDebugInfo()

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

◆ parseVarExprLoc()

std::optional< MIRParserImpl::VarExprLoc > MIRParserImpl::parseVarExprLoc ( PerFunctionMIParsingState & PFS,
const yaml::StringValue & VarStr,
const yaml::StringValue & ExprStr,
const yaml::StringValue & LocStr )

Definition at line 1025 of file MIRParser.cpp.

References typecheckMDNode().

Referenced by initializeFrameInfo(), and parseStackObjectsDebugInfo().

◆ reportDiagnostic()

◆ setupRegisterInfo()


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