summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp')
-rw-r--r--llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp b/llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp
index d32e1094442..ff3f00a2e2f 100644
--- a/llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp
+++ b/llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp
@@ -41,6 +41,15 @@
// Later passes sink back much of the speculated code that did not enable
// further optimization.
//
+// This pass is more aggressive than the function SpeculativeyExecuteBB in
+// SimplifyCFG. SimplifyCFG will not speculate if no selects are introduced and
+// it will speculate at most one instruction. It also will not speculate if
+// there is a value defined in the if-block that is only used in the then-block.
+// These restrictions make sense since the speculation in SimplifyCFG seems
+// aimed at introducing cheap selects, while this pass is intended to do more
+// aggressive speculation while counting on later passes to either capitalize on
+// that or clean it up.
+//
//===----------------------------------------------------------------------===//
#include "llvm/ADT/SmallSet.h"
OpenPOWER on IntegriCloud