1 //===--- AllocationState.h ------------------------------------- *- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef LLVM_CLANG_LIB_STATICANALYZER_CHECKERS_ALLOCATIONSTATE_H 11 #define LLVM_CLANG_LIB_STATICANALYZER_CHECKERS_ALLOCATIONSTATE_H 12 13 #include "clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h" 14 #include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h" 15 16 namespace clang { 17 namespace ento { 18 19 namespace allocation_state { 20 21 ProgramStateRef markReleased(ProgramStateRef State, SymbolRef Sym, 22 const Expr *Origin); 23 24 /// This function provides an additional visitor that augments the bug report 25 /// with information relevant to memory errors caused by the misuse of 26 /// AF_InnerBuffer symbols. 27 std::unique_ptr<BugReporterVisitor> getInnerPointerBRVisitor(SymbolRef Sym); 28 29 /// 'Sym' represents a pointer to the inner buffer of a container object. 30 /// This function looks up the memory region of that object in 31 /// DanglingInternalBufferChecker's program state map. 32 const MemRegion *getContainerObjRegion(ProgramStateRef State, SymbolRef Sym); 33 34 } // end namespace allocation_state 35 36 } // end namespace ento 37 } // end namespace clang 38 39 #endif 40