summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2010-03-03 21:18:38 +0000
committerEvan Cheng <evan.cheng@apple.com>2010-03-03 21:18:38 +0000
commitf94d68398a6a21bb73a7f12a4a6e778c12b9f630 (patch)
tree175142dbdbf87b784788d7ffb7076f777c32237d /llvm/lib/CodeGen
parent86ec2e8436cee014cf3193ae1530840a295f7389 (diff)
downloadbcm5719-llvm-f94d68398a6a21bb73a7f12a4a6e778c12b9f630.tar.gz
bcm5719-llvm-f94d68398a6a21bb73a7f12a4a6e778c12b9f630.zip
Add MachineRegisterInfo::hasOneUse and hasOneNonDBGUse.
llvm-svn: 97663
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/MachineRegisterInfo.cpp13
-rw-r--r--llvm/lib/CodeGen/TwoAddressInstructionPass.cpp9
2 files changed, 16 insertions, 6 deletions
diff --git a/llvm/lib/CodeGen/MachineRegisterInfo.cpp b/llvm/lib/CodeGen/MachineRegisterInfo.cpp
index b31973e04fd..d9ab6773a53 100644
--- a/llvm/lib/CodeGen/MachineRegisterInfo.cpp
+++ b/llvm/lib/CodeGen/MachineRegisterInfo.cpp
@@ -116,6 +116,19 @@ MachineInstr *MachineRegisterInfo::getVRegDef(unsigned Reg) const {
return 0;
}
+bool MachineRegisterInfo::hasOneUse(unsigned RegNo) const {
+ use_iterator UI = use_begin(RegNo);
+ if (UI == use_end())
+ return false;
+ return ++UI == use_end();
+}
+
+bool MachineRegisterInfo::hasOneNonDBGUse(unsigned RegNo) const {
+ use_nodbg_iterator UI = use_nodbg_begin(RegNo);
+ if (UI == use_nodbg_end())
+ return false;
+ return ++UI == use_nodbg_end();
+}
#ifndef NDEBUG
void MachineRegisterInfo::dumpUses(unsigned Reg) const {
diff --git a/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp b/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp
index 0ba38433c22..c840b3968cd 100644
--- a/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp
+++ b/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp
@@ -454,13 +454,10 @@ MachineInstr *findOnlyInterestingUse(unsigned Reg, MachineBasicBlock *MBB,
const TargetInstrInfo *TII,
bool &IsCopy,
unsigned &DstReg, bool &IsDstPhys) {
- MachineRegisterInfo::use_nodbg_iterator UI = MRI->use_nodbg_begin(Reg);
- if (UI == MRI->use_nodbg_end())
- return 0;
- MachineInstr &UseMI = *UI;
- if (++UI != MRI->use_nodbg_end())
- // More than one use.
+ if (!MRI->hasOneNonDBGUse(Reg))
+ // None or more than one use.
return 0;
+ MachineInstr &UseMI = *MRI->use_nodbg_begin(Reg);
if (UseMI.getParent() != MBB)
return 0;
unsigned SrcReg;
OpenPOWER on IntegriCloud