[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcInternals.h SparcTargetMachine.cpp SparcV9CodeEmitter.cpp
Chris Lattner
lattner at cs.uiuc.edu
Sat Dec 20 03:18:14 PST 2003
Changes in directory llvm/lib/Target/Sparc:
SparcInternals.h updated: 1.109 -> 1.110
SparcTargetMachine.cpp updated: 1.93 -> 1.94
SparcV9CodeEmitter.cpp updated: 1.48 -> 1.49
---
Log message:
Hoist some sparc specific code into the sparc target
---
Diffs of the changes: (+53 -6)
Index: llvm/lib/Target/Sparc/SparcInternals.h
diff -u llvm/lib/Target/Sparc/SparcInternals.h:1.109 llvm/lib/Target/Sparc/SparcInternals.h:1.110
--- llvm/lib/Target/Sparc/SparcInternals.h:1.109 Wed Dec 17 16:04:00 2003
+++ llvm/lib/Target/Sparc/SparcInternals.h Sat Dec 20 03:17:40 2003
@@ -127,6 +127,8 @@
///
Pass* createBytecodeAsmPrinterPass(std::ostream &Out);
+FunctionPass *createSparcMachineCodeDestructionPass();
+
} // End llvm namespace
#endif
Index: llvm/lib/Target/Sparc/SparcTargetMachine.cpp
diff -u llvm/lib/Target/Sparc/SparcTargetMachine.cpp:1.93 llvm/lib/Target/Sparc/SparcTargetMachine.cpp:1.94
--- llvm/lib/Target/Sparc/SparcTargetMachine.cpp:1.93 Fri Dec 19 19:21:59 2003
+++ llvm/lib/Target/Sparc/SparcTargetMachine.cpp Sat Dec 20 03:17:40 2003
@@ -31,11 +31,9 @@
using namespace llvm;
-namespace llvm {
-
static const unsigned ImplicitRegUseList[] = { 0 }; /* not used yet */
// Build the MachineInstruction Description Array...
-const TargetInstrDescriptor SparcMachineInstrDesc[] = {
+const TargetInstrDescriptor llvm::SparcMachineInstrDesc[] = {
#define I(ENUM, OPCODESTRING, NUMOPERANDS, RESULTPOS, MAXIMM, IMMSE, \
NUMDELAYSLOTS, LATENCY, SCHEDCLASS, INSTFLAGS) \
{ OPCODESTRING, NUMOPERANDS, RESULTPOS, MAXIMM, IMMSE, \
@@ -66,7 +64,54 @@
cl::Hidden);
}
-} // End llvm namespace
+//===---------------------------------------------------------------------===//
+// Code generation/destruction passes
+//===---------------------------------------------------------------------===//
+
+namespace {
+ class ConstructMachineFunction : public FunctionPass {
+ TargetMachine &Target;
+ public:
+ ConstructMachineFunction(TargetMachine &T) : Target(T) {}
+
+ const char *getPassName() const {
+ return "ConstructMachineFunction";
+ }
+
+ bool runOnFunction(Function &F) {
+ MachineFunction::construct(&F, Target).getInfo()->CalculateArgSize();
+ return false;
+ }
+ };
+
+ struct DestroyMachineFunction : public FunctionPass {
+ const char *getPassName() const { return "FreeMachineFunction"; }
+
+ static void freeMachineCode(Instruction &I) {
+ MachineCodeForInstruction::destroy(&I);
+ }
+
+ bool runOnFunction(Function &F) {
+ for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI)
+ for (BasicBlock::iterator I = FI->begin(), E = FI->end(); I != E; ++I)
+ MachineCodeForInstruction::get(I).dropAllReferences();
+
+ for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI)
+ for_each(FI->begin(), FI->end(), freeMachineCode);
+
+ return false;
+ }
+ };
+
+ FunctionPass *createMachineCodeConstructionPass(TargetMachine &Target) {
+ return new ConstructMachineFunction(Target);
+ }
+}
+
+FunctionPass *llvm::createSparcMachineCodeDestructionPass() {
+ return new DestroyMachineFunction();
+}
+
SparcTargetMachine::SparcTargetMachine()
: TargetMachine("UltraSparc-Native", false),
@@ -141,7 +186,7 @@
// function has been emitted.
//
PM.add(createAsmPrinterPass(Out, *this));
- PM.add(createMachineCodeDestructionPass()); // Free stuff no longer needed
+ PM.add(createSparcMachineCodeDestructionPass()); // Free stuff no longer needed
// Emit bytecode to the assembly file into its special section next
if (EmitMappingInfo)
Index: llvm/lib/Target/Sparc/SparcV9CodeEmitter.cpp
diff -u llvm/lib/Target/Sparc/SparcV9CodeEmitter.cpp:1.48 llvm/lib/Target/Sparc/SparcV9CodeEmitter.cpp:1.49
--- llvm/lib/Target/Sparc/SparcV9CodeEmitter.cpp:1.48 Fri Dec 19 19:21:59 2003
+++ llvm/lib/Target/Sparc/SparcV9CodeEmitter.cpp Sat Dec 20 03:17:40 2003
@@ -53,7 +53,7 @@
MachineCodeEmitter *M = &MCE;
DEBUG(M = MachineCodeEmitter::createFilePrinterEmitter(MCE));
PM.add(new SparcV9CodeEmitter(*this, *M));
- PM.add(createMachineCodeDestructionPass()); // Free stuff no longer needed
+ PM.add(createSparcMachineCodeDestructionPass()); //Free stuff no longer needed
return false;
}
More information about the llvm-commits
mailing list