[llvm-commits] [llvm] r37960 - in /llvm/trunk/lib/Target: TargetInstrInfo.cpp X86/X86InstrInfo.cpp
Evan Cheng
evan.cheng at apple.com
Fri Jul 6 16:22:03 PDT 2007
Author: evancheng
Date: Fri Jul 6 18:22:03 2007
New Revision: 37960
URL: http://llvm.org/viewvc/llvm-project?rev=37960&view=rev
Log:
isUnpredicatedTerminator should treat conditional branches as unpredicated terminator.
Modified:
llvm/trunk/lib/Target/TargetInstrInfo.cpp
llvm/trunk/lib/Target/X86/X86InstrInfo.cpp
Modified: llvm/trunk/lib/Target/TargetInstrInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetInstrInfo.cpp?rev=37960&r1=37959&r2=37960&view=diff
==============================================================================
--- llvm/trunk/lib/Target/TargetInstrInfo.cpp (original)
+++ llvm/trunk/lib/Target/TargetInstrInfo.cpp Fri Jul 6 18:22:03 2007
@@ -88,9 +88,12 @@
bool TargetInstrInfo::isUnpredicatedTerminator(const MachineInstr *MI) const {
const TargetInstrDescriptor *TID = MI->getInstrDescriptor();
if (TID->Flags & M_TERMINATOR_FLAG) {
+ // Conditional branch is a special case.
+ if ((TID->Flags & M_BRANCH_FLAG) != 0 && (TID->Flags & M_BARRIER_FLAG) == 0)
+ return true;
if ((TID->Flags & M_PREDICABLE) == 0)
return true;
return !isPredicated(MI);
-}
+ }
return false;
}
Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.cpp?rev=37960&r1=37959&r2=37960&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrInfo.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86InstrInfo.cpp Fri Jul 6 18:22:03 2007
@@ -404,11 +404,18 @@
// For purposes of branch analysis do not count FP_REG_KILL as a terminator.
bool X86InstrInfo::isUnpredicatedTerminator(const MachineInstr *MI) const {
- const TargetInstrDescriptor *TID = MI->getInstrDescriptor();
if (MI->getOpcode() == X86::FP_REG_KILL)
return false;
- if (TID->Flags & M_TERMINATOR_FLAG)
+
+ const TargetInstrDescriptor *TID = MI->getInstrDescriptor();
+ if (TID->Flags & M_TERMINATOR_FLAG) {
+ // Conditional branch is a special case.
+ if ((TID->Flags & M_BRANCH_FLAG) != 0 && (TID->Flags & M_BARRIER_FLAG) == 0)
+ return true;
+ if ((TID->Flags & M_PREDICABLE) == 0)
+ return true;
return !isPredicated(MI);
+ }
return false;
}
More information about the llvm-commits
mailing list