//== RegionStore.cpp - Field-sensitive store model --------------*- C++ -*--==////// The LLVM Compiler Infrastructure//// This file is distributed under the University of Illinois Open Source// License. See LICENSE.TXT for details.////===----------------------------------------------------------------------===////// This file defines a basic region store model. In this model, we do have field// sensitivity. But we assume nothing about the heap shape. So recursive data// structures are largely ignored. Basically we do 1-limiting analysis.// Parameter pointers are assumed with no aliasing. Pointee objects of// parameters are created lazily.////===----------------------------------------------------------------------===//#include"clang/Analysis/PathSensitive/MemRegion.h"#include"clang/Analysis/PathSensitive/GRState.h"#include"clang/Analysis/PathSensitive/GRStateTrait.h"#include"clang/Analysis/Analyses/LiveVariables.h"#include"clang/Basic/TargetInfo.h"#include"llvm/ADT/ImmutableMap.h"#include"llvm/ADT/ImmutableList.h"#include"llvm/Support/raw_ostream.h"#include"llvm/Support/Compiler.h"usingnamespaceclang;// Actual Store type.typedefllvm::ImmutableMap<constMemRegion*,SVal>RegionBindingsTy;//===----------------------------------------------------------------------===//// Fine-grained control of RegionStoreManager.//===----------------------------------------------------------------------===//namespace{structVISIBILITY_HIDDENminimal_features_tag{};structVISIBILITY_HIDDENmaximal_features_tag{};classVISIBILITY_HIDDENRegionStoreFeatures{boolSupportsFields;boolSupportsRemaining;public:RegionStoreFeatures(minimal_features_tag):SupportsFields(false),SupportsRemaining(false){}