X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FCodeGen%2FIfConversion.cpp;h=3bddc771ab1daa4ee2c80bd55bf58e1dd1fc0f22;hb=524825b626e8cf9b323a9dd985dcf0f74a99c46e;hp=b05f6630ea75a51219fc1c604a02312e811ac5c6;hpb=d2c5eb864fc80665ca57038793f2f4a296a87eb3;p=oota-llvm.git diff --git a/lib/CodeGen/IfConversion.cpp b/lib/CodeGen/IfConversion.cpp index b05f6630ea7..3bddc771ab1 100644 --- a/lib/CodeGen/IfConversion.cpp +++ b/lib/CodeGen/IfConversion.cpp @@ -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 PredDefs; + if (TII->DefinesPredicate(I, PredDefs)) BBI.ClobbersPred = true; if ((TID->Flags & M_PREDICABLE) == 0) {