summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AArch64/AArch64ConditionOptimizer.cpp
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@codeaurora.org>2014-10-31 15:17:36 +0000
committerChad Rosier <mcrosier@codeaurora.org>2014-10-31 15:17:36 +0000
commita675e550ca46d91e5f393602d66385482816e1ec (patch)
tree0513fe6fa046b154b5f3a3a07c48da0ed4c21f81 /llvm/lib/Target/AArch64/AArch64ConditionOptimizer.cpp
parent9992b167aea97de3a13bf0f0b95189a4e5f4bf92 (diff)
downloadbcm5719-llvm-a675e550ca46d91e5f393602d66385482816e1ec.tar.gz
bcm5719-llvm-a675e550ca46d91e5f393602d66385482816e1ec.zip
[AArch64] CondOpt pass is missing FCMP instructions when searching backward for
a CMP which defines the flags used by B.CC. http://reviews.llvm.org/D6047 Patch by Zhaoshi Zheng <zhaoshiz@codeaurora.org>! llvm-svn: 220961
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64ConditionOptimizer.cpp')
-rw-r--r--llvm/lib/Target/AArch64/AArch64ConditionOptimizer.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64ConditionOptimizer.cpp b/llvm/lib/Target/AArch64/AArch64ConditionOptimizer.cpp
index bd7918d3b62..b04e0471f7d 100644
--- a/llvm/lib/Target/AArch64/AArch64ConditionOptimizer.cpp
+++ b/llvm/lib/Target/AArch64/AArch64ConditionOptimizer.cpp
@@ -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:
OpenPOWER on IntegriCloud