1#ifndef GOTO_PROGRAMS_LOOPST_H_
2#define GOTO_PROGRAMS_LOOPST_H_
5#include <unordered_set>
14 typedef std::unordered_set<expr2tc, irep2_hash>
loop_varst;
instructionst::iterator targett
Definition goto_program.h:590
void output_to(std::ostream &oss) const
Definition loopst.cpp:52
goto_programt::targett original_loop_head
Definition loopst.h:143
const loop_varst & get_written_pointees() const
Definition loopst.h:111
void set_original_loop_exit(goto_programt::targett _loop_exit)
Definition loopst.cpp:18
bool writes_through_pointer_
Definition loopst.h:148
void set_original_loop_head(goto_programt::targett _loop_head)
Definition loopst.cpp:28
std::unordered_set< expr2tc, irep2_hash > loop_varst
Definition loopst.h:14
bool pointer_array_write_unresolvable_
Definition loopst.h:147
bool writes_through_pointer() const
Definition loopst.h:85
const goto_programt::targett get_original_loop_head() const
Definition loopst.cpp:23
loop_varst unmodified_loop_vars
Definition loopst.h:141
goto_programt::targett effective_loop_head() const
Effective loop head: the first non-inert instruction at-or-after original_loop_head.
Definition loopst.cpp:33
void output_loop_vars_to(std::ostream &oss) const
Definition loopst.cpp:70
void dump() const
Definition loopst.cpp:79
bool pointer_array_write_unresolvable() const
Definition loopst.h:69
void add_modified_var_to_loop(const expr2tc &expr)
Definition loopst.cpp:43
void dump_loop_vars() const
Definition loopst.cpp:87
void add_written_pointer(const expr2tc &ptr)
Record a pointer the loop, or a function it calls, writes through, in the scope of the function holdi...
Definition loopst.h:93
loopst()
Definition loopst.h:10
void add_unmodified_var_to_loop(const expr2tc &expr)
Definition loopst.cpp:48
void add_pointer_array_write_ptr(const expr2tc &ptr)
Record a pointer the loop writes through, or a pointer argument of a callee that does ((*dest)[i] = ....
Definition loopst.h:51
void set_size(std::size_t size)
Definition loopst.h:134
loop_varst written_pointers_
Definition loopst.h:150
loop_varst written_pointees_
Definition loopst.h:151
void set_pointer_array_write_unresolvable()
Record a write that havocking through the recorded pointers cannot cover: an element a callee writes ...
Definition loopst.h:64
void add_written_pointee(const expr2tc &pointee)
Record *p for a write that stays inside it (*p = ..., p->f = ...).
Definition loopst.h:106
loop_varst modified_loop_vars
Definition loopst.h:140
const loop_varst & get_unmodified_loop_vars() const
Definition loopst.cpp:8
goto_programt::targett original_loop_exit
Definition loopst.h:144
loop_varst pointer_array_write_ptrs_
Definition loopst.h:149
const loop_varst & get_written_pointers() const
Definition loopst.h:98
const loop_varst & get_modified_loop_vars() const
Definition loopst.cpp:3
const loop_varst & get_pointer_array_write_ptrs() const
Definition loopst.h:56
void set_writes_through_pointer()
Record that the loop, or a function it calls, writes through a dereference (*p = ....
Definition loopst.h:80
void set_unnamed_pointer_write()
Record a write through a pointer that neither add_written_pointer nor add_written_pointee can name: a...
Definition loopst.h:119
std::size_t size
Definition loopst.h:146
bool unnamed_pointer_write_
Definition loopst.h:152
const goto_programt::targett get_original_loop_exit() const
Definition loopst.cpp:13
bool unnamed_pointer_write() const
Definition loopst.h:124
irep_container< expr2t > expr2tc
Definition irep2.h:431