From c878f3899c01db796d72bab8ac5156c124eb30ca Mon Sep 17 00:00:00 2001 From: Akira Hatanaka Date: Wed, 26 Sep 2012 19:18:19 +0000 Subject: Delete member MipsFunctionInfo::OutArgFIRange and code that accesses it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164718 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Mips/MipsMachineFunction.h | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) (limited to 'lib/Target/Mips/MipsMachineFunction.h') diff --git a/lib/Target/Mips/MipsMachineFunction.h b/lib/Target/Mips/MipsMachineFunction.h index df3c4c0..93ce948 100644 --- a/lib/Target/Mips/MipsMachineFunction.h +++ b/lib/Target/Mips/MipsMachineFunction.h @@ -45,9 +45,7 @@ class MipsFunctionInfo : public MachineFunctionInfo { // Range of frame object indices. // InArgFIRange: Range of indices of all frame objects created during call to // LowerFormalArguments. - // OutArgFIRange: Range of indices of all frame objects created during call to - // LowerCall except for the frame object for restoring $gp. - std::pair InArgFIRange, OutArgFIRange; + std::pair InArgFIRange; unsigned MaxCallFrameSize; bool EmitNOAT; @@ -56,7 +54,7 @@ public: MipsFunctionInfo(MachineFunction& MF) : MF(MF), SRetReturnReg(0), GlobalBaseReg(0), VarArgsFrameIndex(0), InArgFIRange(std::make_pair(-1, 0)), - OutArgFIRange(std::make_pair(-1, 0)), MaxCallFrameSize(0), EmitNOAT(false) + MaxCallFrameSize(0), EmitNOAT(false) {} bool isInArgFI(int FI) const { @@ -64,16 +62,6 @@ public: } void setLastInArgFI(int FI) { InArgFIRange.second = FI; } - bool isOutArgFI(int FI) const { - return FI <= OutArgFIRange.first && FI >= OutArgFIRange.second; - } - void extendOutArgFIRange(int FirstFI, int LastFI) { - if (!OutArgFIRange.second) - // this must be the first time this function was called. - OutArgFIRange.first = FirstFI; - OutArgFIRange.second = LastFI; - } - unsigned getSRetReturnReg() const { return SRetReturnReg; } void setSRetReturnReg(unsigned Reg) { SRetReturnReg = Reg; } -- cgit v1.1 From e06ce4c2c48351d6d74ac2f81e72e17e5ec9fdc7 Mon Sep 17 00:00:00 2001 From: Akira Hatanaka Date: Fri, 19 Oct 2012 21:18:38 +0000 Subject: [mips] Delete MipsFunctionInfo::MaxCallFrameSize which is no longer used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166339 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Mips/MipsMachineFunction.h | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'lib/Target/Mips/MipsMachineFunction.h') diff --git a/lib/Target/Mips/MipsMachineFunction.h b/lib/Target/Mips/MipsMachineFunction.h index 93ce948..5b766f2 100644 --- a/lib/Target/Mips/MipsMachineFunction.h +++ b/lib/Target/Mips/MipsMachineFunction.h @@ -46,15 +46,13 @@ class MipsFunctionInfo : public MachineFunctionInfo { // InArgFIRange: Range of indices of all frame objects created during call to // LowerFormalArguments. std::pair InArgFIRange; - unsigned MaxCallFrameSize; bool EmitNOAT; public: MipsFunctionInfo(MachineFunction& MF) : MF(MF), SRetReturnReg(0), GlobalBaseReg(0), - VarArgsFrameIndex(0), InArgFIRange(std::make_pair(-1, 0)), - MaxCallFrameSize(0), EmitNOAT(false) + VarArgsFrameIndex(0), InArgFIRange(std::make_pair(-1, 0)), EmitNOAT(false) {} bool isInArgFI(int FI) const { @@ -71,9 +69,6 @@ public: int getVarArgsFrameIndex() const { return VarArgsFrameIndex; } void setVarArgsFrameIndex(int Index) { VarArgsFrameIndex = Index; } - unsigned getMaxCallFrameSize() const { return MaxCallFrameSize; } - void setMaxCallFrameSize(unsigned S) { MaxCallFrameSize = S; } - bool getEmitNOAT() const { return EmitNOAT; } void setEmitNOAT() { EmitNOAT = true; } }; -- cgit v1.1 From 3649255e14e369aa70bf1122cd5b0e1a92431662 Mon Sep 17 00:00:00 2001 From: Akira Hatanaka Date: Fri, 26 Oct 2012 23:49:51 +0000 Subject: Delete MipsFunctionInfo::InArgFIRange. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166837 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Mips/MipsMachineFunction.h | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) (limited to 'lib/Target/Mips/MipsMachineFunction.h') diff --git a/lib/Target/Mips/MipsMachineFunction.h b/lib/Target/Mips/MipsMachineFunction.h index 5b766f2..b05f618 100644 --- a/lib/Target/Mips/MipsMachineFunction.h +++ b/lib/Target/Mips/MipsMachineFunction.h @@ -42,24 +42,14 @@ class MipsFunctionInfo : public MachineFunctionInfo { /// VarArgsFrameIndex - FrameIndex for start of varargs area. int VarArgsFrameIndex; - // Range of frame object indices. - // InArgFIRange: Range of indices of all frame objects created during call to - // LowerFormalArguments. - std::pair InArgFIRange; - bool EmitNOAT; public: MipsFunctionInfo(MachineFunction& MF) : MF(MF), SRetReturnReg(0), GlobalBaseReg(0), - VarArgsFrameIndex(0), InArgFIRange(std::make_pair(-1, 0)), EmitNOAT(false) + VarArgsFrameIndex(0), EmitNOAT(false) {} - bool isInArgFI(int FI) const { - return FI <= InArgFIRange.first && FI >= InArgFIRange.second; - } - void setLastInArgFI(int FI) { InArgFIRange.second = FI; } - unsigned getSRetReturnReg() const { return SRetReturnReg; } void setSRetReturnReg(unsigned Reg) { SRetReturnReg = Reg; } -- cgit v1.1 From f99998a2b0a6c186b3a1b6ad7bfa488009a0c5f5 Mon Sep 17 00:00:00 2001 From: Reed Kotler Date: Sun, 28 Oct 2012 06:02:37 +0000 Subject: This patch is for the implementation of mips16 complex pattern addr16. Previously mips16 was sharing the pattern addr which is used for mips32 and mips64. This had a number of problems: 1) Storing and loading byte and halfword quantities for mips16 has particular problems due to the primarily non mips16 nature of SP. When we must load/store byte/halfword stack objects in a function, we must create a mips16 alias register for SP. This functionality is tested in stchar.ll. 2) We need to have an FP register under certain conditions (such as dynamically sized alloca). We use mips16 register S0 for this purpose. In this case, we also use this register when accessing frame objects so this issue also affects the complex pattern addr16. This functionality is tested in alloca16.ll. The Mips16InstrInfo.td has been updated to use addr16 instead of addr. The complex pattern C++ function for addr has been copied to addr16 and updated to reflect the above issues. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166897 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Mips/MipsMachineFunction.h | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'lib/Target/Mips/MipsMachineFunction.h') diff --git a/lib/Target/Mips/MipsMachineFunction.h b/lib/Target/Mips/MipsMachineFunction.h index b05f618..f9efe07 100644 --- a/lib/Target/Mips/MipsMachineFunction.h +++ b/lib/Target/Mips/MipsMachineFunction.h @@ -39,6 +39,11 @@ class MipsFunctionInfo : public MachineFunctionInfo { /// relocation models. unsigned GlobalBaseReg; + /// Mips16SPAliasReg - keeps track of the virtual register initialized for + /// use as an alias for SP for use in load/store of halfword/byte from/to + /// the stack + unsigned Mips16SPAliasReg; + /// VarArgsFrameIndex - FrameIndex for start of varargs area. int VarArgsFrameIndex; @@ -46,8 +51,8 @@ class MipsFunctionInfo : public MachineFunctionInfo { public: MipsFunctionInfo(MachineFunction& MF) - : MF(MF), SRetReturnReg(0), GlobalBaseReg(0), - VarArgsFrameIndex(0), EmitNOAT(false) + : MF(MF), SRetReturnReg(0), GlobalBaseReg(0), Mips16SPAliasReg(0), + VarArgsFrameIndex(0), EmitNOAT(false) {} unsigned getSRetReturnReg() const { return SRetReturnReg; } @@ -56,6 +61,9 @@ public: bool globalBaseRegSet() const; unsigned getGlobalBaseReg(); + bool mips16SPAliasRegSet() const; + unsigned getMips16SPAliasReg(); + int getVarArgsFrameIndex() const { return VarArgsFrameIndex; } void setVarArgsFrameIndex(int Index) { VarArgsFrameIndex = Index; } -- cgit v1.1 From b33b34a7dc447cf52702b8892c9829344e81f73a Mon Sep 17 00:00:00 2001 From: Akira Hatanaka Date: Tue, 30 Oct 2012 19:37:25 +0000 Subject: Add code for saving formal argument information to MipsFunctionInfo. This information will be used by IsEligibleForTailCallOptimization to determine whether a call can be tail-call optimized. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167043 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Mips/MipsMachineFunction.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'lib/Target/Mips/MipsMachineFunction.h') diff --git a/lib/Target/Mips/MipsMachineFunction.h b/lib/Target/Mips/MipsMachineFunction.h index f9efe07..663aaec 100644 --- a/lib/Target/Mips/MipsMachineFunction.h +++ b/lib/Target/Mips/MipsMachineFunction.h @@ -47,6 +47,10 @@ class MipsFunctionInfo : public MachineFunctionInfo { /// VarArgsFrameIndex - FrameIndex for start of varargs area. int VarArgsFrameIndex; + // Formal argument information obtained during call to LowerFormalArguments. + unsigned NextStackOffset; + bool HasByvalArg; + bool EmitNOAT; public: @@ -67,6 +71,13 @@ public: int getVarArgsFrameIndex() const { return VarArgsFrameIndex; } void setVarArgsFrameIndex(int Index) { VarArgsFrameIndex = Index; } + unsigned nextStackOffset() const { return NextStackOffset; } + bool hasByvalArg() const { return HasByvalArg; } + void setFormalArgInfo(unsigned Offset, bool HasByval) { + NextStackOffset = Offset; + HasByvalArg = HasByval; + } + bool getEmitNOAT() const { return EmitNOAT; } void setEmitNOAT() { EmitNOAT = true; } }; -- cgit v1.1 From 173192fa71a45ee87479c0eb7753bf116bce36b8 Mon Sep 17 00:00:00 2001 From: Akira Hatanaka Date: Fri, 2 Nov 2012 20:56:25 +0000 Subject: [mips] Delete MipsFunctionInfo::EmitNOAT. Unconditionally print directive "set .noat" so that the assembler doesn't issue warnings when register $AT is used. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167310 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Mips/MipsMachineFunction.h | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'lib/Target/Mips/MipsMachineFunction.h') diff --git a/lib/Target/Mips/MipsMachineFunction.h b/lib/Target/Mips/MipsMachineFunction.h index 663aaec..1b3e0a3 100644 --- a/lib/Target/Mips/MipsMachineFunction.h +++ b/lib/Target/Mips/MipsMachineFunction.h @@ -51,12 +51,10 @@ class MipsFunctionInfo : public MachineFunctionInfo { unsigned NextStackOffset; bool HasByvalArg; - bool EmitNOAT; - public: MipsFunctionInfo(MachineFunction& MF) : MF(MF), SRetReturnReg(0), GlobalBaseReg(0), Mips16SPAliasReg(0), - VarArgsFrameIndex(0), EmitNOAT(false) + VarArgsFrameIndex(0) {} unsigned getSRetReturnReg() const { return SRetReturnReg; } @@ -77,9 +75,6 @@ public: NextStackOffset = Offset; HasByvalArg = HasByval; } - - bool getEmitNOAT() const { return EmitNOAT; } - void setEmitNOAT() { EmitNOAT = true; } }; } // end of namespace llvm -- cgit v1.1 From 294166d541fd634fea09fb1fe48457536ef43ed0 Mon Sep 17 00:00:00 2001 From: Akira Hatanaka Date: Fri, 2 Nov 2012 21:03:58 +0000 Subject: [mips] Add member field MipsFunctionInfo::IncomingArgSize which holds the size of the incoming argument area. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167312 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Mips/MipsMachineFunction.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'lib/Target/Mips/MipsMachineFunction.h') diff --git a/lib/Target/Mips/MipsMachineFunction.h b/lib/Target/Mips/MipsMachineFunction.h index 1b3e0a3..d2eba58 100644 --- a/lib/Target/Mips/MipsMachineFunction.h +++ b/lib/Target/Mips/MipsMachineFunction.h @@ -51,6 +51,9 @@ class MipsFunctionInfo : public MachineFunctionInfo { unsigned NextStackOffset; bool HasByvalArg; + // Size of incoming argument area. + unsigned IncomingArgSize; + public: MipsFunctionInfo(MachineFunction& MF) : MF(MF), SRetReturnReg(0), GlobalBaseReg(0), Mips16SPAliasReg(0), @@ -75,6 +78,9 @@ public: NextStackOffset = Offset; HasByvalArg = HasByval; } + + unsigned getIncomingArgSize() const { return IncomingArgSize; } + void setIncomingArgSize(unsigned S) { IncomingArgSize = S; } }; } // end of namespace llvm -- cgit v1.1 From 7085221a593ac5cb2478a4f81e0f7212616a9afb Mon Sep 17 00:00:00 2001 From: Akira Hatanaka Date: Wed, 7 Nov 2012 19:04:26 +0000 Subject: Delete MipsFunctionInfo::NextStackOffset. No functionality change intended. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167546 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Mips/MipsMachineFunction.h | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'lib/Target/Mips/MipsMachineFunction.h') diff --git a/lib/Target/Mips/MipsMachineFunction.h b/lib/Target/Mips/MipsMachineFunction.h index d2eba58..bb45f92 100644 --- a/lib/Target/Mips/MipsMachineFunction.h +++ b/lib/Target/Mips/MipsMachineFunction.h @@ -47,11 +47,10 @@ class MipsFunctionInfo : public MachineFunctionInfo { /// VarArgsFrameIndex - FrameIndex for start of varargs area. int VarArgsFrameIndex; - // Formal argument information obtained during call to LowerFormalArguments. - unsigned NextStackOffset; + /// True if function has a byval argument. bool HasByvalArg; - // Size of incoming argument area. + /// Size of incoming argument area. unsigned IncomingArgSize; public: @@ -72,15 +71,13 @@ public: int getVarArgsFrameIndex() const { return VarArgsFrameIndex; } void setVarArgsFrameIndex(int Index) { VarArgsFrameIndex = Index; } - unsigned nextStackOffset() const { return NextStackOffset; } bool hasByvalArg() const { return HasByvalArg; } - void setFormalArgInfo(unsigned Offset, bool HasByval) { - NextStackOffset = Offset; + void setFormalArgInfo(unsigned Size, bool HasByval) { + IncomingArgSize = Size; HasByvalArg = HasByval; } unsigned getIncomingArgSize() const { return IncomingArgSize; } - void setIncomingArgSize(unsigned S) { IncomingArgSize = S; } }; } // end of namespace llvm -- cgit v1.1 From a1514e24cc24b050f53a12650e047799358833a1 Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Tue, 4 Dec 2012 07:12:27 +0000 Subject: Sort includes for all of the .h files under the 'lib' tree. These were missed in the first pass because the script didn't yet handle include guards. Note that the script is now able to handle all of these headers without manual edits. =] git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169224 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/Mips/MipsMachineFunction.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/Target/Mips/MipsMachineFunction.h') diff --git a/lib/Target/Mips/MipsMachineFunction.h b/lib/Target/Mips/MipsMachineFunction.h index bb45f92..eb6e1cf 100644 --- a/lib/Target/Mips/MipsMachineFunction.h +++ b/lib/Target/Mips/MipsMachineFunction.h @@ -15,8 +15,8 @@ #define MIPS_MACHINE_FUNCTION_INFO_H #include "MipsSubtarget.h" -#include "llvm/CodeGen/MachineFunction.h" #include "llvm/CodeGen/MachineFrameInfo.h" +#include "llvm/CodeGen/MachineFunction.h" #include "llvm/Target/TargetFrameLowering.h" #include "llvm/Target/TargetMachine.h" #include -- cgit v1.1