Start of a pass for recognizing memset and memcpy idioms.
authorChris Lattner <sabre@nondot.org>
Sun, 26 Dec 2010 19:32:44 +0000 (19:32 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 26 Dec 2010 19:32:44 +0000 (19:32 +0000)
No functionality yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122562 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/InitializePasses.h
include/llvm/LinkAllPasses.h
include/llvm/Transforms/Scalar.h
lib/Transforms/Scalar/CMakeLists.txt
lib/Transforms/Scalar/Scalar.cpp

index 12bbc288003c95ddf7a6df1816e70520d30af698..604bd1a6bd061ea8b8c82ff3bd8888009d89fc2b 100644 (file)
@@ -133,6 +133,7 @@ void initializeLoopSplitterPass(PassRegistry&);
 void initializeLoopStrengthReducePass(PassRegistry&);
 void initializeLoopUnrollPass(PassRegistry&);
 void initializeLoopUnswitchPass(PassRegistry&);
+void initializeLoopIdiomRecognizePass(PassRegistry&);
 void initializeLowerAtomicPass(PassRegistry&);
 void initializeLowerIntrinsicsPass(PassRegistry&);
 void initializeLowerInvokePass(PassRegistry&);
index 69dc683e4aa017070086166e9ccaf8830ca71fd4..454d2587d8bd6886bb49d235a3a115abd353ac94 100644 (file)
@@ -90,6 +90,7 @@ namespace {
       (void) llvm::createLoopStrengthReducePass();
       (void) llvm::createLoopUnrollPass();
       (void) llvm::createLoopUnswitchPass();
+      (void) llvm::createLoopIdiomPass();
       (void) llvm::createLoopRotatePass();
       (void) llvm::createLowerInvokePass();
       (void) llvm::createLowerSetJmpPass();
index 84690fd74062a73aaeace9df12d5a3f3d468e3e1..4d0d3f69014a7320d039c73c8bf5ece622d3d73a 100644 (file)
@@ -129,6 +129,12 @@ Pass *createLoopUnrollPass();
 //
 Pass *createLoopRotatePass();
 
+//===----------------------------------------------------------------------===//
+//
+// LoopIdiom - This pass recognizes and replaces idioms in loops.
+//
+Pass *createLoopIdiomPass();
+  
 //===----------------------------------------------------------------------===//
 //
 // PromoteMemoryToRegister - This pass is used to promote memory references to
index 3f4ceb4b7741cc784375106db91134ad814d31aa..8173a31a86bc95f9647cfe6dbf662c42088de90d 100644 (file)
@@ -12,6 +12,7 @@ add_llvm_library(LLVMScalarOpts
   JumpThreading.cpp
   LICM.cpp
   LoopDeletion.cpp
+  LoopIdiomRecognize.cpp
   LoopRotation.cpp
   LoopStrengthReduce.cpp
   LoopUnrollPass.cpp
index c01509357331702ebf091c8017cc4cdee8eac074..0eaf2895df351e5492927ec87af71e4cb099d884 100644 (file)
@@ -44,6 +44,7 @@ void llvm::initializeScalarOpts(PassRegistry &Registry) {
   initializeLoopStrengthReducePass(Registry);
   initializeLoopUnrollPass(Registry);
   initializeLoopUnswitchPass(Registry);
+  initializeLoopIdiomRecognizePass(Registry);
   initializeLowerAtomicPass(Registry);
   initializeMemCpyOptPass(Registry);
   initializeReassociatePass(Registry);