blob: e1444416a020c298521b6808fb97314a8563f46c [file] [edit]
//= HexagonMachineFunctionInfo.cpp - Hexagon machine function info *- C++ -*-=//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include "HexagonMachineFunctionInfo.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/Support/raw_ostream.h"
using namespace llvm;
// pin vtable to this file
void HexagonMachineFunctionInfo::anchor() {}
MachineFunctionInfo *HexagonMachineFunctionInfo::clone(
BumpPtrAllocator &Allocator, MachineFunction &DestMF,
const DenseMap<MachineBasicBlock *, MachineBasicBlock *> &Src2DstMBB)
const {
return DestMF.cloneInfo<HexagonMachineFunctionInfo>(*this);
}
static yaml::StringValue regToString(Register Reg,
const TargetRegisterInfo &TRI) {
yaml::StringValue Dest;
if (Reg.isValid()) {
raw_string_ostream OS(Dest.Value);
OS << printReg(Reg, &TRI);
}
return Dest;
}
yaml::HexagonFunctionInfo::HexagonFunctionInfo(
const llvm::HexagonMachineFunctionInfo &MFI, const TargetRegisterInfo &TRI)
: StackAlignBaseReg(regToString(MFI.getStackAlignBaseReg(), TRI)) {}
void yaml::HexagonFunctionInfo::mappingImpl(yaml::IO &YamlIO) {
MappingTraits<HexagonFunctionInfo>::mapping(YamlIO, *this);
}
void HexagonMachineFunctionInfo::initializeBaseYamlFields(
const yaml::HexagonFunctionInfo &YamlMFI) {}