ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
clang_cpp_adjust.h
Go to the documentation of this file.
1#ifndef CLANG_CPP_FRONTEND_CLANG_CPP_ADJUST_H_
2#define CLANG_CPP_FRONTEND_CLANG_CPP_ADJUST_H_
3
5
21{
22public:
23 explicit clang_cpp_adjust(contextt &_context);
24 virtual ~clang_cpp_adjust() = default;
25
29 void adjust_symbol(symbolt &symbol) override;
30
35 void adjust_code(codet &code) override;
36 void adjust_while(codet &code) override;
37 void adjust_switch(codet &code) override;
38 void adjust_for(codet &code) override;
39 void adjust_ifthenelse(codet &code) override;
40 void adjust_decl_block(codet &code) override;
41 void adjust_catch(codet &code);
42
43 void adjust_switch_case_ops(exprt &stmt, const typet &switch_type);
44
49 void adjust_member(member_exprt &expr) override;
50 void adjust_side_effect(side_effect_exprt &expr) override;
53 side_effect_expr_function_callt &expr) override;
55 side_effect_expr_function_callt &expr) override;
56 void adjust_reference(exprt &expr) override;
57 void adjust_new(exprt &expr);
60
74
78 /*
79 * generate vptr initialization code for constructor:
80 * this->BLAH@vtable_ptr = $vtable::BLAH
81 * where BLAH stands for the constructors' class/struct's name
82 *
83 * Params:
84 * - comp: vptr component as in class' type `components` vector
85 * - ctor_type: type of the constructor symbol
86 * - new_code: the code expression for vptr initialization
87 */
90 const code_typet &ctor_type);
91
96 void convert_reference(exprt &expr);
100 exprt &f_op,
101 side_effect_expr_function_callt &expr) override;
103 const typet &type,
104 const std::string &suffix,
105 std::vector<irep_idt> &ids,
106 bool is_catch = false);
107
117};
118
119#endif /* CLANG_CPP_FRONTEND_CLANG_CPP_ADJUST_H_ */
clang_c_adjust(contextt &_context)
Definition clang_c_adjust_expr.cpp:22
exprt gen_vptr_init_rhs(const struct_union_typet::componentt &comp, const code_typet &ctor_type)
methods for implicit GOTO code generation
void adjust_symbol(symbolt &symbol) override
methods for symbol adjustment
Definition clang_cpp_adjust_expr.cpp:77
void adjust_reference(exprt &expr) override
Definition clang_cpp_adjust_expr.cpp:346
void convert_lvalue_ref_to_deref_sideeffect(exprt &expr)
Definition clang_cpp_adjust_expr.cpp:393
void adjust_cpp_delete(side_effect_exprt &expr)
Definition clang_cpp_adjust_expr.cpp:134
void adjust_new(exprt &expr)
Definition clang_cpp_adjust_expr.cpp:159
void adjust_switch(codet &code) override
Definition clang_cpp_adjust_code.cpp:138
void adjust_for(codet &code) override
Definition clang_cpp_adjust_code.cpp:173
void adjust_while(codet &code) override
Definition clang_cpp_adjust_code.cpp:79
void adjust_catch(codet &code)
Definition clang_cpp_adjust_code.cpp:336
void adjust_cpp_member(member_exprt &expr)
Definition clang_cpp_adjust_expr.cpp:226
void gen_implicit_union_copy_move_constructor(symbolt &symbol)
Generates an implicit copy and move constructor for a symbol if it is a union.
Definition clang_cpp_adjust_expr.cpp:17
void adjust_side_effect_assign(side_effect_exprt &expr)
Definition clang_cpp_adjust_expr.cpp:268
void adjust_ifthenelse(codet &code) override
Definition clang_cpp_adjust_code.cpp:49
void adjust_function_call_arguments(side_effect_expr_function_callt &expr) override
Definition clang_cpp_adjust_expr.cpp:402
void adjust_code(codet &code) override
methods for code (codet) adjustment and other IRs derived from codet
Definition clang_cpp_adjust_code.cpp:24
void adjust_side_effect(side_effect_exprt &expr) override
Definition clang_cpp_adjust_expr.cpp:100
void adjust_cpp_pseudo_destructor_call(exprt &expr)
Adjusts a C++ pseudo-destructor call expression.
Definition clang_cpp_adjust_expr.cpp:210
void adjust_side_effect_throw(side_effect_exprt &expr)
Definition clang_cpp_adjust_expr.cpp:420
void align_se_function_call_return_type(exprt &f_op, side_effect_expr_function_callt &expr) override
ancillary methods to support the expr/code adjustments above
Definition clang_cpp_adjust_expr.cpp:408
void adjust_side_effect_function_call(side_effect_expr_function_callt &expr) override
Definition clang_cpp_adjust_expr.cpp:467
void adjust_member(member_exprt &expr) override
methods for expression (exprt) adjustment and other IRs derived from exprt
Definition clang_cpp_adjust_expr.cpp:194
clang_cpp_adjust(contextt &_context)
Definition clang_cpp_adjust_expr.cpp:12
void convert_ref_to_deref_symbol(exprt &expr)
Definition clang_cpp_adjust_expr.cpp:384
void adjust_switch_case_ops(exprt &stmt, const typet &switch_type)
Definition clang_cpp_adjust_code.cpp:109
void adjust_decl_block(codet &code) override
Definition clang_cpp_adjust_code.cpp:239
void convert_expression_to_code(exprt &expr)
ancillary methods to support the expr/code adjustments above
Definition clang_cpp_adjust_code.cpp:12
virtual ~clang_cpp_adjust()=default
void convert_exception_id(const typet &type, const std::string &suffix, std::vector< irep_idt > &ids, bool is_catch=false)
Definition clang_cpp_adjust_expr.cpp:458
void convert_reference(exprt &expr)
Definition clang_cpp_adjust_expr.cpp:355
Definition std_types.h:280
Definition std_code.h:8
Definition context.h:57
Definition expr.h:34
Definition std_expr.h:949
Definition std_code.h:905
Definition std_code.h:854
Definition std_types.h:87
Definition symbol.h:12
Definition type.h:9