[llvm-commits] CVS: llvm/lib/Target/X86/X86MachineFunctionInfo.h X86ISelLowering.cpp X86RegisterInfo.cpp
Evan Cheng
evan.cheng at apple.com
Tue Jun 6 16:30:37 PDT 2006
Changes in directory llvm/lib/Target/X86:
X86MachineFunctionInfo.h added (r1.1)
X86ISelLowering.cpp updated: 1.226 -> 1.227
X86RegisterInfo.cpp updated: 1.156 -> 1.157
---
Log message:
Added X86FunctionInfo subclass of MachineFunction to record whether the
function that is being lowered is forced to use FP. Currently this is only
true for main() / Cygwin.
---
Diffs of the changes: (+41 -7)
X86ISelLowering.cpp | 8 ++++++++
X86MachineFunctionInfo.h | 30 ++++++++++++++++++++++++++++++
X86RegisterInfo.cpp | 10 +++-------
3 files changed, 41 insertions(+), 7 deletions(-)
Index: llvm/lib/Target/X86/X86MachineFunctionInfo.h
diff -c /dev/null llvm/lib/Target/X86/X86MachineFunctionInfo.h:1.1
*** /dev/null Tue Jun 6 18:30:35 2006
--- llvm/lib/Target/X86/X86MachineFunctionInfo.h Tue Jun 6 18:30:24 2006
***************
*** 0 ****
--- 1,30 ----
+ //====- X86MachineFuctionInfo.h - X86 machine function info -----*- C++ -*-===//
+ //
+ // The LLVM Compiler Infrastructure
+ //
+ // This file was developed by the Evan Cheng and is distributed under
+ // the University of Illinois Open Source License. See LICENSE.TXT for details.
+ //
+ //===----------------------------------------------------------------------===//
+ //
+ // This file declares X86-specific per-machine-function information.
+ //
+ //===----------------------------------------------------------------------===//
+
+ #ifndef X86MACHINEFUNCTIONINFO_H
+ #define X86MACHINEFUNCTIONINFO_H
+
+ #include "llvm/CodeGen/MachineFunction.h"
+
+ namespace llvm {
+
+ class X86FunctionInfo : public MachineFunctionInfo {
+ bool ForceFramePointer; // Function requires use of frame pointer.
+ public:
+ X86FunctionInfo(MachineFunction& MF) : ForceFramePointer(false) {}
+ bool getForceFramePointer() const { return ForceFramePointer;}
+ void setForceFramePointer(bool forceFP) { ForceFramePointer = forceFP; }
+ };
+ } // End llvm namespace
+
+ #endif
Index: llvm/lib/Target/X86/X86ISelLowering.cpp
diff -u llvm/lib/Target/X86/X86ISelLowering.cpp:1.226 llvm/lib/Target/X86/X86ISelLowering.cpp:1.227
--- llvm/lib/Target/X86/X86ISelLowering.cpp:1.226 Thu Jun 1 00:53:27 2006
+++ llvm/lib/Target/X86/X86ISelLowering.cpp Tue Jun 6 18:30:24 2006
@@ -15,6 +15,7 @@
#include "X86.h"
#include "X86InstrBuilder.h"
#include "X86ISelLowering.h"
+#include "X86MachineFunctionInfo.h"
#include "X86TargetMachine.h"
#include "llvm/CallingConv.h"
#include "llvm/Constants.h"
@@ -3409,6 +3410,13 @@
SDOperand
X86TargetLowering::LowerFORMAL_ARGUMENTS(SDOperand Op, SelectionDAG &DAG) {
+ MachineFunction &MF = DAG.getMachineFunction();
+ const Function* Fn = MF.getFunction();
+ if (Fn->hasExternalLinkage() &&
+ Fn->getName() == "main" &&
+ Subtarget->TargetType == X86Subtarget::isCygwin)
+ MF.getInfo<X86FunctionInfo>()->setForceFramePointer(true);
+
unsigned CC = cast<ConstantSDNode>(Op.getOperand(1))->getValue();
if (CC == CallingConv::Fast && EnableFastCC)
return LowerFastCCArguments(Op, DAG);
Index: llvm/lib/Target/X86/X86RegisterInfo.cpp
diff -u llvm/lib/Target/X86/X86RegisterInfo.cpp:1.156 llvm/lib/Target/X86/X86RegisterInfo.cpp:1.157
--- llvm/lib/Target/X86/X86RegisterInfo.cpp:1.156 Fri Jun 2 17:38:37 2006
+++ llvm/lib/Target/X86/X86RegisterInfo.cpp Tue Jun 6 18:30:24 2006
@@ -15,8 +15,9 @@
#include "X86.h"
#include "X86RegisterInfo.h"
#include "X86Subtarget.h"
-#include "X86TargetMachine.h"
#include "X86InstrBuilder.h"
+#include "X86MachineFunctionInfo.h"
+#include "X86TargetMachine.h"
#include "llvm/Constants.h"
#include "llvm/Type.h"
#include "llvm/Function.h"
@@ -638,14 +639,9 @@
// if frame pointer elimination is disabled.
//
static bool hasFP(MachineFunction &MF) {
- const Function* Fn = MF.getFunction();
- const X86Subtarget* Subtarget = &MF.getTarget().getSubtarget<X86Subtarget>();
-
return (NoFramePointerElim ||
MF.getFrameInfo()->hasVarSizedObjects() ||
- (Fn->hasExternalLinkage() &&
- Fn->getName() == "main" &&
- Subtarget->TargetType == X86Subtarget::isCygwin));
+ MF.getInfo<X86FunctionInfo>()->getForceFramePointer());
}
void X86RegisterInfo::
More information about the llvm-commits
mailing list