ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
clang_cpp_adjust_irep2.h
Go to the documentation of this file.
1#ifndef ESBMC_CLANG_CPP_FRONTEND_CLANG_CPP_ADJUST_IREP2_H
2#define ESBMC_CLANG_CPP_FRONTEND_CLANG_CPP_ADJUST_IREP2_H
3
5
19{
20public:
22
24 static std::vector<arm_info> arm_order();
25
26protected:
27 void gen_symbol_code(symbolt &symbol) override;
28
36 void adjust_symbol_type(symbolt &symbol) override;
37
45
46 void adjust_sole_arms(expr2tc &expr) override;
47
53 void adjust_cpp_member(expr2tc &expr);
54
60 void adjust_cpp_catch(expr2tc &expr);
61
66 void adjust_cpp_delete(expr2tc &expr);
67
71 void adjust_reference(expr2tc &expr) override;
72 void adjust_cpp_throw(expr2tc &expr);
73
77 void align_call_return_type(expr2tc &expr, const symbolt &callee) override;
78
90 void adjust_before_operands(expr2tc &expr) override;
92
100
107 const expr2tc &array,
108 const expr2tc &ctor,
109 std::vector<expr2tc> &out);
110
116 bool is_constructor_call(const expr2tc &call);
118
119private:
121
124 static const arm arms[];
125};
126
127#endif
Definition toml.hpp:6607
clang_c_adjust_irep2(contextt &_context, bool sole_adjuster=false, bool writeback_all=false)
Definition clang_c_adjust_irep2.h:86
IREP2-native adjust pass for the C++ frontend (Phase 7).
Definition clang_cpp_adjust_irep2.h:19
void adjust_cpp_member(expr2tc &expr)
IREP2 form of clang_cpp_adjust::adjust_cpp_member.
Definition clang_cpp_adjust_irep2.cpp:345
void adjust_reference(expr2tc &expr) override
IREP2 form of clang_cpp_adjust::adjust_reference: read each operand that is a reference through,...
Definition clang_cpp_adjust_irep2.cpp:478
void align_call_return_type(expr2tc &expr, const symbolt &callee) override
IREP2 form of clang_cpp_adjust::align_se_function_call_return_type: a call evaluates to its callee's ...
Definition clang_cpp_adjust_irep2.cpp:317
static std::vector< arm_info > arm_order()
The arms in application order, as arm_order() is for the C pass.
Definition clang_cpp_adjust_irep2.cpp:104
void adjust_sole_arms(expr2tc &expr) override
Arms that run only when this pass is the sole adjuster, applied in the order arms lists them.
Definition clang_cpp_adjust_irep2.cpp:113
bool is_constructor_call(const expr2tc &call)
Whether call is a constructor call.
Definition clang_cpp_adjust_irep2.cpp:118
bool construct_elements(const expr2tc &array, const expr2tc &ctor, std::vector< expr2tc > &out)
False when a dimension's size is not a constant, leaving out unusable: the caller emits nothing in th...
Definition clang_cpp_adjust_irep2.cpp:184
void hoist_switch_declaration(expr2tc &expr)
IREP2 form of clang_cpp_adjust::adjust_switch's declaration case.
Definition clang_cpp_adjust_irep2.cpp:523
expr2tc find_constructor_call(const expr2tc &e)
Definition clang_cpp_adjust_irep2.cpp:134
clang_c_adjust_irep2(contextt &_context, bool sole_adjuster=false, bool writeback_all=false)
Definition clang_c_adjust_irep2.h:86
void adjust_cpp_catch(expr2tc &expr)
IREP2 form of clang_cpp_adjust::adjust_catch's id assignment and of the throw arm's.
Definition clang_cpp_adjust_irep2.cpp:366
void gen_implicit_union_copy_move_body(symbolt &symbol)
IREP2 form of clang_cpp_adjust::gen_implicit_union_copy_move_constructor.
Definition clang_cpp_adjust_irep2.cpp:558
void adjust_before_operands(expr2tc &expr) override
IREP2 form of clang_cpp_adjust::adjust_side_effect_assign's constructor fold: obj = C(args) becomes t...
Definition clang_cpp_adjust_irep2.cpp:274
void adjust_cpp_delete(expr2tc &expr)
IREP2 form of clang_cpp_adjust::adjust_cpp_delete: attach the destructor call delete p makes,...
Definition clang_cpp_adjust_irep2.cpp:405
expr2tc array_decl_constructor(const expr2tc &stmt)
Nil unless stmt declares a local array whose initialiser is a single whole-array constructor call; ot...
Definition clang_cpp_adjust_irep2.cpp:149
void fan_out_array_construction(expr2tc &expr)
IREP2 form of clang_cpp_adjust::adjust_decl_block's fan-out: a local array of class type arrives with...
Definition clang_cpp_adjust_irep2.cpp:232
void adjust_symbol_type(symbolt &symbol) override
A dynamic throw(T...) specification reaches this pass with its declared types unresolved; left so,...
Definition clang_cpp_adjust_irep2.cpp:513
void fold_constructor_assignment(expr2tc &expr)
Definition clang_cpp_adjust_irep2.cpp:280
void gen_symbol_code(symbolt &symbol) override
Per-symbol code the pass synthesises rather than rewrites, run before the value walk so what it emits...
Definition clang_cpp_adjust_irep2.cpp:549
void adjust_cpp_throw(expr2tc &expr)
Definition clang_cpp_adjust_irep2.cpp:386
Definition symbol.h:12
irep_container< expr2t > expr2tc
Definition irep2.h:431
Phase 6 (C.3) IREP2-native adjuster for the C frontend.
Definition clang_c_adjust_irep2.h:50