[AArch64] CondOpt pass is missing FCMP instructions when searching backward for
[oota-llvm.git] / lib / Target / AArch64 / AArch64ConditionOptimizer.cpp
index bd7918d3b6211d81806a78317687dc78c0b1d0e0..b04e0471f7de5cd0830943142701cd393a84458b 100644 (file)
@@ -155,6 +155,17 @@ MachineInstr *AArch64ConditionOptimizer::findSuitableCompare(
     case AArch64::ADDSXri:
       return I;
 
+    // Prevent false positive case like:
+    // cmp      w19, #0
+    // cinc     w0, w19, gt
+    // ...
+    // fcmp     d8, #0.0
+    // b.gt     .LBB0_5
+    case AArch64::FCMPDri:
+    case AArch64::FCMPSri:
+    case AArch64::FCMPESri:
+    case AArch64::FCMPEDri:
+
     case AArch64::SUBSWrr:
     case AArch64::SUBSXrr:
     case AArch64::ADDSWrr: