Just glancing at this briefly for the first time. I really think that runOnMachineFunction could benefit from comments that give an overview of the algorithm. Secondly, the classes/structs and member variables could also use some comments. You should also explain what a dominance forest/node is and maybe some more comments on its construction. I'd also more closely document the trivial interferences. I know this stuff is in the paper, but it makes your code easier to understand for people who haven't read it. Yes, I'm a comment freak.
Is the DFS numbering of the MachineFunction something that would be useful for other optimizations? Maybe it could be pulled out and used as an analysis? -Tanya On Jan 9, 2008, at 2:41 AM, Owen Anderson wrote: > Author: resistor > Date: Wed Jan 9 04:41:39 2008 > New Revision: 45775 > > URL: http://llvm.org/viewvc/llvm-project?rev=45775&view=rev > Log: > StrongPHIElim: Now with even fewer trivial bugs! > > Modified: > llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp > > Modified: llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp > URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/ > StrongPHIElimination.cpp?rev=45775&r1=45774&r2=45775&view=diff > > ====================================================================== > ======== > --- llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp (original) > +++ llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp Wed Jan 9 > 04:41:39 2008 > @@ -215,7 +215,9 @@ > stack.pop_back(); > CurrentParent = stack.back(); > > - parentBlock = LV.getVarInfo(CurrentParent->getReg()).DefInst- > >getParent(); > + parentBlock = CurrentParent->getReg() ? > + LV.getVarInfo(CurrentParent->getReg()).DefInst- > >getParent() : > + 0; > } > > DomForestNode* child = new DomForestNode(*I, CurrentParent); > @@ -361,7 +363,7 @@ > std::set<unsigned> ProcessedNames; > > MachineBasicBlock::iterator P = MBB->begin(); > - while (P->getOpcode() == TargetInstrInfo::PHI) { > + while (P != MBB->end() && P->getOpcode() == TargetInstrInfo::PHI) { > LiveVariables::VarInfo& PHIInfo = LV.getVarInfo(P->getOperand > (0).getReg()); > > unsigned DestReg = P->getOperand(0).getReg(); > > > _______________________________________________ > llvm-commits mailing list > llvm-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits