PPCMachineFunctionInfo.cpp revision 360660
1//===-- PPCMachineFunctionInfo.cpp - Private data used for PowerPC --------===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8 9#include "PPCMachineFunctionInfo.h" 10#include "llvm/ADT/Twine.h" 11#include "llvm/IR/DataLayout.h" 12#include "llvm/MC/MCContext.h" 13 14using namespace llvm; 15 16void PPCFunctionInfo::anchor() {} 17 18MCSymbol *PPCFunctionInfo::getPICOffsetSymbol() const { 19 const DataLayout &DL = MF.getDataLayout(); 20 return MF.getContext().getOrCreateSymbol(Twine(DL.getPrivateGlobalPrefix()) + 21 Twine(MF.getFunctionNumber()) + 22 "$poff"); 23} 24 25MCSymbol *PPCFunctionInfo::getGlobalEPSymbol() const { 26 const DataLayout &DL = MF.getDataLayout(); 27 return MF.getContext().getOrCreateSymbol(Twine(DL.getPrivateGlobalPrefix()) + 28 "func_gep" + 29 Twine(MF.getFunctionNumber())); 30} 31 32MCSymbol *PPCFunctionInfo::getLocalEPSymbol() const { 33 const DataLayout &DL = MF.getDataLayout(); 34 return MF.getContext().getOrCreateSymbol(Twine(DL.getPrivateGlobalPrefix()) + 35 "func_lep" + 36 Twine(MF.getFunctionNumber())); 37} 38 39MCSymbol *PPCFunctionInfo::getTOCOffsetSymbol() const { 40 const DataLayout &DL = MF.getDataLayout(); 41 return MF.getContext().getOrCreateSymbol(Twine(DL.getPrivateGlobalPrefix()) + 42 "func_toc" + 43 Twine(MF.getFunctionNumber())); 44} 45 46bool PPCFunctionInfo::isLiveInSExt(unsigned VReg) const { 47 for (const std::pair<unsigned, ISD::ArgFlagsTy> &LiveIn : LiveInAttrs) 48 if (LiveIn.first == VReg) 49 return LiveIn.second.isSExt(); 50 return false; 51} 52 53bool PPCFunctionInfo::isLiveInZExt(unsigned VReg) const { 54 for (const std::pair<unsigned, ISD::ArgFlagsTy> &LiveIn : LiveInAttrs) 55 if (LiveIn.first == VReg) 56 return LiveIn.second.isZExt(); 57 return false; 58} 59