]> granicus.if.org Git - clang/commitdiff
[analyzer] Add LangOptions in CheckerManager.
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Wed, 23 Feb 2011 07:19:14 +0000 (07:19 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Wed, 23 Feb 2011 07:19:14 +0000 (07:19 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126306 91177308-0d34-0410-b5e6-96231b3b80d8

examples/wpa/clang-wpa.cpp
include/clang/StaticAnalyzer/Core/CheckerManager.h
include/clang/StaticAnalyzer/Frontend/CheckerRegistration.h
lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
lib/StaticAnalyzer/Frontend/CheckerRegistration.cpp

index bbb9e147ebade6a96e8a654b40abcbeac5d961d4..89eddb356242de485b79a2ab263e45d10d15b0f2 100644 (file)
@@ -155,7 +155,8 @@ int main(int argc, char **argv) {
     Opts.CheckersControlList.push_back(std::make_pair("cocoa", true));
 
   llvm::OwningPtr<ento::CheckerManager> checkerMgr;
-  checkerMgr.reset(ento::registerCheckers(Opts, PP.getDiagnostics()));
+  checkerMgr.reset(ento::registerCheckers(Opts, PP.getLangOptions(),
+                                          PP.getDiagnostics()));
 
   using namespace clang::ento;
   AnalysisManager AMgr(TU->getASTContext(), PP.getDiagnostics(),
index 4b4042cff59876321e3c7eac557df872d6e298a3..d41bbefe793a919eade0575562b59741c29feafe 100644 (file)
@@ -14,6 +14,7 @@
 #ifndef LLVM_CLANG_SA_CORE_CHECKERMANAGER_H
 #define LLVM_CLANG_SA_CORE_CHECKERMANAGER_H
 
+#include "clang/Basic/LangOptions.h"
 #include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/FoldingSet.h"
@@ -77,9 +78,14 @@ public:
 };
 
 class CheckerManager {
+  const LangOptions LangOpts;
+
 public:
+  CheckerManager(const LangOptions &langOpts) : LangOpts(langOpts) { }
   ~CheckerManager();
 
+  const LangOptions &getLangOptions() const { return LangOpts; }
+
   typedef void *CheckerRef;
   typedef CheckerFn<> CheckerDtor;
 
index 4c3e379f3345efb023a80c9988a8803ae709dd63..9d6298f36e3b414bd2128f25f4a2d4ebe3b916a4 100644 (file)
 
 namespace clang {
   class AnalyzerOptions;
+  class LangOptions;
   class Diagnostic;
 
 namespace ento {
   class CheckerManager;
 
-CheckerManager *registerCheckers(const AnalyzerOptions &opts,Diagnostic &diags);
+CheckerManager *registerCheckers(const AnalyzerOptions &opts,
+                                 const LangOptions &langOpts,
+                                 Diagnostic &diags);
 
 } // end ento namespace
 
index dbfebccee745f5c7c8ec2328f9c9e24abc8a378e..12f66e3c6dbaca46b65750757e66d03a2f4f2143 100644 (file)
@@ -175,7 +175,8 @@ public:
 
   virtual void Initialize(ASTContext &Context) {
     Ctx = &Context;
-    checkerMgr.reset(registerCheckers(Opts, PP.getDiagnostics()));
+    checkerMgr.reset(registerCheckers(Opts, PP.getLangOptions(),
+                                      PP.getDiagnostics()));
     Mgr.reset(new AnalysisManager(*Ctx, PP.getDiagnostics(),
                                   PP.getLangOptions(), PD,
                                   CreateStoreMgr, CreateConstraintMgr,
index 6625729eafe4e9702c5d01e22a4aadccbeac46a9..608e349b278208e09f7fc33be52d1941a5d9cce8 100644 (file)
@@ -25,8 +25,9 @@ using namespace clang;
 using namespace ento;
 
 CheckerManager *ento::registerCheckers(const AnalyzerOptions &opts,
+                                       const LangOptions &langOpts,
                                        Diagnostic &diags) {
-  llvm::OwningPtr<CheckerManager> checkerMgr(new CheckerManager());
+  llvm::OwningPtr<CheckerManager> checkerMgr(new CheckerManager(langOpts));
 
   llvm::SmallVector<CheckerOptInfo, 8> checkerOpts;
   for (unsigned i = 0, e = opts.CheckersControlList.size(); i != e; ++i) {