60 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
| //===- ARCMachineFunctionInfo.h - ARC 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
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| //
 | |
| // This file declares ARC-specific per-machine-function information.
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| 
 | |
| #ifndef LLVM_LIB_TARGET_ARC_ARCMACHINEFUNCTIONINFO_H
 | |
| #define LLVM_LIB_TARGET_ARC_ARCMACHINEFUNCTIONINFO_H
 | |
| 
 | |
| #include "llvm/CodeGen/MachineFunction.h"
 | |
| #include <vector>
 | |
| 
 | |
| namespace llvm {
 | |
| 
 | |
| /// ARCFunctionInfo - This class is derived from MachineFunction private
 | |
| /// ARC target-specific information for each MachineFunction.
 | |
| class ARCFunctionInfo : public MachineFunctionInfo {
 | |
|   virtual void anchor();
 | |
|   bool ReturnStackOffsetSet;
 | |
|   int VarArgsFrameIndex;
 | |
|   unsigned ReturnStackOffset;
 | |
| 
 | |
| public:
 | |
|   ARCFunctionInfo()
 | |
|       : ReturnStackOffsetSet(false), VarArgsFrameIndex(0),
 | |
|         ReturnStackOffset(-1U), MaxCallStackReq(0) {}
 | |
| 
 | |
|   explicit ARCFunctionInfo(MachineFunction &MF)
 | |
|       : ReturnStackOffsetSet(false), VarArgsFrameIndex(0),
 | |
|         ReturnStackOffset(-1U), MaxCallStackReq(0) {}
 | |
| 
 | |
|   ~ARCFunctionInfo() {}
 | |
| 
 | |
|   void setVarArgsFrameIndex(int off) { VarArgsFrameIndex = off; }
 | |
|   int getVarArgsFrameIndex() const { return VarArgsFrameIndex; }
 | |
| 
 | |
|   void setReturnStackOffset(unsigned value) {
 | |
|     assert(!ReturnStackOffsetSet && "Return stack offset set twice");
 | |
|     ReturnStackOffset = value;
 | |
|     ReturnStackOffsetSet = true;
 | |
|   }
 | |
| 
 | |
|   unsigned getReturnStackOffset() const {
 | |
|     assert(ReturnStackOffsetSet && "Return stack offset not set");
 | |
|     return ReturnStackOffset;
 | |
|   }
 | |
| 
 | |
|   unsigned MaxCallStackReq;
 | |
| };
 | |
| 
 | |
| } // end namespace llvm
 | |
| 
 | |
| #endif // LLVM_LIB_TARGET_ARC_ARCMACHINEFUNCTIONINFO_H
 |