diff options
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.cpp')
-rw-r--r-- | llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.cpp b/llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.cpp index 2f65d6a2855b..daf88589bb52 100644 --- a/llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.cpp +++ b/llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.cpp @@ -10,48 +10,55 @@ #include "llvm/ADT/Twine.h" #include "llvm/IR/DataLayout.h" #include "llvm/MC/MCContext.h" +#include "llvm/Support/CommandLine.h" using namespace llvm; +static cl::opt<bool> PPCDisableNonVolatileCR( + "ppc-disable-non-volatile-cr", + cl::desc("Disable the use of non-volatile CR register fields"), + cl::init(false), cl::Hidden); void PPCFunctionInfo::anchor() {} +PPCFunctionInfo::PPCFunctionInfo(const MachineFunction &MF) + : DisableNonVolatileCR(PPCDisableNonVolatileCR) {} -MCSymbol *PPCFunctionInfo::getPICOffsetSymbol() const { +MCSymbol *PPCFunctionInfo::getPICOffsetSymbol(MachineFunction &MF) const { const DataLayout &DL = MF.getDataLayout(); return MF.getContext().getOrCreateSymbol(Twine(DL.getPrivateGlobalPrefix()) + Twine(MF.getFunctionNumber()) + "$poff"); } -MCSymbol *PPCFunctionInfo::getGlobalEPSymbol() const { +MCSymbol *PPCFunctionInfo::getGlobalEPSymbol(MachineFunction &MF) const { const DataLayout &DL = MF.getDataLayout(); return MF.getContext().getOrCreateSymbol(Twine(DL.getPrivateGlobalPrefix()) + "func_gep" + Twine(MF.getFunctionNumber())); } -MCSymbol *PPCFunctionInfo::getLocalEPSymbol() const { +MCSymbol *PPCFunctionInfo::getLocalEPSymbol(MachineFunction &MF) const { const DataLayout &DL = MF.getDataLayout(); return MF.getContext().getOrCreateSymbol(Twine(DL.getPrivateGlobalPrefix()) + "func_lep" + Twine(MF.getFunctionNumber())); } -MCSymbol *PPCFunctionInfo::getTOCOffsetSymbol() const { +MCSymbol *PPCFunctionInfo::getTOCOffsetSymbol(MachineFunction &MF) const { const DataLayout &DL = MF.getDataLayout(); return MF.getContext().getOrCreateSymbol(Twine(DL.getPrivateGlobalPrefix()) + "func_toc" + Twine(MF.getFunctionNumber())); } -bool PPCFunctionInfo::isLiveInSExt(unsigned VReg) const { - for (const std::pair<unsigned, ISD::ArgFlagsTy> &LiveIn : LiveInAttrs) +bool PPCFunctionInfo::isLiveInSExt(Register VReg) const { + for (const std::pair<Register, ISD::ArgFlagsTy> &LiveIn : LiveInAttrs) if (LiveIn.first == VReg) return LiveIn.second.isSExt(); return false; } -bool PPCFunctionInfo::isLiveInZExt(unsigned VReg) const { - for (const std::pair<unsigned, ISD::ArgFlagsTy> &LiveIn : LiveInAttrs) +bool PPCFunctionInfo::isLiveInZExt(Register VReg) const { + for (const std::pair<Register, ISD::ArgFlagsTy> &LiveIn : LiveInAttrs) if (LiveIn.first == VReg) return LiveIn.second.isZExt(); return false; |