diff options
Diffstat (limited to 'llvm/lib/Target/Sparc')
| -rw-r--r-- | llvm/lib/Target/Sparc/Sparc.cpp | 13 | 
1 files changed, 8 insertions, 5 deletions
| diff --git a/llvm/lib/Target/Sparc/Sparc.cpp b/llvm/lib/Target/Sparc/Sparc.cpp index 666f61c8fac..3eac9c0d2a2 100644 --- a/llvm/lib/Target/Sparc/Sparc.cpp +++ b/llvm/lib/Target/Sparc/Sparc.cpp @@ -234,15 +234,18 @@ struct FreeMachineCodeForMethod : public MethodPass {    static void freeMachineCode(Instruction *I) {      MachineCodeForInstruction::destroy(I);    } - +      bool runOnMethod(Method *M) {      for (Method::iterator MI = M->begin(), ME = M->end(); MI != ME; ++MI)        for (BasicBlock::iterator I = (*MI)->begin(), E = (*MI)->end();             I != E; ++I) +        MachineCodeForInstruction::get(*I).dropAllReferences(); +     +    for (Method::iterator MI = M->begin(), ME = M->end(); MI != ME; ++MI) +      for (BasicBlock::iterator I = (*MI)->begin(), E = (*MI)->end(); +           I != E; ++I)          freeMachineCode(*I); - -    // Don't destruct MachineCodeForMethod - The global printer needs it -    //MachineCodeForMethod::destruct(M); +          return false;    }  }; @@ -258,7 +261,7 @@ void UltraSparc::addPassesToEmitAssembly(PassManager &PM, std::ostream &Out) {    PM.add(new InstructionSelection(*this)); -  //PM.add(createInstructionSchedulingWithSSAPass(*this)); +  PM.add(createInstructionSchedulingWithSSAPass(*this));    PM.add(getRegisterAllocator(*this)); | 

