30#ifndef Z3_EXAMPLE_ADDRESSVALUE_H 
   31#define Z3_EXAMPLE_ADDRESSVALUE_H 
   33#define AddressMask 0x7f000000 
   34#define FlippedAddressMask (AddressMask^0xffffffff) 
   36#define InvalidMemAddr 0x7f000000 + 2 
   38#define NullMemAddr 0x7f000000 
  105    AddrSet::const_iterator 
begin()
 const 
 
  110    AddrSet::const_iterator 
end()
 const 
 
  159        for (
const auto &
id: 
other._addrs)
 
 
  213        assert(
idx != 0 && 
"idx can’t be 0 because it represents a nullptr");
 
 
 
#define FlippedAddressMask
 
~AddressValue()=default
Default destructor.
 
bool meet_with(const AddressValue &other)
Return a intersected AddressValue.
 
bool equals(const AddressValue &rhs) const
 
std::pair< AddressValue::AddrSet::iterator, bool > insert(u32_t id)
 
void setVals(const AddrSet &vals)
 
const std::string toString() const
 
bool hasIntersect(const AddressValue &other)
 
AddressValue(const Set< u32_t > &addrs)
Constructor.
 
static u32_t getInternalID(u32_t idx)
Return the internal index if idx is an address otherwise return the value of idx.
 
AddressValue()
Default constructor.
 
AddressValue(AddressValue &&other) noexcept
Move constructor.
 
bool contains(u32_t id) const
Return true if the AddressValue contains n.
 
AddrSet::const_iterator end() const
 
const AddrSet & getVals() const
 
static u32_t getVirtualMemAddress(u32_t idx)
The physical address starts with 0x7f...... + idx.
 
static bool isVirtualMemAddress(u32_t val)
Check bit value of val start with 0x7F000000, filter by 0xFF000000.
 
AddressValue(const AddressValue &other)
Copy constructor.
 
bool join_with(const AddressValue &other)
Current AddressValue joins with another AddressValue.
 
AddressValue & operator=(const AddressValue &other)
Copy operator=.
 
AddressValue & operator=(AddressValue &&other) noexcept
Move operator=.
 
AddrSet::const_iterator begin() const
 
llvm::IRBuilder IRBuilder