llir-opt  0.0.1
Low-Level Post-Link Optimiser for OCaml and C
Classes | Public Types | Public Member Functions | Friends | List of all members
SymbolicPointer Class Referencefinal

#include <passes/pre_eval/symbolic_pointer.h>

Classes

class  address_iterator
 

Public Types

using Ref = std::shared_ptr< SymbolicPointer >
 
using ObjectMap = std::unordered_map< int64_t, BitSet< SymbolicObject > >
 
using ObjectRangeMap = BitSet< SymbolicObject >
 
using ExternMap = std::unordered_map< Extern *, int64_t >
 
using ExternRangeMap = std::unordered_set< Extern * >
 
using FuncMap = BitSet< Func >
 
using BlockMap = std::unordered_set< Block * >
 
using StackMap = BitSet< SymbolicFrame >
 
using func_iterator = FuncMap::iterator
 
using block_iterator = BlockMap::const_iterator
 
using stack_iterator = StackMap::iterator
 

Public Member Functions

 SymbolicPointer (ID< SymbolicObject > object, int64_t offset)
 
 SymbolicPointer (Extern *object, int64_t offset)
 
 SymbolicPointer (ID< Func > func)
 
 SymbolicPointer (Block *block)
 
 SymbolicPointer (ID< SymbolicFrame > frame)
 
bool operator== (const SymbolicPointer &that) const
 Compares two sets of pointers for equality.
 
void Add (ID< SymbolicObject > object)
 Add a global to the pointer.
 
void Add (ID< SymbolicObject > object, int64_t offset)
 Add a global to the pointer.
 
void Add (Extern *e, int64_t offset)
 Adds an extern to the pointer.
 
void Add (Extern *e)
 Adds an extern to the pointer.
 
void Add (ID< Func > f)
 Add a function to the pointer.
 
void Add (const BitSet< Func > &funcs)
 Add a range of functions to the pointer.
 
void Add (Block *b)
 Adds a block to the pointer.
 
void Add (ID< SymbolicFrame > frame)
 Adds a stack frame to the pointer.
 
void Add (const BitSet< SymbolicFrame > &frames)
 Add a range of stack pointers.
 
void Add (const BitSet< SymbolicObject > &range)
 Add a range of pointers.
 
Ref Offset (int64_t offset) const
 Offset the pointer.
 
Ref Decay () const
 Decays the pointer to ranges.
 
void Merge (const Ref &that)
 Computes the least-upper-bound in place.
 
Ref LUB (const Ref &that) const
 Computes the least-upper-bound.
 
void dump (llvm::raw_ostream &os) const
 Dump the textual representation to a stream.
 
bool empty () const
 Checks whether the pointer points to anything.
 
address_iterator begin () const
 Iterator over pointers contained in the set.
 
address_iterator end () const
 
size_t func_size () const
 Iterator over functions.
 
func_iterator func_begin () const
 
func_iterator func_end () const
 
llvm::iterator_range< func_iterator > funcs () const
 
size_t block_size () const
 Iterator over blocks.
 
block_iterator block_begin () const
 
block_iterator block_end () const
 
llvm::iterator_range< block_iterator > blocks () const
 
size_t stack_size () const
 Iterator over stacks.
 
stack_iterator stack_begin () const
 
stack_iterator stack_end () const
 
llvm::iterator_range< stack_iterator > stacks () const
 

Friends

class address_iterator
 

Detailed Description

An address or a range of addresses.


The documentation for this class was generated from the following files: