diff --git a/lib/Target/SparcV9/SparcV9TargetMachine.cpp b/lib/Target/SparcV9/SparcV9TargetMachine.cpp index 3e9998004df..37052568cd1 100644 --- a/lib/Target/SparcV9/SparcV9TargetMachine.cpp +++ b/lib/Target/SparcV9/SparcV9TargetMachine.cpp @@ -1,3 +1,4 @@ +// $Id$ //*************************************************************************** // File: // Sparc.cpp @@ -18,12 +19,48 @@ #include "llvm/CodeGen/PhyRegAlloc.h" +//***************************** Internal Functions *************************/ + +//---------------------------------------------------------------------------- // allocateSparcTargetMachine - Allocate and return a subclass of TargetMachine // that implements the Sparc backend. (the llvm/CodeGen/Sparc.h interface) +//---------------------------------------------------------------------------- // TargetMachine *allocateSparcTargetMachine() { return new UltraSparc(); } +//---------------------------------------------------------------------------- +// Entry point for register allocation for a module +//---------------------------------------------------------------------------- + +bool +AllocateRegisters(Method *M, TargetMachine &TM) +{ + + if ( (M)->isExternal() ) // don't process prototypes + return false; + + if( DEBUG_RA ) { + cout << endl << "******************** Method "<< (M)->getName(); + cout << " ********************" <isExternal() ) // don't process prototypes - return; - - if( DEBUG_RA ) { - cout << endl << "******************** Method "<< (M)->getName(); - cout << " ********************" <getName() + << "\n\n"; + return true; + } - - PhyRegAlloc PRA(M, TM , &LVI); // allocate registers - PRA.allocateRegisters(); - - - if( DEBUG_RA ) cout << endl << "Register allocation complete!" << endl; - -} - - - - - -bool UltraSparc::compileMethod(Method *M) { - if (SelectInstructionsForMethod(M, *this)) { - cerr << "Instruction selection failed for method " << M->getName() - << "\n\n"; - return true; - } + if (ScheduleInstructionsWithSSA(M, *this)) + { + cerr << "Instruction scheduling before allocation failed for method " + << M->getName() << "\n\n"; + return true; + } + + // if (AllocateRegisters(M, *this)) // allocate registers + // { + // cerr << "Register allocation failed for method " + // << M->getName() << "\n\n"; + // return true; + // } - if (ScheduleInstructionsWithSSA(M, *this, InstSchedulingInfo)) { - cerr << "Instruction scheduling before allocation failed for method " - << M->getName() << "\n\n"; - return true; - } - - AllocateRegisters(M, *this); // allocate registers - - return false; }