From: Dylan McKay Date: Mon, 21 Dec 2015 23:13:15 +0000 (+0000) Subject: [AVR] Added configuration file and machine function information class X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=bbd9331669e953b210d2f3e483506053275ed8e2 [AVR] Added configuration file and machine function information class This commit adds the 'AVRMachineFunctionInfo' class, which simply stores basic properties about generated machine functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@256213 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/AVR/AVRConfig.h b/lib/Target/AVR/AVRConfig.h new file mode 100644 index 00000000000..65588bc5084 --- /dev/null +++ b/lib/Target/AVR/AVRConfig.h @@ -0,0 +1,15 @@ +//===-- AVRConfig.h - AVR Backend Configuration Header ----------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_AVR_CONFIG_H +#define LLVM_AVR_CONFIG_H + +#define LLVM_AVR_GCC_COMPAT + +#endif // LLVM_AVR_CONFIG_H diff --git a/lib/Target/AVR/AVRMachineFunctionInfo.h b/lib/Target/AVR/AVRMachineFunctionInfo.h new file mode 100644 index 00000000000..6571d5d3e60 --- /dev/null +++ b/lib/Target/AVR/AVRMachineFunctionInfo.h @@ -0,0 +1,73 @@ +//===-- 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 "AVRConfig.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