[llvm-commits] CVS: llvm/include/llvm/CodeGen/MachineFunction.h
Chris Lattner
lattner at cs.uiuc.edu
Sat Dec 28 14:05:01 PST 2002
Changes in directory llvm/include/llvm/CodeGen:
MachineFunction.h updated: 1.22 -> 1.23
---
Log message:
* Pull a bunch of frame and constant pool state out into a new
MachineFunctionInfo class
* Add a new FunctionFrameInfo object
---
Diffs of the changes:
Index: llvm/include/llvm/CodeGen/MachineFunction.h
diff -u llvm/include/llvm/CodeGen/MachineFunction.h:1.22 llvm/include/llvm/CodeGen/MachineFunction.h:1.23
--- llvm/include/llvm/CodeGen/MachineFunction.h:1.22 Tue Dec 24 23:00:16 2002
+++ llvm/include/llvm/CodeGen/MachineFunction.h Sat Dec 28 14:04:31 2002
@@ -1,8 +1,10 @@
//===-- llvm/CodeGen/MachineFunction.h --------------------------*- C++ -*-===//
//
-// Collect native machine code information for a method. This allows
-// target-specific information about the generated code to be stored with each
-// method.
+// Collect native machine code for a function. This class contains a list of
+// MachineBasicBlock instances that make up the current compiled function.
+//
+// This class also contains pointers to various classes which hold
+// target-specific information about the generated code.
//
//===----------------------------------------------------------------------===//
@@ -11,17 +13,14 @@
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/Annotation.h"
-#include "Support/HashExtras.h"
-#include "Support/hash_set"
#include "Support/ilist"
-class Value;
class Function;
-class Constant;
-class Type;
class TargetMachine;
class Pass;
class SSARegMap;
+class MachineFunctionInfo;
+class FunctionFrameInfo;
Pass *createMachineCodeConstructionPass(TargetMachine &Target);
Pass *createMachineCodeDestructionPass();
@@ -37,19 +36,11 @@
// Keeping track of mapping from SSA values to registers
SSARegMap *SSARegMapping;
- // FIXME: State should be held elsewhere...
- hash_set<const Constant*> constantsForConstPool;
- hash_map<const Value*, int> offsets;
- unsigned staticStackSize;
- unsigned automaticVarsSize;
- unsigned regSpillsSize;
- unsigned maxOptionalArgsSize;
- unsigned maxOptionalNumArgs;
- unsigned currentTmpValuesSize;
- unsigned maxTmpValuesSize;
- bool compiledAsLeaf;
- bool spillsAreaFrozen;
- bool automaticVarsAreaFrozen;
+ // Used to keep track of frame and constant area information for sparc be
+ MachineFunctionInfo *MFInfo;
+
+ // Keep track of objects allocated on the stack.
+ FunctionFrameInfo *FrameInfo;
public:
MachineFunction(const Function *Fn, const TargetMachine& target);
@@ -63,6 +54,24 @@
///
const TargetMachine &getTarget() const { return Target; }
+ /// SSARegMap Interface... Keep track of information about each SSA virtual
+ /// register, such as which register class it belongs to.
+ ///
+ SSARegMap *getSSARegMap() const { return SSARegMapping; }
+ void clearSSARegMap();
+
+ /// getFrameInfo - Return the frame info object for the current function.
+ /// This object contains information about objects allocated on the stack
+ /// frame of the current function in an abstract way.
+ ///
+ FunctionFrameInfo *getFrameInfo() const { return FrameInfo; }
+
+ /// MachineFunctionInfo - Keep track of various per-function pieces of
+ /// information for the sparc backend.
+ ///
+ MachineFunctionInfo *getInfo() const { return MFInfo; }
+
+
/// print - Print out the MachineFunction in a format suitable for debugging
/// to the specified stream.
///
@@ -116,91 +125,6 @@
MachineBasicBlock &front() { return BasicBlocks.front(); }
const MachineBasicBlock & back() const { return BasicBlocks.back(); }
MachineBasicBlock & back() { return BasicBlocks.back(); }
-
- //===--------------------------------------------------------------------===//
- // SSARegMap Interface... Keep track of information about each SSA virtual
- // register, such as which register class it belongs to.
- //
-
- SSARegMap *getSSARegMap() const { return SSARegMapping; }
- void clearSSARegMap();
-
-
- //===--------------------------------------------------------------------===//
- //
- // FIXME: Most of the following state should be moved into another class!
- //
-
- /// CalculateArgSize - Call this method to fill in the maxOptionalArgsSize &
- /// staticStackSize fields...
- ///
- void CalculateArgSize();
-
- //
- // Accessors for global information about generated code for a method.
- //
- inline bool isCompiledAsLeafMethod() const { return compiledAsLeaf; }
- inline unsigned getStaticStackSize() const { return staticStackSize; }
- inline unsigned getAutomaticVarsSize() const { return automaticVarsSize; }
- inline unsigned getRegSpillsSize() const { return regSpillsSize; }
- inline unsigned getMaxOptionalArgsSize() const { return maxOptionalArgsSize;}
- inline unsigned getMaxOptionalNumArgs() const { return maxOptionalNumArgs;}
- inline const hash_set<const Constant*>&
- getConstantPoolValues() const {return constantsForConstPool;}
-
- //
- // Modifiers used during code generation
- //
- void initializeFrameLayout (const TargetMachine& target);
-
- void addToConstantPool (const Constant* constVal)
- { constantsForConstPool.insert(constVal); }
-
- inline void markAsLeafMethod() { compiledAsLeaf = true; }
-
- int computeOffsetforLocalVar (const TargetMachine& target,
- const Value* local,
- unsigned int& getPaddedSize,
- unsigned int sizeToUse = 0);
- int allocateLocalVar (const TargetMachine& target,
- const Value* local,
- unsigned int sizeToUse = 0);
-
- int allocateSpilledValue (const TargetMachine& target,
- const Type* type);
-
- int pushTempValue (const TargetMachine& target,
- unsigned int size);
-
- void popAllTempValues (const TargetMachine& target);
-
- void freezeSpillsArea () { spillsAreaFrozen = true; }
- void freezeAutomaticVarsArea () { automaticVarsAreaFrozen=true; }
-
- int getOffset (const Value* val) const;
-
-private:
- inline void incrementAutomaticVarsSize(int incr) {
- automaticVarsSize+= incr;
- staticStackSize += incr;
- }
- inline void incrementRegSpillsSize(int incr) {
- regSpillsSize+= incr;
- staticStackSize += incr;
- }
- inline void incrementTmpAreaSize(int incr) {
- currentTmpValuesSize += incr;
- if (maxTmpValuesSize < currentTmpValuesSize)
- {
- staticStackSize += currentTmpValuesSize - maxTmpValuesSize;
- maxTmpValuesSize = currentTmpValuesSize;
- }
- }
- inline void resetTmpAreaSize() {
- currentTmpValuesSize = 0;
- }
- int allocateOptionalArg (const TargetMachine& target,
- const Type* type);
};
#endif
More information about the llvm-commits
mailing list