ARCMachineFunctionInfo.h revision 360784
1//===- ARCMachineFunctionInfo.h - ARC machine function info -----*- C++ -*-===// 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// This file declares ARC-specific per-machine-function information. 10// 11//===----------------------------------------------------------------------===// 12 13#ifndef LLVM_LIB_TARGET_ARC_ARCMACHINEFUNCTIONINFO_H 14#define LLVM_LIB_TARGET_ARC_ARCMACHINEFUNCTIONINFO_H 15 16#include "llvm/CodeGen/MachineFunction.h" 17#include <vector> 18 19namespace llvm { 20 21/// ARCFunctionInfo - This class is derived from MachineFunction private 22/// ARC target-specific information for each MachineFunction. 23class ARCFunctionInfo : public MachineFunctionInfo { 24 virtual void anchor(); 25 bool ReturnStackOffsetSet; 26 int VarArgsFrameIndex; 27 unsigned ReturnStackOffset; 28 29public: 30 ARCFunctionInfo() 31 : ReturnStackOffsetSet(false), VarArgsFrameIndex(0), 32 ReturnStackOffset(-1U), MaxCallStackReq(0) {} 33 34 explicit ARCFunctionInfo(MachineFunction &MF) 35 : ReturnStackOffsetSet(false), VarArgsFrameIndex(0), 36 ReturnStackOffset(-1U), MaxCallStackReq(0) { 37 // Functions are 4-byte aligned. 38 MF.setAlignment(Align(4)); 39 } 40 41 ~ARCFunctionInfo() {} 42 43 void setVarArgsFrameIndex(int off) { VarArgsFrameIndex = off; } 44 int getVarArgsFrameIndex() const { return VarArgsFrameIndex; } 45 46 void setReturnStackOffset(unsigned value) { 47 assert(!ReturnStackOffsetSet && "Return stack offset set twice"); 48 ReturnStackOffset = value; 49 ReturnStackOffsetSet = true; 50 } 51 52 unsigned getReturnStackOffset() const { 53 assert(ReturnStackOffsetSet && "Return stack offset not set"); 54 return ReturnStackOffset; 55 } 56 57 unsigned MaxCallStackReq; 58}; 59 60} // end namespace llvm 61 62#endif // LLVM_LIB_TARGET_ARC_ARCMACHINEFUNCTIONINFO_H 63