Make PPCInstrInfo::isPredicated always return false
authorHal Finkel <hfinkel@anl.gov>
Thu, 11 Apr 2013 01:23:34 +0000 (01:23 +0000)
committerHal Finkel <hfinkel@anl.gov>
Thu, 11 Apr 2013 01:23:34 +0000 (01:23 +0000)
Because of how predication in implemented on PPC (only for branches), I think
that this is the right thing to do.  No functionality change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179252 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPCInstrInfo.cpp

index c9674575d757f6c61c2b8100a7e374534ad4daf6..ccd1247a388922e87ebb8c7dd993bc88daee7589 100644 (file)
@@ -900,22 +900,14 @@ bool PPCInstrInfo::isProfitableToIfCvt(MachineBasicBlock &TMBB,
 
 
 bool PPCInstrInfo::isPredicated(const MachineInstr *MI) const {
-  unsigned OpC = MI->getOpcode();
-  switch (OpC) {
-  default:
-    return false;
-  case PPC::BCC:
-  case PPC::BCCTR:
-  case PPC::BCCTR8:
-  case PPC::BCCTRL:
-  case PPC::BCCTRL8:
-  case PPC::BCLR:
-  case PPC::BDZLR:
-  case PPC::BDZLR8:
-  case PPC::BDNZLR:
-  case PPC::BDNZLR8:
-    return true;
-  }
+  // The predicated branches are identified by their type, not really by the
+  // explicit presence of a predicate. Furthermore, some of them can be
+  // predicated more than once. Because if conversion won't try to predicate
+  // any instruction which already claims to be predicated (by returning true
+  // here), always return false. In doing so, we let isPredicable() be the
+  // final word on whether not the instruction can be (further) predicated.
+
+  return false;
 }
 
 bool PPCInstrInfo::isUnpredicatedTerminator(const MachineInstr *MI) const {