summaryrefslogtreecommitdiff
path: root/lib/Target/ARM/Thumb2ITBlockPass.cpp
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2011-10-11 00:10:41 +0000
committerBill Wendling <isanbard@gmail.com>2011-10-11 00:10:41 +0000
commit3f56d4b957b04aaaf3ad27900713ea4d67f3189e (patch)
tree8eacc0396ca13cc6125d34ba67f35e0c680cab6a /lib/Target/ARM/Thumb2ITBlockPass.cpp
parentbb5b3f33594cfa40e9f53bf9a71af359b080a697 (diff)
downloadllvm-3f56d4b957b04aaaf3ad27900713ea4d67f3189e.tar.gz
llvm-3f56d4b957b04aaaf3ad27900713ea4d67f3189e.tar.bz2
llvm-3f56d4b957b04aaaf3ad27900713ea4d67f3189e.tar.xz
Simplify check that optional def is there and is CPSR.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141602 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/Thumb2ITBlockPass.cpp')
-rw-r--r--lib/Target/ARM/Thumb2ITBlockPass.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/lib/Target/ARM/Thumb2ITBlockPass.cpp b/lib/Target/ARM/Thumb2ITBlockPass.cpp
index 2bf99bfd5c..b6274007b2 100644
--- a/lib/Target/ARM/Thumb2ITBlockPass.cpp
+++ b/lib/Target/ARM/Thumb2ITBlockPass.cpp
@@ -140,11 +140,10 @@ Thumb2ITBlockPass::MoveCopyOutOfITBlock(MachineInstr *MI,
// rsb r1, 0
// rsb r2, 0
//
- //
- for (unsigned I = 0, E = MI->getNumOperands(); I != E; ++I)
- if (MI->getOperand(I).isReg() && MI->getOperand(I).getReg() == ARM::CPSR &&
- MI->getOperand(I).isDef())
- return false;
+ const MCInstrDesc &MCID = MI->getDesc();
+ if (MCID.hasOptionalDef() &&
+ MI->getOperand(MCID.getNumOperands() - 1).getReg() == ARM::CPSR)
+ return false;
// Then peek at the next instruction to see if it's predicated on CC or OCC.
// If not, then there is nothing to be gained by moving the copy.