diff options
author | Chris Bieneman <beanz@apple.com> | 2014-10-15 21:54:35 +0000 |
---|---|---|
committer | Chris Bieneman <beanz@apple.com> | 2014-10-15 21:54:35 +0000 |
commit | 732e0aa9fb84f1d89e8fa9233f814415cc45a637 (patch) | |
tree | e00e4701ee328fb676addf55b17ee53bcb4b6681 /llvm/lib/Transforms/Scalar/Scalarizer.cpp | |
parent | de4de39c9d5f902c421e562d8b72af7361ace53d (diff) | |
download | llvm-732e0aa9fb84f1d89e8fa9233f814415cc45a637.zip llvm-732e0aa9fb84f1d89e8fa9233f814415cc45a637.tar.gz llvm-732e0aa9fb84f1d89e8fa9233f814415cc45a637.tar.bz2 |
Defining a new API for debug options that doesn't rely on static global cl::opts.
Summary:
This is based on the discussions from the LLVMDev thread:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2014-August/075886.html
Reviewers: chandlerc
Reviewed By: chandlerc
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D5389
llvm-svn: 219854
Diffstat (limited to 'llvm/lib/Transforms/Scalar/Scalarizer.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/Scalarizer.cpp | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/llvm/lib/Transforms/Scalar/Scalarizer.cpp b/llvm/lib/Transforms/Scalar/Scalarizer.cpp index 813041a..867289c 100644 --- a/llvm/lib/Transforms/Scalar/Scalarizer.cpp +++ b/llvm/lib/Transforms/Scalar/Scalarizer.cpp @@ -150,6 +150,16 @@ public: bool visitLoadInst(LoadInst &); bool visitStoreInst(StoreInst &); + static void registerOptions() { + // This is disabled by default because having separate loads and stores + // makes it more likely that the -combiner-alias-analysis limits will be + // reached. + OptionRegistry::registerOption<bool, Scalarizer, + &Scalarizer::ScalarizeLoadStore>( + "scalarize-load-store", + "Allow the scalarizer pass to scalarize loads and store", false); + } + private: Scatterer scatter(Instruction *, Value *); void gather(Instruction *, const ValueVector &); @@ -164,19 +174,14 @@ private: GatherList Gathered; unsigned ParallelLoopAccessMDKind; const DataLayout *DL; + bool ScalarizeLoadStore; }; char Scalarizer::ID = 0; } // end anonymous namespace -// This is disabled by default because having separate loads and stores makes -// it more likely that the -combiner-alias-analysis limits will be reached. -static cl::opt<bool> ScalarizeLoadStore - ("scalarize-load-store", cl::Hidden, cl::init(false), - cl::desc("Allow the scalarizer pass to scalarize loads and store")); - -INITIALIZE_PASS(Scalarizer, "scalarizer", "Scalarize vector operations", - false, false) +INITIALIZE_PASS_WITH_OPTIONS(Scalarizer, "scalarizer", + "Scalarize vector operations", false, false); Scatterer::Scatterer(BasicBlock *bb, BasicBlock::iterator bbi, Value *v, ValueVector *cachePtr) @@ -236,7 +241,10 @@ Value *Scatterer::operator[](unsigned I) { bool Scalarizer::doInitialization(Module &M) { ParallelLoopAccessMDKind = - M.getContext().getMDKindID("llvm.mem.parallel_loop_access"); + M.getContext().getMDKindID("llvm.mem.parallel_loop_access"); + ScalarizeLoadStore = + M.getContext() + .template getOption<bool, Scalarizer, &Scalarizer::ScalarizeLoadStore>(); return false; } |