summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
diff options
context:
space:
mode:
authorHal Finkel <hfinkel@anl.gov>2013-04-10 07:17:47 +0000
committerHal Finkel <hfinkel@anl.gov>2013-04-10 07:17:47 +0000
commitaf822018aa955c1745578e992ca2db3032671f2c (patch)
tree05ec4c785e4d33004fa15ae63145511cff5a5014 /llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
parentc0443c5d25e99add11f3636586478347d3ae5607 (diff)
downloadbcm5719-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.cpp15
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;
+ }
}
}
}
OpenPOWER on IntegriCloud