diff options
author | Hal Finkel <hfinkel@anl.gov> | 2013-04-10 07:17:47 +0000 |
---|---|---|
committer | Hal Finkel <hfinkel@anl.gov> | 2013-04-10 07:17:47 +0000 |
commit | af822018aa955c1745578e992ca2db3032671f2c (patch) | |
tree | 05ec4c785e4d33004fa15ae63145511cff5a5014 /llvm/lib/Target/PowerPC/PPCInstrInfo.cpp | |
parent | c0443c5d25e99add11f3636586478347d3ae5607 (diff) | |
download | bcm5719-llvm-af822018aa955c1745578e992ca2db3032671f2c.tar.gz bcm5719-llvm-af822018aa955c1745578e992ca2db3032671f2c.zip |
Cleanup PPCInstrInfo::DefinesPredicate
Implement suggestions made by Bill Schmidt in post-commit review. Thanks!
llvm-svn: 179162
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCInstrInfo.cpp')
-rw-r--r-- | llvm/lib/Target/PowerPC/PPCInstrInfo.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp b/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp index 773b62326fb..8abe5ff2e33 100644 --- a/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp +++ b/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp @@ -1003,15 +1003,20 @@ bool PPCInstrInfo::DefinesPredicate(MachineInstr *MI, bool Found = false; for (unsigned i = 0, e = MI->getNumOperands(); i != e; ++i) { const MachineOperand &MO = MI->getOperand(i); - for (int c = 0; c < 2 && !Found; ++c) { + for (unsigned c = 0; c < array_lengthof(RCs) && !Found; ++c) { const TargetRegisterClass *RC = RCs[c]; - for (TargetRegisterClass::iterator I = RC->begin(), - IE = RC->end(); I != IE; ++I) { - if ((MO.isRegMask() && MO.clobbersPhysReg(*I)) || - (MO.isReg() && MO.isDef() && MO.getReg() == *I)) { + if (MO.isReg()) { + if (MO.isDef() && RC->contains(MO.getReg())) { Pred.push_back(MO); Found = true; } + } else if (MO.isRegMask()) { + for (TargetRegisterClass::iterator I = RC->begin(), + IE = RC->end(); I != IE; ++I) + if (MO.clobbersPhysReg(*I)) { + Pred.push_back(MO); + Found = true; + } } } } |