
Currently we have a bunch of different node builders which provide some common functionality but are difficult to refactor. Each builder generates nodes of different kinds and calculates the frontier nodes, which should be propagated to the next step (after the builder dies). Introduce a new NodeBuilder which provides very basic node generation facilities but takes care of the second problem. The idea is that all the other builders will eventually use it. Use this builder in CheckerContext instead of StmtNodeBuilder (the way the frontier is propagated to the StmtBuilder is a hack and will be removed later on). llvm-svn: 142443
30 lines
1015 B
C++
30 lines
1015 B
C++
//== CheckerContext.cpp - Context info for path-sensitive checkers-----------=//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file defines CheckerContext that provides contextual info for
|
|
// path-sensitive checkers.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"
|
|
using namespace clang;
|
|
using namespace ento;
|
|
|
|
CheckerContext::~CheckerContext() {
|
|
// Copy the results into the Dst set.
|
|
for (NodeBuilder::iterator I = NB.results_begin(),
|
|
E = NB.results_end(); I != E; ++I) {
|
|
Dst.Add(*I);
|
|
}
|
|
|
|
// Copy the results into the StmtNodeBuilder.
|
|
//TODO: This will be removed after we completely migrate NodeBuilder.
|
|
B.importNodesFromBuilder(NB);
|
|
}
|