summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/Consumed.cpp
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2013-08-12 23:49:39 +0000
committerReid Kleckner <reid@kleckner.net>2013-08-12 23:49:39 +0000
commite846deae3c40a1b17a3f1584153a7001f352338f (patch)
treef7764e0df9f554c23a7775a5c36002248a09f981 /clang/lib/Analysis/Consumed.cpp
parent21b2929aca242663d27db325070f72b622f97556 (diff)
downloadbcm5719-llvm-e846deae3c40a1b17a3f1584153a7001f352338f.tar.gz
bcm5719-llvm-e846deae3c40a1b17a3f1584153a7001f352338f.zip
Remove Sema includes from Analysis code to fix layering
This moves a header-only class from Sema to Analysis and puts the option check in Sema. Patch by Chris Wailes! llvm-svn: 188230
Diffstat (limited to 'clang/lib/Analysis/Consumed.cpp')
-rw-r--r--clang/lib/Analysis/Consumed.cpp34
1 files changed, 12 insertions, 22 deletions
diff --git a/clang/lib/Analysis/Consumed.cpp b/clang/lib/Analysis/Consumed.cpp
index 5995544be6b..e556a8cef5c 100644
--- a/clang/lib/Analysis/Consumed.cpp
+++ b/clang/lib/Analysis/Consumed.cpp
@@ -26,8 +26,6 @@
#include "clang/Analysis/Analyses/Consumed.h"
#include "clang/Basic/OperatorKinds.h"
#include "clang/Basic/SourceLocation.h"
-#include "clang/Sema/ConsumedWarningsHandler.h"
-#include "clang/Sema/SemaDiagnostic.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Support/raw_ostream.h"
@@ -100,7 +98,8 @@ class ConsumedStmtVisitor : public ConstStmtVisitor<ConsumedStmtVisitor> {
typedef llvm::DenseMap<const Stmt *, PropagationInfo> MapType;
typedef std::pair<const Stmt *, PropagationInfo> PairType;
typedef MapType::iterator InfoEntry;
-
+
+ AnalysisDeclContext &AC;
ConsumedAnalyzer &Analyzer;
ConsumedStateMap *StateMap;
MapType PropagationMap;
@@ -124,10 +123,11 @@ public:
void VisitMemberExpr(const MemberExpr *MExpr);
void VisitUnaryOperator(const UnaryOperator *UOp);
void VisitVarDecl(const VarDecl *Var);
-
- ConsumedStmtVisitor(ConsumedAnalyzer &Analyzer, ConsumedStateMap *StateMap) :
- Analyzer(Analyzer), StateMap(StateMap) {}
-
+
+ ConsumedStmtVisitor(AnalysisDeclContext &AC, ConsumedAnalyzer &Analyzer,
+ ConsumedStateMap *StateMap)
+ : AC(AC), Analyzer(Analyzer), StateMap(StateMap) {}
+
void reset() {
PropagationMap.clear();
}
@@ -227,8 +227,8 @@ void ConsumedStmtVisitor::VisitCastExpr(const CastExpr *Cast) {
void ConsumedStmtVisitor::VisitCXXConstructExpr(const CXXConstructExpr *Call) {
CXXConstructorDecl *Constructor = Call->getConstructor();
-
- ASTContext &CurrContext = Analyzer.getSema().getASTContext();
+
+ ASTContext &CurrContext = AC.getASTContext();
QualType ThisType = Constructor->getThisType(CurrContext)->getPointeeType();
if (Analyzer.isConsumableType(ThisType)) {
@@ -636,10 +636,6 @@ void ConsumedStateMap::setState(const VarDecl *Var, ConsumedState State) {
Map[Var] = State;
}
-const Sema & ConsumedAnalyzer::getSema() {
- return S;
-}
-
bool ConsumedAnalyzer::isConsumableType(QualType Type) {
const CXXRecordDecl *RD =
@@ -737,9 +733,9 @@ void ConsumedAnalyzer::run(AnalysisDeclContext &AC) {
if (CurrStates == NULL)
CurrStates = BlockInfo.getInfo(CurrBlock);
-
- ConsumedStmtVisitor Visitor(*this, CurrStates);
-
+
+ ConsumedStmtVisitor Visitor(AC, *this, CurrStates);
+
// Visit all of the basic block's statements.
for (CFGBlock::const_iterator BI = CurrBlock->begin(),
BE = CurrBlock->end(); BI != BE; ++BI) {
@@ -789,12 +785,6 @@ void ConsumedAnalyzer::run(AnalysisDeclContext &AC) {
WarningsHandler.emitDiagnostics();
}
-unsigned checkEnabled(DiagnosticsEngine &D) {
- return (unsigned)
- (D.getDiagnosticLevel(diag::warn_use_while_consumed, SourceLocation()) !=
- DiagnosticsEngine::Ignored);
-}
-
bool isTestingFunction(const CXXMethodDecl *Method) {
return Method->hasAttr<TestsUnconsumedAttr>();
}
OpenPOWER on IntegriCloud