1 //=- CSKYMachineFunctionInfo.h - CSKY machine function info -------*- C++ -*-=//
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
7 //===----------------------------------------------------------------------===//
9 // This file declares CSKY-specific per-machine-function information.
11 //===----------------------------------------------------------------------===//
13 #ifndef LLVM_LIB_TARGET_CSKY_CSKYMACHINEFUNCTIONINFO_H
14 #define LLVM_LIB_TARGET_CSKY_CSKYMACHINEFUNCTIONINFO_H
16 #include "llvm/CodeGen/MachineFunction.h"
20 class CSKYMachineFunctionInfo
: public MachineFunctionInfo
{
21 Register GlobalBaseReg
= 0;
22 bool SpillsCR
= false;
24 int VarArgsFrameIndex
= 0;
25 unsigned VarArgsSaveSize
= 0;
27 int spillAreaSize
= 0;
29 bool LRSpilled
= false;
31 unsigned PICLabelUId
= 0;
34 CSKYMachineFunctionInfo(const Function
&F
, const TargetSubtargetInfo
*STI
) {}
37 clone(BumpPtrAllocator
&Allocator
, MachineFunction
&DestMF
,
38 const DenseMap
<MachineBasicBlock
*, MachineBasicBlock
*> &Src2DstMBB
)
40 return DestMF
.cloneInfo
<CSKYMachineFunctionInfo
>(*this);
43 Register
getGlobalBaseReg() const { return GlobalBaseReg
; }
44 void setGlobalBaseReg(Register Reg
) { GlobalBaseReg
= Reg
; }
46 void setSpillsCR() { SpillsCR
= true; }
47 bool isCRSpilled() const { return SpillsCR
; }
49 void setVarArgsFrameIndex(int v
) { VarArgsFrameIndex
= v
; }
50 int getVarArgsFrameIndex() { return VarArgsFrameIndex
; }
52 unsigned getVarArgsSaveSize() const { return VarArgsSaveSize
; }
53 void setVarArgsSaveSize(int Size
) { VarArgsSaveSize
= Size
; }
55 bool isLRSpilled() const { return LRSpilled
; }
56 void setLRIsSpilled(bool s
) { LRSpilled
= s
; }
58 void setCalleeSaveAreaSize(int v
) { spillAreaSize
= v
; }
59 int getCalleeSaveAreaSize() const { return spillAreaSize
; }
61 unsigned createPICLabelUId() { return ++PICLabelUId
; }
62 void initPICLabelUId(unsigned UId
) { PICLabelUId
= UId
; }
67 #endif // LLVM_LIB_TARGET_CSKY_CSKYMACHINEFUNCTIONINFO_H