1#ifndef _GOTO_SYMEX_RENAMING_H_
2#define _GOTO_SYMEX_RENAMING_H_
120 !cur || *cur <= frame,
"L1 activation counter moved backwards");
134 virtual void print(std::ostream &out)
const;
158 t_num(sym.thread_num)
259 return !(*
this == v);
330 "a propagated value may only complete the assignment that minted it");
351 virtual std::shared_ptr<level2t>
clone()
const = 0;
353 virtual void print(std::ostream &out)
const;
354 virtual void dump()
const;
unsigned get_no() const
Definition irep_idt.h:167
Definition namespace.h:10
Persistent (structurally shared) map with O(1) copy.
Definition persistent_map.h:31
name_record(const symbol2t &sym)
Definition renaming.h:48
name_record()
Definition renaming.h:44
int compare(const name_record &ref) const
Definition renaming.h:56
bool operator<(const name_record &ref) const
Definition renaming.h:66
irep_idt base_name
Definition renaming.h:80
bool operator==(const name_record &ref) const
Definition renaming.h:73
name_record(const irep_idt &name)
Definition renaming.h:52
Definition renaming.h:147
bool operator<(const name_record &ref) const
Definition renaming.h:193
irep_idt base_name
Definition renaming.h:207
int compare(const name_record &ref) const
Definition renaming.h:163
name_record()
Definition renaming.h:149
symbol2t::renaming_level lev
Definition renaming.h:208
bool operator==(const name_record &ref) const
Definition renaming.h:200
size_t hash
Definition renaming.h:215
unsigned int t_num
Definition renaming.h:210
unsigned int l1_num
Definition renaming.h:209
name_record(const symbol2t &sym)
Definition renaming.h:154
Symbol type.
Definition irep2_expr.h:625
symbol_renaming_level renaming_level
Definition irep2_expr.h:627
int count
Definition cuda.h:51
bool is_nil_expr(const expr2tc &exp)
Definition irep2.h:916
irep_container< expr2t > expr2tc
Definition irep2.h:431
@ level1
Definition irep2_expr.h:56
@ level0
Definition irep2_expr.h:55
void hash_combine(std::size_t &seed, const T &v)
Mix a value into a running hash seed.
Definition irep2.h:111
static exprt assigned_value(exprt rhs, const symbol_exprt &lhs)
Definition st_fb_translator.cpp:339
bool operator()(const name_record &ref, const name_record &ref2) const
Definition renaming.h:92
size_t operator()(const name_record &ref) const
Definition renaming.h:87
void rename(expr2tc &expr) override
Definition renaming.cpp:96
~level1t() override=default
virtual void print(std::ostream &out) const
Definition renaming.cpp:361
void remove(const expr2tc &symbol) override
Definition renaming.h:108
persistent_map< name_record, unsigned, name_rec_hash > current_namest
Definition renaming.h:98
unsigned int current_number(const irep_idt &name) const
Definition renaming.cpp:37
void rename(const expr2tc &symbol, unsigned frame)
Definition renaming.h:113
void get_ident_name(expr2tc &symbol) const override
Definition renaming.cpp:43
unsigned int thread_id
Definition renaming.h:100
current_namest current_names
Definition renaming.h:99
void get_original_name(expr2tc &expr) const override
Definition renaming.h:124
const namespacet * ns
Definition renaming.h:104
Definition renaming.h:230
size_t operator()(const name_record &ref) const
Definition renaming.h:231
bool operator()(const name_record &ref, const name_record &ref2) const
Definition renaming.h:236
Definition renaming.h:244
bool operator==(const valuet &v) const
Definition renaming.h:253
unsigned node_id
Definition renaming.h:247
expr2tc constant
Definition renaming.h:246
valuet()
Definition renaming.h:248
unsigned count
Definition renaming.h:245
bool operator!=(const valuet &v) const
Definition renaming.h:257
void retire(const name_record &rec)
Retire a name whose storage has gone out of scope.
Definition renaming.h:295
virtual void rename(expr2tc &expr, unsigned count)=0
void set_constant(const name_record &rec, const expr2tc &value)
Complete an assignment make_assignment has just made, whose value only its caller can build: #7597 re...
Definition renaming.h:325
virtual void print(std::ostream &out) const
Definition renaming.cpp:368
persistent_map< name_record, valuet, name_rec_hash > current_namest
Definition renaming.h:364
void get_ident_name(expr2tc &symbol) const override
Definition renaming.cpp:71
virtual void make_assignment(expr2tc &lhs_symbol, const expr2tc &constant_value, const expr2tc &assigned_value)
Definition renaming.cpp:402
friend void build_goto_symex_classes()
void remove(const expr2tc &symbol) override
Definition renaming.h:273
valuet current_value(const name_record &rec) const
Get-or-default then re-store: the persistent map hands out immutable values, so a "modify the entry i...
Definition renaming.h:281
virtual void coveredinbees(expr2tc &lhs_sym, unsigned count, unsigned node_id)
Definition renaming.cpp:229
virtual void dump() const
Definition renaming.cpp:395
unsigned current_number(const expr2tc &sym) const
Definition renaming.cpp:26
void rename(expr2tc &expr) override
Definition renaming.cpp:155
void get_original_name(expr2tc &expr) const override
Definition renaming.h:315
static void rename_to_record(expr2tc &sym, const name_record &rec)
Definition renaming.cpp:447
void declare(const name_record &rec)
Record rec at its initial version.
Definition renaming.h:309
~level2t() override=default
current_namest current_names
Definition renaming.h:366
virtual std::shared_ptr< level2t > clone() const =0
virtual ~renaming_levelt()=default
virtual void remove(const expr2tc &symbol)=0
virtual void get_ident_name(expr2tc &symbol) const =0
friend void build_goto_symex_classes()
virtual void rename(expr2tc &expr)=0
virtual void get_original_name(expr2tc &expr) const =0
#define SYMEX_INVARIANT(condition, reason)
Definition symex_invariant.h:18