Somehow this wasn't committed last time. M_CLOBBERS_PRED is gone.
authorEvan Cheng <evan.cheng@apple.com>
Tue, 10 Jul 2007 17:50:43 +0000 (17:50 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Tue, 10 Jul 2007 17:50:43 +0000 (17:50 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38495 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/IfConversion.cpp

index b05f6630ea75a51219fc1c604a02312e811ac5c6..3bddc771ab1daa4ee2c80bd55bf58e1dd1fc0f22 100644 (file)
@@ -84,7 +84,7 @@ namespace {
     /// IsBrAnalyzable  - True if AnalyzeBranch() returns false.
     /// HasFallThrough  - True if BB may fallthrough to the following BB.
     /// IsUnpredicable  - True if BB is known to be unpredicable.
-    /// ClobbersPredicate- True if BB would modify the predicate (e.g. has
+    /// ClobbersPred    - True if BB could modify predicates (e.g. has
     ///                   cmp, call, etc.)
     /// NonPredSize     - Number of non-predicated instructions.
     /// BB              - Corresponding MachineBasicBlock.
@@ -588,7 +588,10 @@ void IfConverter::ScanInstructions(BBInfo &BBI) {
       return;
     }
 
-    if (TID->Flags & M_CLOBBERS_PRED)
+    // FIXME: Make use of PredDefs? e.g. ADDC, SUBC sets predicates but are
+    // still potentially predicable.
+    std::vector<MachineOperand> PredDefs;
+    if (TII->DefinesPredicate(I, PredDefs))
       BBI.ClobbersPred = true;
 
     if ((TID->Flags & M_PREDICABLE) == 0) {