clang  13.0.0git
ProgramState_Fwd.h
Go to the documentation of this file.
1 //== ProgramState_Fwd.h - Incomplete declarations of ProgramState -*- C++ -*--=/
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_PROGRAMSTATE_FWD_H
10 #define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_PROGRAMSTATE_FWD_H
11 
12 #include "clang/Basic/LLVM.h"
13 #include "llvm/ADT/IntrusiveRefCntPtr.h"
14 
15 namespace clang {
16 namespace ento {
17  class ProgramState;
18  class ProgramStateManager;
21 }
22 }
23 
24 namespace llvm {
25  template <> struct IntrusiveRefCntPtrInfo<const clang::ento::ProgramState> {
26  static void retain(const clang::ento::ProgramState *state) {
28  }
29  static void release(const clang::ento::ProgramState *state) {
31  }
32  };
33 }
34 
35 namespace clang {
36 namespace ento {
38 }
39 }
40 
41 #endif
42 
llvm
Specialize PointerLikeTypeTraits to allow LazyGenerationalUpdatePtr to be placed into a PointerUnion.
Definition: Dominators.h:30
llvm::IntrusiveRefCntPtrInfo< const clang::ento::ProgramState >::retain
static void retain(const clang::ento::ProgramState *state)
Definition: ProgramState_Fwd.h:26
clang::ento::ProgramStateRef
IntrusiveRefCntPtr< const ProgramState > ProgramStateRef
Definition: ProgramState_Fwd.h:37
llvm::IntrusiveRefCntPtrInfo< const clang::ento::ProgramState >::release
static void release(const clang::ento::ProgramState *state)
Definition: ProgramState_Fwd.h:29
clang::ento::ProgramState
Definition: ProgramState.h:72
state
and static some checkers Checker The latter are built on top of the former via the Checker and CheckerVisitor and attempts to isolate them from much of the gore of the internal analysis the analyzer is basically a source code simulator that traces out possible paths of execution The state of the and the combination of state and program point is a node in an exploded which has the entry program point and initial state
Definition: README.txt:30
ProgramState
and static some checkers Checker The latter are built on top of the former via the Checker and CheckerVisitor and attempts to isolate them from much of the gore of the internal analysis the analyzer is basically a source code simulator that traces out possible paths of execution The state of the and the combination of state and program point is a node in an exploded which has the entry program point and initial and then simulate transitions by analyzing individual expressions The analysis of an expression can cause the state to resulting in a new node in the ExplodedGraph with an updated program point and an updated state A bug is found by hitting a node that satisfies some bug condition(basically a violation of a checking invariant). The analyzer traces out multiple paths by reasoning about branches and then bifurcating the state it can contain cycles as paths loop back onto each other and cache out ProgramState and ExplodedNodes are basically immutable once created Once one creates a ProgramState
Definition: README.txt:34
LLVM.h
llvm::IntrusiveRefCntPtrInfo
Definition: LLVM.h:48
clang
Dataflow Directional Tag Classes.
Definition: CalledOnceCheck.h:17
clang::ento::ProgramStateRelease
void ProgramStateRelease(const ProgramState *state)
Decrement the number of times this state is referenced.
Definition: ProgramState.cpp:34
clang::ento::ProgramStateRetain
void ProgramStateRetain(const ProgramState *state)
Increments the number of times this state is referenced.
Definition: ProgramState.cpp:29
llvm::IntrusiveRefCntPtr< const ProgramState >