[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