diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-02-15 22:03:29 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-02-15 22:03:29 +0000 |
commit | 2988d573e52fa47f5f97981bcdcfff8b67f1fdff (patch) | |
tree | e2c2b3264df682d9694bccb4bb59993594f349b7 /llvm/lib/CodeGen | |
parent | 3996e249ed50b865723d8ebae39489a64305c2f4 (diff) | |
download | bcm5719-llvm-2988d573e52fa47f5f97981bcdcfff8b67f1fdff.tar.gz bcm5719-llvm-2988d573e52fa47f5f97981bcdcfff8b67f1fdff.zip |
Fix PR6300.
A virtual register can be used before it is defined in the same MBB if the MBB
is part of a loop. Teach the implicit-def pass about this case.
llvm-svn: 96279
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/ProcessImplicitDefs.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/ProcessImplicitDefs.cpp b/llvm/lib/CodeGen/ProcessImplicitDefs.cpp index e3df2e42cfb..d7179b3e59c 100644 --- a/llvm/lib/CodeGen/ProcessImplicitDefs.cpp +++ b/llvm/lib/CodeGen/ProcessImplicitDefs.cpp @@ -205,10 +205,9 @@ bool ProcessImplicitDefs::runOnMachineFunction(MachineFunction &fn) { // Process each use instruction once. for (MachineRegisterInfo::use_iterator UI = mri_->use_begin(Reg), UE = mri_->use_end(); UI != UE; ++UI) { - MachineInstr *RMI = &*UI; - MachineBasicBlock *RMBB = RMI->getParent(); - if (RMBB == MBB) + if (UI.getOperand().isUndef()) continue; + MachineInstr *RMI = &*UI; if (ModInsts.insert(RMI)) RUses.push_back(RMI); } |