LLVM 22.0.0git
|
#include "llvm/CodeGen/MIRPrinter.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallBitVector.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/CodeGen/MIRYamlMapping.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineConstantPool.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineJumpTableInfo.h"
#include "llvm/CodeGen/MachineMemOperand.h"
#include "llvm/CodeGen/MachineModuleSlotTracker.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/TargetFrameLowering.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/CodeGenTypes/LowLevelType.h"
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/DebugLoc.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRPrintingPasses.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/ModuleSlotTracker.h"
#include "llvm/IR/Value.h"
#include "llvm/MC/LaneBitmask.h"
#include "llvm/Support/BranchProbability.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/YAMLTraits.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetMachine.h"
#include <algorithm>
#include <cassert>
#include <cinttypes>
#include <cstdint>
#include <iterator>
#include <string>
#include <utility>
#include <vector>
Go to the source code of this file.
Classes | |
struct | llvm::yaml::BlockScalarTraits< Module > |
This struct serializes the LLVM IR module. More... |
Namespaces | |
namespace | llvm |
This is an optimization pass for GlobalISel generic memory operations. | |
namespace | llvm::yaml |
Variables | |
static cl::opt< bool > | SimplifyMIR ("simplify-mir", cl::Hidden, cl::desc("Leave out unnecessary information when printing MIR")) |
static cl::opt< bool > | PrintLocations ("mir-debug-loc", cl::Hidden, cl::init(true), cl::desc("Print MIR debug-locations")) |
|
static |
Definition at line 673 of file MIRPrinter.cpp.
References llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::MachineFunction::end(), llvm::guessSuccessors(), llvm::is_contained(), MBB, llvm::Next, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by printMBB().
|
static |
Definition at line 576 of file MIRPrinter.cpp.
References A(), B(), llvm::yaml::MachineFunction::CalledGlobals, llvm::MachineFunction::getCalledGlobals(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent(), and llvm::sort().
Referenced by printMF().
|
static |
Definition at line 524 of file MIRPrinter.cpp.
References A(), llvm::yaml::CallSiteInfo::ArgForwardingRegs, llvm::yaml::CallSiteInfo::ArgRegPair::ArgNo, B(), llvm::yaml::MachineInstrLoc::BlockNum, llvm::yaml::CallSiteInfo::CalleeTypeIds, llvm::yaml::CallSiteInfo::CallLocation, llvm::yaml::MachineFunction::CallSitesInfo, llvm::MachineFunction::getCallSitesInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), MI, llvm::yaml::MachineInstrLoc::Offset, printRegMIR(), llvm::yaml::CallSiteInfo::ArgRegPair::Reg, llvm::sort(), and TRI.
Referenced by printMF().
|
static |
Definition at line 368 of file MIRPrinter.cpp.
References llvm::yaml::MachineFunction::EntryValueObjects, llvm::yaml::EntryValueObject::EntryValueRegister, llvm::MachineFunction::getEntryValueVariableDbgInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), printRegMIR(), printStackObjectDbgInfo(), and TRI.
Referenced by printMF().
|
static |
Definition at line 563 of file MIRPrinter.cpp.
References llvm::MachineModuleSlotTracker::collectMachineMDNodes(), llvm::MachineFunction::getFunction(), llvm::GlobalValue::getParent(), and llvm::yaml::MachineFunction::MachineMetadataNodes.
Referenced by printMF().
|
static |
Definition at line 598 of file MIRPrinter.cpp.
References llvm::yaml::MachineConstantPoolValue::Alignment, llvm::yaml::MachineFunction::Constants, llvm::yaml::MachineConstantPoolValue::ID, llvm::yaml::MachineConstantPoolValue::IsTargetSpecific, llvm::Value::print(), llvm::Value::printAsOperand(), and llvm::yaml::MachineConstantPoolValue::Value.
Referenced by printMF().
|
static |
Definition at line 341 of file MIRPrinter.cpp.
References llvm::yaml::MachineFrameInfo::AdjustsStack, llvm::MachineFrameInfo::adjustsStack(), convertSRPoints(), llvm::yaml::MachineFrameInfo::CVBytesOfCalleeSavedRegisters, llvm::MachineFrameInfo::getCVBytesOfCalleeSavedRegisters(), llvm::MachineFrameInfo::getLocalFrameSize(), llvm::MachineFrameInfo::getMaxAlign(), llvm::MachineFrameInfo::getMaxCallFrameSize(), llvm::MachineFrameInfo::getOffsetAdjustment(), llvm::MachineFrameInfo::getRestorePoints(), llvm::MachineFrameInfo::getSavePoints(), llvm::MachineFrameInfo::getStackSize(), llvm::yaml::MachineFrameInfo::HasCalls, llvm::MachineFrameInfo::hasCalls(), llvm::yaml::MachineFrameInfo::HasMustTailInVarArgFunc, llvm::MachineFrameInfo::hasMustTailInVarArgFunc(), llvm::yaml::MachineFrameInfo::HasOpaqueSPAdjustment, llvm::MachineFrameInfo::hasOpaqueSPAdjustment(), llvm::yaml::MachineFrameInfo::HasPatchPoint, llvm::MachineFrameInfo::hasPatchPoint(), llvm::yaml::MachineFrameInfo::HasStackMap, llvm::MachineFrameInfo::hasStackMap(), llvm::yaml::MachineFrameInfo::HasTailCall, llvm::MachineFrameInfo::hasTailCall(), llvm::yaml::MachineFrameInfo::HasVAStart, llvm::MachineFrameInfo::hasVAStart(), llvm::yaml::MachineFrameInfo::IsCalleeSavedInfoValid, llvm::MachineFrameInfo::isCalleeSavedInfoValid(), llvm::yaml::MachineFrameInfo::IsFrameAddressTaken, llvm::MachineFrameInfo::isFrameAddressTaken(), llvm::MachineFrameInfo::isMaxCallFrameSizeComputed(), llvm::yaml::MachineFrameInfo::IsReturnAddressTaken, llvm::MachineFrameInfo::isReturnAddressTaken(), llvm::yaml::MachineFrameInfo::LocalFrameSize, llvm::yaml::MachineFrameInfo::MaxAlignment, llvm::yaml::MachineFrameInfo::MaxCallFrameSize, llvm::yaml::MachineFrameInfo::OffsetAdjustment, llvm::yaml::MachineFrameInfo::RestorePoints, llvm::yaml::MachineFrameInfo::SavePoints, llvm::yaml::MachineFrameInfo::StackSize, and llvm::Align::value().
Referenced by printMF().
|
static |
Definition at line 634 of file MIRPrinter.cpp.
References llvm::yaml::MachineJumpTable::Entries, llvm::MachineJumpTableInfo::getEntryKind(), llvm::MachineJumpTableInfo::getJumpTables(), llvm::yaml::MachineJumpTable::Entry::ID, llvm::yaml::MachineJumpTable::Kind, MBB, and llvm::printMBBReference().
Referenced by printMF().
|
static |
Definition at line 299 of file MIRPrinter.cpp.
References llvm::yaml::MachineFunction::CalleeSavedRegisters, llvm::yaml::VirtualRegisterDefinition::Class, E(), I, llvm::yaml::VirtualRegisterDefinition::ID, llvm::Register::index2VirtReg(), llvm::yaml::MachineFunction::LiveIns, llvm::yaml::VirtualRegisterDefinition::PreferredRegister, llvm::printRegClassOrBank(), printRegFlags(), printRegMIR(), Reg, llvm::yaml::MachineFunctionLiveIn::Register, llvm::yaml::VirtualRegisterDefinition::RegisterFlags, llvm::yaml::MachineFunction::TracksRegLiveness, TRI, llvm::yaml::MachineFunctionLiveIn::VirtualRegister, and llvm::yaml::MachineFunction::VirtualRegisters.
Referenced by printMF().
|
static |
Definition at line 620 of file MIRPrinter.cpp.
References MBB, llvm::printMBBReference(), llvm::raw_svector_ostream::str(), and llvm::StringRef::str().
Referenced by convertMFI().
|
static |
Definition at line 392 of file MIRPrinter.cpp.
References llvm::yaml::FixedMachineStackObject::Alignment, llvm::yaml::MachineStackObject::Alignment, assert(), llvm::yaml::FixedMachineStackObject::DefaultType, llvm::yaml::MachineStackObject::DefaultType, E(), llvm::yaml::MachineFunction::FixedStackObjects, llvm::yaml::MachineFunction::FrameInfo, llvm::yaml::MachineFrameInfo::FunctionContext, llvm::MachineFrameInfo::getCalleeSavedInfo(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFrameInfo::getFunctionContextIndex(), llvm::MachineFunction::getInStackSlotVariableDbgInfo(), llvm::MachineFrameInfo::getLocalFrameObjectCount(), llvm::MachineFrameInfo::getLocalFrameObjectMap(), llvm::MachineFrameInfo::getNumFixedObjects(), llvm::MachineFrameInfo::getObjectAlign(), llvm::MachineFrameInfo::getObjectAllocation(), llvm::MachineFrameInfo::getObjectIndexBegin(), llvm::MachineFrameInfo::getObjectIndexEnd(), llvm::MachineFrameInfo::getObjectOffset(), llvm::MachineFrameInfo::getObjectSize(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFrameInfo::getStackID(), llvm::MachineFrameInfo::getStackProtectorIndex(), llvm::MachineFunction::getSubtarget(), llvm::MachineFrameInfo::hasFunctionContextIndex(), llvm::MachineFrameInfo::hasStackProtectorIndex(), I, llvm::yaml::FixedMachineStackObject::ID, llvm::yaml::MachineStackObject::ID, llvm::yaml::FixedMachineStackObject::IsAliased, llvm::MachineFrameInfo::isAliasedObjectIndex(), llvm::MachineFrameInfo::isDeadObjectIndex(), llvm::yaml::FixedMachineStackObject::IsImmutable, llvm::MachineFrameInfo::isImmutableObjectIndex(), llvm::MachineFrameInfo::isSpillSlotObjectIndex(), llvm::MachineFrameInfo::isVariableSizedObjectIndex(), llvm::yaml::MachineStackObject::Name, llvm::yaml::FixedMachineStackObject::Offset, llvm::yaml::MachineStackObject::Offset, printRegMIR(), printStackObjectDbgInfo(), printStackObjectReference(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), Reg, llvm::SmallVectorImpl< T >::reserve(), llvm::yaml::FixedMachineStackObject::Size, llvm::yaml::MachineStackObject::Size, llvm::yaml::FixedMachineStackObject::SpillSlot, llvm::yaml::MachineStackObject::SpillSlot, llvm::yaml::FixedMachineStackObject::StackID, llvm::yaml::MachineStackObject::StackID, llvm::yaml::MachineFunction::StackObjects, llvm::yaml::MachineFrameInfo::StackProtector, TRI, llvm::yaml::FixedMachineStackObject::Type, llvm::yaml::MachineStackObject::Type, llvm::yaml::StringValue::Value, and llvm::yaml::MachineStackObject::VariableSized.
Referenced by printMF().
|
static |
Definition at line 904 of file MIRPrinter.cpp.
Referenced by printMIOperand().
Definition at line 133 of file MIRPrinter.cpp.
References llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), I, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::insert(), and TRI.
Referenced by printMF().
|
static |
Definition at line 248 of file MIRPrinter.cpp.
References assert(), E(), I, llvm::printReg(), and TRI.
Referenced by printMIOperand().
|
static |
Definition at line 702 of file MIRPrinter.cpp.
References assert(), llvm::MachineInstr::BundledSucc, canPredictSuccessors(), E(), llvm::format(), I, llvm::raw_ostream::indent(), MBB, MI, MRI, llvm::PrintLaneMask(), llvm::printMBBReference(), printMI(), llvm::MachineBasicBlock::PrintNameAttributes, llvm::MachineBasicBlock::PrintNameIr, llvm::printReg(), SimplifyMIR, and TRI.
Referenced by printMF().
|
static |
Definition at line 173 of file MIRPrinter.cpp.
References llvm::yaml::MachineFunction::Alignment, llvm::yaml::MachineFunction::Body, llvm::yaml::MachineFunction::CallsEHReturn, llvm::MachineFunction::callsEHReturn(), llvm::yaml::MachineFunction::CallsUnwindInit, llvm::MachineFunction::callsUnwindInit(), convertCalledGlobals(), convertCallSiteObjects(), convertEntryValueObjects(), convertMachineMetadataNodes(), convertMCP(), convertMFI(), convertMJTI(), convertMRI(), convertStackObjects(), llvm::MachineFunction::DebugValueSubstitutions, llvm::yaml::MachineFunction::DebugValueSubstitutions, llvm::yaml::MachineFunction::ExposesReturnsTwice, llvm::MachineFunction::exposesReturnsTwice(), llvm::yaml::MachineFunction::FailedISel, llvm::yaml::MachineFunction::FailsVerification, llvm::yaml::MachineFunction::FrameInfo, llvm::MachineFunction::getAlignment(), llvm::MachineFunction::getConstantPool(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getJumpTableInfo(), llvm::MachineFunction::getName(), llvm::MachineFunction::getProperties(), llvm::MachineFunction::getRegInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), llvm::MachineFunction::getTarget(), llvm::yaml::MachineFunction::HasEHContTarget, llvm::MachineFunction::hasEHContTarget(), llvm::yaml::MachineFunction::HasEHFunclets, llvm::MachineFunction::hasEHFunclets(), llvm::yaml::MachineFunction::HasEHScopes, llvm::MachineFunction::hasEHScopes(), llvm::yaml::MachineFunction::HasFakeUses, llvm::MachineFunction::hasFakeUses(), llvm::yaml::MachineFunction::HasWinCFI, llvm::MachineFunction::hasWinCFI(), llvm::ModuleSlotTracker::incorporateFunction(), initRegisterMaskIds(), llvm::yaml::MachineFunction::IsOutlined, llvm::MachineFunction::isOutlined(), llvm::yaml::MachineFunction::IsSSA, llvm::yaml::MachineFunction::JumpTableInfo, llvm::yaml::MachineFunction::Legalized, llvm::yaml::MachineFunction::MachineFuncInfo, MBB, llvm::yaml::MachineFunction::Name, llvm::yaml::MachineFunction::NoPHIs, llvm::yaml::MachineFunction::NoVRegs, printMBB(), llvm::yaml::MachineFunction::RegBankSelected, llvm::yaml::MachineFunction::Selected, llvm::yaml::Output::setWriteDefaultValues(), SimplifyMIR, llvm::Sub, llvm::yaml::MachineFunction::TracksDebugUserValues, llvm::yaml::MachineFunction::UseDebugInstrRef, llvm::MachineFunction::useDebugInstrRef(), llvm::yaml::BlockStringValue::Value, and llvm::yaml::StringValue::Value.
Referenced by llvm::printMIR().
|
static |
Definition at line 771 of file MIRPrinter.cpp.
References assert(), llvm::MachineInstr::Disjoint, DL, E(), llvm::MachineInstr::FmAfn, llvm::MachineInstr::FmArcp, llvm::MachineInstr::FmContract, llvm::MachineInstr::FmNoInfs, llvm::MachineInstr::FmNoNans, llvm::MachineInstr::FmNsz, llvm::MachineInstr::FmReassoc, llvm::MachineInstr::FrameDestroy, llvm::MachineInstr::FrameSetup, I, llvm::MachineInstr::InBounds, llvm::MachineOperand::isDef(), llvm::MachineInstr::IsExact, llvm::MachineOperand::isImplicit(), llvm::MachineOperand::isReg(), MI, MRI, llvm::MachineInstr::NoConvergent, llvm::MachineInstr::NoFPExcept, llvm::MachineInstr::NoMerge, llvm::MachineInstr::NonNeg, llvm::MachineInstr::NoSWrap, llvm::MachineInstr::NoUSWrap, llvm::MachineInstr::NoUWrap, PrintLocations, printMIOperand(), llvm::MachineOperand::printSymbol(), llvm::MachineInstr::SameSign, TII, TRI, and llvm::MachineInstr::Unpredictable.
Referenced by printMBB().
|
static |
Definition at line 910 of file MIRPrinter.cpp.
References formatOperandComment(), llvm::StringRef::lower(), MI, llvm::MachineOperand::MO_BlockAddress, llvm::MachineOperand::MO_CFIIndex, llvm::MachineOperand::MO_CImmediate, llvm::MachineOperand::MO_ConstantPoolIndex, llvm::MachineOperand::MO_DbgInstrRef, llvm::MachineOperand::MO_ExternalSymbol, llvm::MachineOperand::MO_FPImmediate, llvm::MachineOperand::MO_FrameIndex, llvm::MachineOperand::MO_GlobalAddress, llvm::MachineOperand::MO_Immediate, llvm::MachineOperand::MO_IntrinsicID, llvm::MachineOperand::MO_JumpTableIndex, llvm::MachineOperand::MO_MachineBasicBlock, llvm::MachineOperand::MO_MCSymbol, llvm::MachineOperand::MO_Metadata, llvm::MachineOperand::MO_Predicate, llvm::MachineOperand::MO_Register, llvm::MachineOperand::MO_RegisterLiveOut, llvm::MachineOperand::MO_RegisterMask, llvm::MachineOperand::MO_ShuffleMask, llvm::MachineOperand::MO_TargetIndex, MRI, OpIdx, printCustomRegMask(), printStackObjectReference(), llvm::MachineOperand::printSubRegIdx(), llvm::MachineOperand::printTargetFlags(), TII, and TRI.
Referenced by printMI().
|
static |
Definition at line 267 of file MIRPrinter.cpp.
References llvm::printRegClassOrBank(), Reg, TRI, and llvm::yaml::StringValue::Value.
|
static |
|
static |
Definition at line 126 of file MIRPrinter.cpp.
References llvm::printReg(), Reg, TRI, and llvm::yaml::StringValue::Value.
Referenced by convertCallSiteObjects(), convertEntryValueObjects(), convertMRI(), and convertStackObjects().
|
static |
Definition at line 276 of file MIRPrinter.cpp.
References llvm::MachineFunction::VariableDbgInfo::Expr, llvm::MachineFunction::VariableDbgInfo::Loc, T, and llvm::MachineFunction::VariableDbgInfo::Var.
Referenced by convertEntryValueObjects(), and convertStackObjects().
|
static |
Definition at line 381 of file MIRPrinter.cpp.
References assert(), and llvm::MachineOperand::printStackObjectReference().
Referenced by convertStackObjects(), and printMIOperand().
|
static |
Referenced by printMI().