16void HexagonMachineFunctionInfo::anchor() {}
20 : SRetReturnReg(
Other.SRetReturnReg),
21 StackAlignBaseReg(
Other.StackAlignBaseReg),
22 VarArgsFrameIndex(
Other.VarArgsFrameIndex),
23 RegSavedAreaStartFrameIndex(
Other.RegSavedAreaStartFrameIndex),
24 FirstNamedArgFrameIndex(
Other.FirstNamedArgFrameIndex),
25 LastNamedArgFrameIndex(
Other.LastNamedArgFrameIndex),
26 HasClobberLR(
Other.HasClobberLR), HasEHReturn(
Other.HasEHReturn),
27 PacketInfo(
Other.PacketInfo) {
32 if (OtherMFI.isDeadObjectIndex(I))
34 int NewI = VTCMFrameInfo.CreateStackObject(
35 OtherMFI.getObjectSize(I), OtherMFI.getObjectAlign(I),
36 OtherMFI.isSpillSlotObjectIndex(I), OtherMFI.getObjectAllocation(I));
37 VTCMFrameInfo.setObjectOffset(NewI, OtherMFI.getObjectOffset(I));
38 ClonedIndices[I] = NewI;
41 for (
const auto &[From, To] :
Other.VTCMMap)
42 VTCMMap[From] = ClonedIndices.
lookup(To);
for(const MachineOperand &MO :llvm::drop_begin(OldMI.operands(), Desc.getNumOperands()))
Register const TargetRegisterInfo * TRI
static yaml::StringValue regToString(Register Reg, const TargetRegisterInfo &TRI)
ValueT lookup(const_arg_type_t< KeyT > Val) const
Return the entry for the specified key, or a default constructed value if no such entry exists.
Hexagon target-specific information for each MachineFunction.
HexagonMachineFunctionInfo()=default
MachineFunctionInfo * clone(BumpPtrAllocator &Allocator, MachineFunction &DestMF, const DenseMap< MachineBasicBlock *, MachineBasicBlock * > &Src2DstMBB) const override
Make a functionally equivalent copy of this MachineFunctionInfo in MF.
void initializeBaseYamlFields(const yaml::HexagonFunctionInfo &YamlMFI)
The MachineFrameInfo class represents an abstract stack frame until prolog/epilog code is inserted.
uint64_t getStackSize() const
Return the number of bytes that must be allocated to hold all of the fixed size frame objects.
int getObjectIndexEnd() const
Return one past the maximum frame object index.
int getObjectIndexBegin() const
Return the minimum frame object index.
Ty * cloneInfo(const Ty &Old)
Wrapper class representing virtual and physical registers.
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
A raw_ostream that writes to an std::string.
This is an optimization pass for GlobalISel generic memory operations.
BumpPtrAllocatorImpl<> BumpPtrAllocator
The standard BumpPtrAllocator which just uses the default template parameters.
LLVM_ABI Printable printReg(Register Reg, const TargetRegisterInfo *TRI=nullptr, unsigned SubIdx=0, const MachineRegisterInfo *MRI=nullptr)
Prints virtual and physical registers with or without a TRI instance.
MachineFunctionInfo - This class can be derived from and used by targets to hold private target-speci...
Hexagon-specific MachineFunction properties for YAML serialization.
void mappingImpl(yaml::IO &YamlIO) override
HexagonFunctionInfo()=default
StringValue StackAlignBaseReg
This class should be specialized by any type that needs to be converted to/from a YAML mapping.
A wrapper around std::string which contains a source range that's being set during parsing.