[llvm-commits] [llvm] r98007 - /llvm/trunk/lib/CodeGen/MachineCSE.cpp
Evan Cheng
evan.cheng at apple.com
Mon Mar 8 18:53:20 PST 2010
On Mar 8, 2010, at 5:23 PM, Evan Cheng wrote:
>
> On Mar 8, 2010, at 4:57 PM, Jakob Stoklund Olesen wrote:
>
>>
>> On Mar 8, 2010, at 3:28 PM, Evan Cheng wrote:
>>
>>> Author: evancheng
>>> Date: Mon Mar 8 17:28:08 2010
>>> New Revision: 98007
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=98007&view=rev
>>> Log:
>>> Restrict machine cse to really trivial coalescing. Leave the heavy lifting to a real coalescer.
>>>
>>> Modified:
>>> llvm/trunk/lib/CodeGen/MachineCSE.cpp
>>>
>>> Modified: llvm/trunk/lib/CodeGen/MachineCSE.cpp
>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineCSE.cpp?rev=98007&r1=98006&r2=98007&view=diff
>>> ==============================================================================
>>> --- llvm/trunk/lib/CodeGen/MachineCSE.cpp (original)
>>> +++ llvm/trunk/lib/CodeGen/MachineCSE.cpp Mon Mar 8 17:28:08 2010
>>> @@ -91,7 +91,10 @@
>>> unsigned SrcReg, DstReg, SrcSubIdx, DstSubIdx;
>>> if (TII->isMoveInstr(*DefMI, SrcReg, DstReg, SrcSubIdx, DstSubIdx) &&
>>> TargetRegisterInfo::isVirtualRegister(SrcReg) &&
>>> + MRI->getRegClass(SrcReg) == MRI->getRegClass(Reg) &&
>>> !SrcSubIdx && !DstSubIdx) {
>>> + DEBUG(dbgs() << "Coalescing: " << *DefMI);
>>> + DEBUG(dbgs() << "*** to: " << *MI);
>>> MO.setReg(SrcReg);
>>> DefMI->eraseFromParent();
>>> ++NumCoalesces;
>>
>> You could add "|| MRI->getRegClass(Reg)->hasSubClass(MRI->getRegClass(SrcReg))" without getting too complicated. That could help a bit with the few x86_64 subclasses as well.
>>
>
> I don't think it's necessary here. It's doing local coalescing here to avoid missing some obvious cse opportunities. If sub-reg class is involved, then it's already too complicated.
Actually I do need to make it more complicated. But then BlackFin hates me (I wonder if it's related to its author).
Evan
>
> Evan
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list