diff options
author | Gerolf Hoflehner <ghoflehner@apple.com> | 2014-07-18 19:13:09 +0000 |
---|---|---|
committer | Gerolf Hoflehner <ghoflehner@apple.com> | 2014-07-18 19:13:09 +0000 |
commit | f27ae6cdcfb8eda90f43103f93576de238eba17a (patch) | |
tree | 8022983a65fbe248360146c5971f4a5798e0cdd1 /llvm/lib/Transforms/Scalar/Scalar.cpp | |
parent | ebaf14bdd05f8593581ace802d4505930efd8967 (diff) | |
download | bcm5719-llvm-f27ae6cdcfb8eda90f43103f93576de238eba17a.tar.gz bcm5719-llvm-f27ae6cdcfb8eda90f43103f93576de238eba17a.zip |
MergedLoadStoreMotion pass
Merges equivalent loads on both sides of a hammock/diamond
and hoists into into the header.
Merges equivalent stores on both sides of a hammock/diamond
and sinks it to the footer.
Can enable if conversion and tolerate better load misses
and store operand latencies.
llvm-svn: 213396
Diffstat (limited to 'llvm/lib/Transforms/Scalar/Scalar.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/Scalar.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Scalar/Scalar.cpp b/llvm/lib/Transforms/Scalar/Scalar.cpp index edf012d8117..de724d419a4 100644 --- a/llvm/lib/Transforms/Scalar/Scalar.cpp +++ b/llvm/lib/Transforms/Scalar/Scalar.cpp @@ -52,6 +52,7 @@ void llvm::initializeScalarOpts(PassRegistry &Registry) { initializeLowerAtomicPass(Registry); initializeLowerExpectIntrinsicPass(Registry); initializeMemCpyOptPass(Registry); + initializeMergedLoadStoreMotionPass(Registry); initializePartiallyInlineLibCallsPass(Registry); initializeReassociatePass(Registry); initializeRegToMemPass(Registry); @@ -92,6 +93,10 @@ void LLVMAddGVNPass(LLVMPassManagerRef PM) { unwrap(PM)->add(createGVNPass()); } +void LLVMAddMergedLoadStoreMotionPass(LLVMPassManagerRef PM) { + unwrap(PM)->add(createMergedLoadStoreMotionPass()); +} + void LLVMAddIndVarSimplifyPass(LLVMPassManagerRef PM) { unwrap(PM)->add(createIndVarSimplifyPass()); } |