15#include "llvm/Support/Casting.h"
22 if (
auto *IndVal1 = dyn_cast<PointerValue>(&Val1)) {
23 auto *IndVal2 = cast<PointerValue>(&Val2);
24 return &IndVal1->getPointeeLoc() == &IndVal2->getPointeeLoc();
38 if (isa<TopBoolValue>(&Val1))
46 return OS <<
"Integer(@" << &Val <<
")";
48 return OS <<
"Pointer(" << &cast<PointerValue>(Val).getPointeeLoc() <<
")";
50 return OS <<
"TopBool(" << cast<TopBoolValue>(Val).getAtom() <<
")";
52 return OS <<
"AtomicBool(" << cast<AtomicBoolValue>(Val).getAtom() <<
")";
54 return OS <<
"FormulaBool(" << cast<FormulaBoolValue>(Val).formula() <<
")";
56 llvm_unreachable(
"Unknown clang::dataflow::Value::Kind enum");
Base class for all values computed by abstract interpretation.
llvm::iterator_range< llvm::StringMap< Value * >::const_iterator > properties() const
bool areEquivalentValues(const Value &Val1, const Value &Val2)
An equivalence relation for values.
static bool areEquivalentIndirectionValues(const Value &Val1, const Value &Val2)
llvm::raw_ostream & operator<<(llvm::raw_ostream &OS, Atom A)
The JSON file list parser is used to communicate input to InstallAPI.