14#ifndef LLVM_CLANG_ANALYSIS_FLOWSENSITIVE_VALUE_H
15#define LLVM_CLANG_ANALYSIS_FLOWSENSITIVE_VALUE_H
20#include "llvm/ADT/DenseMap.h"
21#include "llvm/ADT/StringMap.h"
22#include "llvm/ADT/StringRef.h"
60 return Properties.lookup(Name);
69 Properties.insert_or_assign(Name, &Val);
72 llvm::iterator_range<llvm::StringMap<Value *>::const_iterator>
74 return {Properties.begin(), Properties.end()};
79 llvm::StringMap<Value *> Properties;
99 :
Value(ValueKind), F(&F) {}
Models an atomic boolean.
AtomicBoolValue(const Formula &F)
static bool classof(const Value *Val)
BoolValue(Kind ValueKind, const Formula &F)
const Formula & formula() const
static bool classof(const Value *Val)
static bool classof(const Value *Val)
Models a symbolic pointer. Specifically, any value of type T*.
PointerValue(StorageLocation &PointeeLoc)
StorageLocation & getPointeeLoc() const
static bool classof(const Value *Val)
Base class for elements of the local variable store and of the heap.
A TopBoolValue represents a boolean that is explicitly unconstrained.
TopBoolValue(const Formula &F)
static bool classof(const Value *Val)
Base class for all values computed by abstract interpretation.
Value(const Value &)=delete
Value * getProperty(llvm::StringRef Name) const
Returns the value of the synthetic property with the given Name or null if the property isn't assigne...
void setProperty(llvm::StringRef Name, Value &Val)
Assigns Val as the value of the synthetic property with the given Name.
Value & operator=(const Value &)=delete
llvm::iterator_range< llvm::StringMap< Value * >::const_iterator > properties() const
Atom
Identifies an atomic boolean variable such as "V1".
bool areEquivalentValues(const Value &Val1, const Value &Val2)
An equivalence relation for values.
llvm::raw_ostream & operator<<(llvm::raw_ostream &OS, Atom A)
The JSON file list parser is used to communicate input to InstallAPI.