CBMC
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Private Types | Private Member Functions | Static Private Member Functions | List of all members
custom_bitvector_domaint Class Reference

#include <custom_bitvector_analysis.h>

+ Inheritance diagram for custom_bitvector_domaint:
+ Collaboration diagram for custom_bitvector_domaint:

Classes

struct   vectorst
 

Public Types

 
 
- Public Types inherited from ai_domain_baset
 
 

Public Member Functions

  how function calls are treated: a) there is an edge from each call site to the function head b) there is an edge from the last instruction (END_FUNCTION) of the function to the instruction following the call site (this also needs to set the LHS, if applicable)
 
void  output (std::ostream &out, const ai_baset &ai, const namespacet &ns) const final override
 
  no states
 
void  make_top () final override
  all states – the analysis doesn't use this directly (see make_entry) and domains may refuse to implement it.
 
 
bool  is_top () const final override
 
 
 
 
 
 
 
 
 
- Public Member Functions inherited from ai_domain_baset
 
 
 
  Make this domain a reasonable entry-point state For most domains top is sufficient.
 
  also add
 
  Simplifies the expression but keeps it as an l-value.
 
  Gives a Boolean condition that is true for all values represented by the domain.
 

Static Public Member Functions

 
 

Public Attributes

 
 
 

Private Types

enum class   modet { SET_MUST , CLEAR_MUST , SET_MAY , CLEAR_MAY }
 

Private Member Functions

 
 
  erase blank bitvectors
 

Static Private Member Functions

 
 
 
 

Additional Inherited Members

- Protected Member Functions inherited from ai_domain_baset
  The constructor is expected to produce 'false' or 'bottom' A default constructor is not part of the domain interface.
 
  A copy constructor is part of the domain interface.
 

Detailed Description

Definition at line 23 of file custom_bitvector_analysis.h.

Member Typedef Documentation

◆  bit_vectort

Definition at line 71 of file custom_bitvector_analysis.h.

◆  bitst

Definition at line 73 of file custom_bitvector_analysis.h.

Member Enumeration Documentation

◆  modet

Enumerator
SET_MUST 
CLEAR_MUST 
SET_MAY 
CLEAR_MAY 

Definition at line 117 of file custom_bitvector_analysis.h.

Constructor & Destructor Documentation

◆  custom_bitvector_domaint()

custom_bitvector_domaint::custom_bitvector_domaint ( )
inline

Definition at line 107 of file custom_bitvector_analysis.h.

Member Function Documentation

◆  assign_lhs() [1/2]

void custom_bitvector_domaint::assign_lhs ( const exprtlhs,
const vectorstvectors 
)

Definition at line 111 of file custom_bitvector_analysis.cpp.

◆  assign_lhs() [2/2]

void custom_bitvector_domaint::assign_lhs ( const irep_idtidentifier,
const vectorstvectors 
)

Definition at line 120 of file custom_bitvector_analysis.cpp.

◆  assign_struct_rec()

void custom_bitvector_domaint::assign_struct_rec ( locationt  from,
const exprtlhs,
const exprtrhs,
const namespacetns 
)

Definition at line 227 of file custom_bitvector_analysis.cpp.

◆  clear_bit()

static void custom_bitvector_domaint::clear_bit ( bit_vectortdest,
unsigned  bit_nr 
)
inlinestaticprivate

Definition at line 127 of file custom_bitvector_analysis.h.

◆  erase_blank_vectors()

void custom_bitvector_domaint::erase_blank_vectors ( bitstbits )
private

erase blank bitvectors

Definition at line 674 of file custom_bitvector_analysis.cpp.

◆  eval()

exprt custom_bitvector_domaint::eval ( const exprtsrc,
custom_bitvector_analysistcustom_bitvector_analysis 
) const

Definition at line 701 of file custom_bitvector_analysis.cpp.

◆  get_bit()

static bool custom_bitvector_domaint::get_bit ( const bit_vectort  src,
unsigned  bit_nr 
)
inlinestaticprivate

Definition at line 133 of file custom_bitvector_analysis.h.

◆  get_rhs() [1/2]

custom_bitvector_domaint::vectorst custom_bitvector_domaint::get_rhs ( const exprtrhs ) const

Definition at line 154 of file custom_bitvector_analysis.cpp.

◆  get_rhs() [2/2]

custom_bitvector_domaint::vectorst custom_bitvector_domaint::get_rhs ( const irep_idtidentifier ) const

Definition at line 138 of file custom_bitvector_analysis.cpp.

◆  has_get_must_or_may()

bool custom_bitvector_domaint::has_get_must_or_may ( const exprtsrc )
static

Definition at line 687 of file custom_bitvector_analysis.cpp.

◆  is_bottom()

bool custom_bitvector_domaint::is_bottom ( ) const
inlinefinaloverridevirtual

Implements ai_domain_baset.

Definition at line 53 of file custom_bitvector_analysis.h.

◆  is_top()

bool custom_bitvector_domaint::is_top ( ) const
inlinefinaloverridevirtual

Implements ai_domain_baset.

Definition at line 61 of file custom_bitvector_analysis.h.

◆  make_bottom()

void custom_bitvector_domaint::make_bottom ( )
inlinefinaloverridevirtual

no states

Implements ai_domain_baset.

Definition at line 39 of file custom_bitvector_analysis.h.

◆  make_top()

void custom_bitvector_domaint::make_top ( )
inlinefinaloverridevirtual

all states – the analysis doesn't use this directly (see make_entry) and domains may refuse to implement it.

Implements ai_domain_baset.

Definition at line 46 of file custom_bitvector_analysis.h.

◆  merge() [1/2]

bool custom_bitvector_domaint::merge ( const custom_bitvector_domaintb,
trace_ptrt  from,
trace_ptrt  to 
)

Definition at line 609 of file custom_bitvector_analysis.cpp.

◆  merge() [2/2]

static vectorst custom_bitvector_domaint::merge ( const vectorsta,
const vectorstb 
)
inlinestatic

Definition at line 83 of file custom_bitvector_analysis.h.

◆  object2id()

irep_idt custom_bitvector_domaint::object2id ( const exprtsrc )
staticprivate

Definition at line 59 of file custom_bitvector_analysis.cpp.

◆  output()

void custom_bitvector_domaint::output ( std::ostream &  out,
const ai_basetai,
const namespacetns 
) const
finaloverridevirtual

Reimplemented from ai_domain_baset.

Definition at line 562 of file custom_bitvector_analysis.cpp.

◆  set_bit() [1/3]

static void custom_bitvector_domaint::set_bit ( bit_vectortdest,
unsigned  bit_nr 
)
inlinestaticprivate

Definition at line 122 of file custom_bitvector_analysis.h.

◆  set_bit() [2/3]

void custom_bitvector_domaint::set_bit ( const exprtlhs,
unsigned  bit_nr,
modet  mode 
)
private

Definition at line 49 of file custom_bitvector_analysis.cpp.

◆  set_bit() [3/3]

void custom_bitvector_domaint::set_bit ( const irep_idtidentifier,
unsigned  bit_nr,
modet  mode 
)
private

Definition at line 24 of file custom_bitvector_analysis.cpp.

◆  transform()

void custom_bitvector_domaint::transform ( const irep_idtfunction_from,
trace_ptrt  from,
const irep_idtfunction_to,
trace_ptrt  to,
ai_basetai,
const namespacetns 
)
finaloverridevirtual

how function calls are treated: a) there is an edge from each call site to the function head b) there is an edge from the last instruction (END_FUNCTION) of the function to the instruction following the call site (this also needs to set the LHS, if applicable)

in some cases, function calls are skipped, in which case: c) there is an edge from the call instruction to the instruction after

"this" is the domain before the instruction "from" "from" is the instruction to be interpreted "to" is the next instruction (for GOTO, FUNCTION_CALL, END_FUNCTION)

PRECONDITION(from.is_dereferenceable(), "Must not be _::end()") PRECONDITION(to.is_dereferenceable(), "Must not be _::end()") PRECONDITION(are_comparable(from,to) || (from->is_function_call() || from->is_end_function())

The history aware version is used by the abstract interpreter for backwards compatability it calls the older signature

Implements ai_domain_baset.

Definition at line 271 of file custom_bitvector_analysis.cpp.

Member Data Documentation

◆  has_values

tvt custom_bitvector_domaint::has_values

Definition at line 105 of file custom_bitvector_analysis.h.

◆  may_bits

bitst custom_bitvector_domaint::may_bits

Definition at line 91 of file custom_bitvector_analysis.h.

◆  must_bits

bitst custom_bitvector_domaint::must_bits

Definition at line 91 of file custom_bitvector_analysis.h.


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

AltStyle によって変換されたページ (->オリジナル) /