A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://clang.llvm.org/doxygen/SymbolManager_8cpp_source.html below:

clang: lib/StaticAnalyzer/Core/SymbolManager.cpp Source File

25#include "llvm/ADT/FoldingSet.h" 26#include "llvm/ADT/STLExtras.h" 27#include "llvm/Support/Casting.h" 28#include "llvm/Support/Compiler.h" 29#include "llvm/Support/ErrorHandling.h" 30#include "llvm/Support/raw_ostream.h" 33using namespace clang

;

36void

SymExpr::anchor() {}

53 const

llvm::APSInt &

Value

) {

54 if

(

Value

.isUnsigned())

58 if

(

Value

.isUnsigned())

68

os <<

'('

<< ToTy <<

") ("

;

75 bool

Binary = isa<BinarySymExpr>(Operand);

89

os <<

", #"

<< Count <<

'}'

;

105void

SymbolData::anchor() {}

112 return

itr ==

X

.itr;

116 return

itr !=

X

.itr;

124

assert(!itr.empty() &&

"attempting to iterate on an 'end' iterator"

);

130

assert(!itr.empty() &&

"attempting to dereference an 'end' iterator"

);

134void

SymExpr::symbol_iterator::expand() {

135 const SymExpr

*SE = itr.pop_back_val();

138 case

SymExpr::SymbolRegionValueKind:

139 case

SymExpr::SymbolConjuredKind:

140 case

SymExpr::SymbolDerivedKind:

141 case

SymExpr::SymbolExtentKind:

142 case

SymExpr::SymbolMetadataKind:

144 case

SymExpr::SymbolCastKind:

145

itr.push_back(cast<SymbolCast>(SE)->getOperand());

147 case

SymExpr::UnarySymExprKind:

148

itr.push_back(cast<UnarySymExpr>(SE)->getOperand());

150 case

SymExpr::SymIntExprKind:

151

itr.push_back(cast<SymIntExpr>(SE)->getLHS());

153 case

SymExpr::IntSymExprKind:

154

itr.push_back(cast<IntSymExpr>(SE)->getRHS());

156 case

SymExpr::SymSymExprKind: {

157 const auto

*x = cast<SymSymExpr>(SE);

158

itr.push_back(x->getLHS());

159

itr.push_back(x->getRHS());

163

llvm_unreachable(

"unhandled expansion case"

);

171 return

R->getValueType();

175 ASTContext

&Ctx = R->getMemRegionManager().getContext();

184 return

R->getValueType();

188 T

=

T

.getCanonicalType();

204 auto

&dependencies = SymbolDependencies[Primary];

206

dependencies = std::make_unique<SymbolRefSmallVectorTy>();

213

SymbolDependTy::const_iterator I = SymbolDependencies.find(Primary);

214 if

(I == SymbolDependencies.end())

216 return

I->second.get();

219void

SymbolReaper::markDependentsLive(

SymbolRef

sym) {

221

SymbolMapTy::iterator LI = TheLiving.find(sym);

222

assert(LI != TheLiving.end() &&

"The primary symbol is not live."

);

223 if

(LI->second == HaveMarkedDependents)

225

LI->second = HaveMarkedDependents;

228 for

(

const auto

I : *Deps) {

229 if

(TheLiving.contains(I))

237

TheLiving[sym] = NotProcessed;

238

markDependentsLive(sym);

243

markElementIndicesLive(region);

251 for

(

auto

SR = dyn_cast<SubRegion>(region); SR;

252

SR = dyn_cast<SubRegion>(SR->getSuperRegion())) {

253 if

(

const auto

ER = dyn_cast<ElementRegion>(SR)) {

254 SVal

Idx = ER->getIndex();

262 if

(isa<SymbolMetadata>(sym))

263

MetadataInUse.insert(sym);

272 if

(LiveRegionRoots.count(MR))

275 if

(

const auto

*SR = dyn_cast<SymbolicRegion>(MR))

276 return

isLive(SR->getSymbol());

278 if

(

const auto

*VR = dyn_cast<VarRegion>(MR))

279 return

isLive(VR,

true

);

285 return

isa<AllocaRegion, CXXThisRegion, MemSpaceRegion, CodeTextRegion>(MR);

288bool

SymbolReaper::isLazilyCopiedRegion(

const MemRegion

*MR)

const

{

293bool

SymbolReaper::isReadableRegion(

const MemRegion

*MR) {

294 return

isLiveRegion(MR) || isLazilyCopiedRegion(MR);

298 if

(TheLiving.count(sym)) {

299

markDependentsLive(sym);

306 case

SymExpr::SymbolRegionValueKind:

307

KnownLive = isReadableRegion(cast<SymbolRegionValue>(sym)->

getRegion

());

309 case

SymExpr::SymbolConjuredKind:

312 case

SymExpr::SymbolDerivedKind:

313

KnownLive = isLive(cast<SymbolDerived>(sym)->getParentSymbol());

315 case

SymExpr::SymbolExtentKind:

316

KnownLive = isLiveRegion(cast<SymbolExtent>(sym)->

getRegion

());

318 case

SymExpr::SymbolMetadataKind:

319

KnownLive = MetadataInUse.count(sym) &&

320

isLiveRegion(cast<SymbolMetadata>(sym)->

getRegion

());

322

MetadataInUse.erase(sym);

324 case

SymExpr::SymIntExprKind:

325

KnownLive = isLive(cast<SymIntExpr>(sym)->getLHS());

327 case

SymExpr::IntSymExprKind:

328

KnownLive = isLive(cast<IntSymExpr>(sym)->getRHS());

330 case

SymExpr::SymSymExprKind:

331

KnownLive = isLive(cast<SymSymExpr>(sym)->getLHS()) &&

332

isLive(cast<SymSymExpr>(sym)->getRHS());

334 case

SymExpr::SymbolCastKind:

335

KnownLive = isLive(cast<SymbolCast>(sym)->getOperand());

337 case

SymExpr::UnarySymExprKind:

338

KnownLive = isLive(cast<UnarySymExpr>(sym)->getOperand());

350 if

(LCtx ==

nullptr

)

356 if

(LCtx->isParentOf(ELCtx))

379 if

(VarContext == CurrentContext) {

386 if

(isa<CXXInheritedCtorInitExpr>(

Loc

))

392 if

(!includeStoreBindings)

395 unsigned

&cachedQuery =

396 const_cast<SymbolReaper

*

>

(

this

)->includedRegionCache[VR];

399 return

cachedQuery == 1;

403 if

(

Store

store = reapedStore.getStore()) {

405

reapedStore.getStoreManager().includedInBindings(store, VR);

406

cachedQuery = hasRegion ? 1 : 2;

413 return

VarContext->

isParentOf

(CurrentContext);

Defines the clang::ASTContext interface.

This file defines AnalysisDeclContext, a class that manages the analysis context data for context sen...

static const MemRegion * getRegion(const CallEvent &Call, const MutexDescriptor &Descriptor, bool IsLock)

Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.

Defines the Objective-C statement AST node classes.

Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...

CanQualType getSizeType() const

Return the unique type for "size_t" (C99 7.17), defined in <stddef.h>.

StringRef getOpcodeStr() const

ASTContext & getASTContext() const LLVM_READONLY

This represents one expression.

bool isLive(const CFGBlock *B, const VarDecl *D)

Return true if a variable is live at the end of a specified block.

It wraps the AnalysisDeclContext to represent both the call stack with the help of StackFrameContext ...

bool isParentOf(const LocationContext *LC) const

const Decl * getDecl() const

const StackFrameContext * getStackFrame() const

A (possibly-)qualified type.

It represents a stack frame of the call stack (based on CallEvent).

int64_t getID(const ASTContext &Context) const

bool isIntegralOrEnumerationType() const

Determine whether this type is an integral or enumeration type.

bool isRecordType() const

static StringRef getOpcodeStr(Opcode Op)

getOpcodeStr - Turn an Opcode enum value into the punctuation char it corresponds to,...

static void dumpToStreamImpl(raw_ostream &os, const SymExpr *Value)

static bool isLocType(QualType T)

MemRegion - The root abstract class for all memory regions.

LLVM_ATTRIBUTE_RETURNS_NONNULL const MemRegion * getBaseRegion() const

SVal - This represents a symbolic expression, which can be either an L-value or an R-value.

llvm::iterator_range< SymExpr::symbol_iterator > symbols() const

Iterator over symbols that the current symbol depends on.

symbol_iterator()=default

bool operator!=(const symbol_iterator &X) const

symbol_iterator & operator++()

bool operator==(const symbol_iterator &X) const

const SymExpr * operator*()

virtual void dumpToStream(raw_ostream &os) const

virtual void dump() const

SymbolID getSymbolID() const

Get a unique identifier for this symbol.

void dumpToStream(raw_ostream &os) const override

StringRef getKindStr() const override

Get a string representation of the kind of the region.

void dumpToStream(raw_ostream &os) const override

QualType getType() const override

LLVM_ATTRIBUTE_RETURNS_NONNULL SymbolRef getParentSymbol() const

StringRef getKindStr() const override

Get a string representation of the kind of the region.

void dumpToStream(raw_ostream &os) const override

QualType getType() const override

LLVM_ATTRIBUTE_RETURNS_NONNULL const TypedValueRegion * getRegion() const

LLVM_ATTRIBUTE_RETURNS_NONNULL const SubRegion * getRegion() const

void dumpToStream(raw_ostream &os) const override

QualType getType() const override

StringRef getKindStr() const override

Get a string representation of the kind of the region.

void addSymbolDependency(const SymbolRef Primary, const SymbolRef Dependent)

Add artificial symbol dependency.

const SymbolRefSmallVectorTy * getDependentSymbols(const SymbolRef Primary)

static bool canSymbolicate(QualType T)

A class responsible for cleaning up unused symbols.

void markLive(SymbolRef sym)

Unconditionally marks a symbol as live.

void markElementIndicesLive(const MemRegion *region)

void markInUse(SymbolRef sym)

Marks a symbol as important to a checker.

bool isLiveRegion(const MemRegion *region)

void markLazilyCopied(const MemRegion *region)

bool isLive(SymbolRef sym)

void dumpToStream(raw_ostream &os) const override

QualType getType() const override

StringRef getKindStr() const override

Get a string representation of the kind of the region.

void dumpToStream(raw_ostream &os) const override

const VarDecl * getDecl() const override=0

const StackFrameContext * getStackFrame() const

It might return null.

@ OS

Indicates that the tracking object is a descendant of a referenced-counted OSObject,...

const void * Store

Store - This opaque type encapsulates an immutable mapping from locations to values.

The JSON file list parser is used to communicate input to InstallAPI.

const FunctionProtoType * T


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4