| //= 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/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) {} |