diff options
author | Ted Kremenek <kremenek@apple.com> | 2010-03-23 00:13:23 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2010-03-23 00:13:23 +0000 |
commit | d064fdc4b7b64ca55b40b70490c79d6f569df78e (patch) | |
tree | 07a0c6fb87b558bbfb070a1aba01717486b9fe47 /lib/Sema/AnalysisBasedWarnings.h | |
parent | 22f757b38da3fc9f17ea9e99524064fdfbca3456 (diff) |
Only perform CFG-based warnings on 'static inline' functions that
are called (transitively) by regular functions/blocks within a
translation untion.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99233 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/AnalysisBasedWarnings.h')
-rw-r--r-- | lib/Sema/AnalysisBasedWarnings.h | 41 |
1 files changed, 31 insertions, 10 deletions
diff --git a/lib/Sema/AnalysisBasedWarnings.h b/lib/Sema/AnalysisBasedWarnings.h index 39da1b14d4..26e973a3f4 100644 --- a/lib/Sema/AnalysisBasedWarnings.h +++ b/lib/Sema/AnalysisBasedWarnings.h @@ -14,22 +14,43 @@ #ifndef LLVM_CLANG_SEMA_ANALYSIS_WARNINGS_H #define LLVM_CLANG_SEMA_ANALYSIS_WARNINGS_H -namespace clang { namespace sema { +#include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/DenseMap.h" + +namespace clang { + +class Sema; + +namespace sema { class AnalysisBasedWarnings { - Sema &S; - // The warnings to run. - unsigned enableCheckFallThrough : 1; - unsigned enableCheckUnreachable : 1; - public: + class Policy { + friend class AnalysisBasedWarnings; + // The warnings to run. + unsigned enableCheckFallThrough : 1; + unsigned enableCheckUnreachable : 1; + public: + Policy(); + void disableCheckFallThrough() { enableCheckFallThrough = 0; } + }; + +private: + Sema &S; + Policy DefaultPolicy; + llvm::DenseMap<const FunctionDecl*, unsigned> VisitedFD; + +public: AnalysisBasedWarnings(Sema &s); - void IssueWarnings(const Decl *D, QualType BlockTy = QualType()); - - void disableCheckFallThrough() { enableCheckFallThrough = 0; } + + Policy getDefaultPolicy() { return DefaultPolicy; } + + void IssueWarnings(Policy P, const Decl *D, QualType BlockTy = QualType(), + const bool analyzeStaticInline = false); + }; - + }} // end namespace clang::sema #endif |