xref: /aosp_15_r20/external/llvm/lib/Target/AVR/AVRMachineFunctionInfo.h (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker //===-- AVRMachineFuctionInfo.h - AVR machine function info -----*- C++ -*-===//
2*9880d681SAndroid Build Coastguard Worker //
3*9880d681SAndroid Build Coastguard Worker //                     The LLVM Compiler Infrastructure
4*9880d681SAndroid Build Coastguard Worker //
5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source
6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details.
7*9880d681SAndroid Build Coastguard Worker //
8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
9*9880d681SAndroid Build Coastguard Worker //
10*9880d681SAndroid Build Coastguard Worker // This file declares AVR-specific per-machine-function information.
11*9880d681SAndroid Build Coastguard Worker //
12*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
13*9880d681SAndroid Build Coastguard Worker 
14*9880d681SAndroid Build Coastguard Worker #ifndef LLVM_AVR_MACHINE_FUNCTION_INFO_H
15*9880d681SAndroid Build Coastguard Worker #define LLVM_AVR_MACHINE_FUNCTION_INFO_H
16*9880d681SAndroid Build Coastguard Worker 
17*9880d681SAndroid Build Coastguard Worker #include "llvm/CodeGen/MachineFunction.h"
18*9880d681SAndroid Build Coastguard Worker 
19*9880d681SAndroid Build Coastguard Worker namespace llvm {
20*9880d681SAndroid Build Coastguard Worker 
21*9880d681SAndroid Build Coastguard Worker /// Contains AVR-specific information for each MachineFunction.
22*9880d681SAndroid Build Coastguard Worker class AVRMachineFunctionInfo : public MachineFunctionInfo {
23*9880d681SAndroid Build Coastguard Worker   /// Indicates if a register has been spilled by the register
24*9880d681SAndroid Build Coastguard Worker   /// allocator.
25*9880d681SAndroid Build Coastguard Worker   bool HasSpills;
26*9880d681SAndroid Build Coastguard Worker 
27*9880d681SAndroid Build Coastguard Worker   /// Indicates if there are any fixed size allocas present.
28*9880d681SAndroid Build Coastguard Worker   /// Note that if there are only variable sized allocas this is set to false.
29*9880d681SAndroid Build Coastguard Worker   bool HasAllocas;
30*9880d681SAndroid Build Coastguard Worker 
31*9880d681SAndroid Build Coastguard Worker   /// Indicates if arguments passed using the stack are being
32*9880d681SAndroid Build Coastguard Worker   /// used inside the function.
33*9880d681SAndroid Build Coastguard Worker   bool HasStackArgs;
34*9880d681SAndroid Build Coastguard Worker 
35*9880d681SAndroid Build Coastguard Worker   /// Size of the callee-saved register portion of the
36*9880d681SAndroid Build Coastguard Worker   /// stack frame in bytes.
37*9880d681SAndroid Build Coastguard Worker   unsigned CalleeSavedFrameSize;
38*9880d681SAndroid Build Coastguard Worker 
39*9880d681SAndroid Build Coastguard Worker   /// FrameIndex for start of varargs area.
40*9880d681SAndroid Build Coastguard Worker   int VarArgsFrameIndex;
41*9880d681SAndroid Build Coastguard Worker 
42*9880d681SAndroid Build Coastguard Worker public:
AVRMachineFunctionInfo()43*9880d681SAndroid Build Coastguard Worker   AVRMachineFunctionInfo()
44*9880d681SAndroid Build Coastguard Worker       : HasSpills(false), HasAllocas(false), HasStackArgs(false),
45*9880d681SAndroid Build Coastguard Worker         CalleeSavedFrameSize(0), VarArgsFrameIndex(0) {}
46*9880d681SAndroid Build Coastguard Worker 
AVRMachineFunctionInfo(MachineFunction & MF)47*9880d681SAndroid Build Coastguard Worker   explicit AVRMachineFunctionInfo(MachineFunction &MF)
48*9880d681SAndroid Build Coastguard Worker       : HasSpills(false), HasAllocas(false), HasStackArgs(false),
49*9880d681SAndroid Build Coastguard Worker         CalleeSavedFrameSize(0), VarArgsFrameIndex(0) {}
50*9880d681SAndroid Build Coastguard Worker 
getHasSpills()51*9880d681SAndroid Build Coastguard Worker   bool getHasSpills() const { return HasSpills; }
setHasSpills(bool B)52*9880d681SAndroid Build Coastguard Worker   void setHasSpills(bool B) { HasSpills = B; }
53*9880d681SAndroid Build Coastguard Worker 
getHasAllocas()54*9880d681SAndroid Build Coastguard Worker   bool getHasAllocas() const { return HasAllocas; }
setHasAllocas(bool B)55*9880d681SAndroid Build Coastguard Worker   void setHasAllocas(bool B) { HasAllocas = B; }
56*9880d681SAndroid Build Coastguard Worker 
getHasStackArgs()57*9880d681SAndroid Build Coastguard Worker   bool getHasStackArgs() const { return HasStackArgs; }
setHasStackArgs(bool B)58*9880d681SAndroid Build Coastguard Worker   void setHasStackArgs(bool B) { HasStackArgs = B; }
59*9880d681SAndroid Build Coastguard Worker 
getCalleeSavedFrameSize()60*9880d681SAndroid Build Coastguard Worker   unsigned getCalleeSavedFrameSize() const { return CalleeSavedFrameSize; }
setCalleeSavedFrameSize(unsigned Bytes)61*9880d681SAndroid Build Coastguard Worker   void setCalleeSavedFrameSize(unsigned Bytes) { CalleeSavedFrameSize = Bytes; }
62*9880d681SAndroid Build Coastguard Worker 
getVarArgsFrameIndex()63*9880d681SAndroid Build Coastguard Worker   int getVarArgsFrameIndex() const { return VarArgsFrameIndex; }
setVarArgsFrameIndex(int Idx)64*9880d681SAndroid Build Coastguard Worker   void setVarArgsFrameIndex(int Idx) { VarArgsFrameIndex = Idx; }
65*9880d681SAndroid Build Coastguard Worker };
66*9880d681SAndroid Build Coastguard Worker 
67*9880d681SAndroid Build Coastguard Worker } // end llvm namespace
68*9880d681SAndroid Build Coastguard Worker 
69*9880d681SAndroid Build Coastguard Worker #endif // LLVM_AVR_MACHINE_FUNCTION_INFO_H
70