|  | //===-- AVRMachineFuctionInfo.h - AVR machine function info -----*- C++ -*-===// | 
|  | // | 
|  | //                     The LLVM Compiler Infrastructure | 
|  | // | 
|  | // This file is distributed under the University of Illinois Open Source | 
|  | // License. See LICENSE.TXT for details. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  | // | 
|  | // This file declares AVR-specific per-machine-function information. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  |  | 
|  | #ifndef LLVM_AVR_MACHINE_FUNCTION_INFO_H | 
|  | #define LLVM_AVR_MACHINE_FUNCTION_INFO_H | 
|  |  | 
|  | #include "llvm/CodeGen/MachineFunction.h" | 
|  |  | 
|  | namespace llvm { | 
|  |  | 
|  | /// Contains AVR-specific information for each MachineFunction. | 
|  | class AVRMachineFunctionInfo : public MachineFunctionInfo { | 
|  | /// Indicates if a register has been spilled by the register | 
|  | /// allocator. | 
|  | bool HasSpills; | 
|  |  | 
|  | /// Indicates if there are any fixed size allocas present. | 
|  | /// Note that if there are only variable sized allocas this is set to false. | 
|  | bool HasAllocas; | 
|  |  | 
|  | /// Indicates if arguments passed using the stack are being | 
|  | /// used inside the function. | 
|  | bool HasStackArgs; | 
|  |  | 
|  | /// Size of the callee-saved register portion of the | 
|  | /// stack frame in bytes. | 
|  | unsigned CalleeSavedFrameSize; | 
|  |  | 
|  | /// FrameIndex for start of varargs area. | 
|  | int VarArgsFrameIndex; | 
|  |  | 
|  | public: | 
|  | AVRMachineFunctionInfo() | 
|  | : HasSpills(false), HasAllocas(false), HasStackArgs(false), | 
|  | CalleeSavedFrameSize(0), VarArgsFrameIndex(0) {} | 
|  |  | 
|  | explicit AVRMachineFunctionInfo(MachineFunction &MF) | 
|  | : HasSpills(false), HasAllocas(false), HasStackArgs(false), | 
|  | CalleeSavedFrameSize(0), VarArgsFrameIndex(0) {} | 
|  |  | 
|  | bool getHasSpills() const { return HasSpills; } | 
|  | void setHasSpills(bool B) { HasSpills = B; } | 
|  |  | 
|  | bool getHasAllocas() const { return HasAllocas; } | 
|  | void setHasAllocas(bool B) { HasAllocas = B; } | 
|  |  | 
|  | bool getHasStackArgs() const { return HasStackArgs; } | 
|  | void setHasStackArgs(bool B) { HasStackArgs = B; } | 
|  |  | 
|  | unsigned getCalleeSavedFrameSize() const { return CalleeSavedFrameSize; } | 
|  | void setCalleeSavedFrameSize(unsigned Bytes) { CalleeSavedFrameSize = Bytes; } | 
|  |  | 
|  | int getVarArgsFrameIndex() const { return VarArgsFrameIndex; } | 
|  | void setVarArgsFrameIndex(int Idx) { VarArgsFrameIndex = Idx; } | 
|  | }; | 
|  |  | 
|  | } // end llvm namespace | 
|  |  | 
|  | #endif // LLVM_AVR_MACHINE_FUNCTION_INFO_H |