#include <algorithm>#include <iostream>#include <lestes/std/list.hh>#include <lestes/std/pair.hh>#include <lestes/std/reflect.hh>#include <lestes/msg/logger.hh>#include <lestes/msg/logger_util.hh>#include <lestes/backend_v2/interface/backend_data_builder.g.hh>#include <lestes/md/mem/mem_alloc_manager.g.hh>#include <lestes/md/types/copy_constructor_call_generator.g.hh>#include <lestes/md/functions/function_parameter_accessor.g.hh>#include <lestes/md/literals/literal_loader.g.hh>#include <lestes/md/literals/literal_info.g.hh>#include <lestes/md/mem/memory_allocator_bases.g.hh>#include <lestes/md/types/tm_data_type_base.g.hh>#include <lestes/md/registers/tm_register_base.g.hh>#include <lestes/md/types/ss_type2tm_type_convertor.g.hh>#include <lestes/backend_v2/intercode/pi_mem_factory.g.hh>#include <lestes/lang/cplus/sem/ss_type.g.hh>#include <lestes/lang/cplus/sem/ss_misc.g.hh>#include <lestes/lang/cplus/sem/ss_expr_binary_op.g.hh>#include <lestes/lang/cplus/sem/ss_expr_unary_op.g.hh>#include <lestes/lang/cplus/sem/ss_expr_funcall.g.hh>#include <lestes/lang/cplus/sem/ss_declaration.g.hh>#include <lestes/lang/cplus/sem/ss_type_builtin.g.hh>#include <lestes/lang/cplus/sem/ss_finders.g.hh>#include <lestes/lang/cplus/sem/ss_ss2pi_base.g.hh>#include <lestes/lang/cplus/sem/ss_ss2pi_typedefs.hh>#include <lestes/lang/cplus/sem/ss_literal_info.g.hh>#include <lestes/lang/cplus/sem/ss_type2info.g.hh>#include <lestes/lang/cplus/sem/sem.hh>Go to the source code of this file.
| #define BIND_EQUAL_SS_PI | ( | OP, | |||
| second_type... | ) |
Generic visitor for ss -> pi transformation of binary operators Level for pseudoinstructions: maximum(psp,nsp,lft,rt) + 1
Definition at line 801 of file ss_ss2pi_base.cc.
| #define BIND_UNARY_EQUAL_SS_PI | ( | OP | ) |
Generic visitor for ss -> pi transformation of unary operators Level for pseudoinstructions: maximum(psp,nsp,lft,rt) + 1
Definition at line 870 of file ss_ss2pi_base.cc.
| #define entry | ( | a | ) | log_indent(fll,log_count++), plog(fll) <<" in " << x->uid_get() << " (" << a << ")\n" << eolog |
Definition at line 112 of file ss_ss2pi_base.cc.
Referenced by lestes::lang::cplus::sem::ss2pi_start(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_address_of(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_array_to_pointer(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_assign(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_bind_reference(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_conversion(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_dereference(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_funcall(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_get(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_literal(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_var_ref(), and lestes::lang::cplus::sem::ss_expr2pi::visit_ss_vol_get().
| #define log_flow_indent " " |
Definition at line 98 of file ss_ss2pi_base.cc.
Referenced by lestes::lang::cplus::sem::log_indent().
| #define outry | ( | a | ) | log_indent(fll,--log_count), plog(fll) <<" out " << x->uid_get() << " (" << a << ")\n" << eolog |
Definition at line 113 of file ss_ss2pi_base.cc.
Referenced by lestes::lang::cplus::sem::ss_expr2pi::evaluated(), lestes::lang::cplus::sem::ss2pi_start(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_address_of(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_array_to_pointer(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_assign(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_bind_reference(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_conversion(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_dereference(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_funcall(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_get(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_literal(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_var_ref(), and lestes::lang::cplus::sem::ss_expr2pi::visit_ss_vol_get().
| #define pi_operand_void NULL |
Definition at line 617 of file ss_ss2pi_base.cc.
Referenced by lestes::lang::cplus::sem::ss_expr2pi::visit_ss_funcall().
| #define plog |
Definition at line 109 of file ss_ss2pi_base.cc.
Referenced by lestes::lang::cplus::sem::ss_destructor_tables_stack::back_roll_from_current_compound_stmt(), lestes::lang::cplus::sem::ss_destructor_table::back_roll_table(), lestes::lang::cplus::sem::ss_destructor_tables_stack::close_compound_stmt(), lestes::lang::cplus::sem::ss_destructor_table::destructor_add(), lestes::lang::cplus::sem::dumb(), lestes::lang::cplus::sem::dump(), lestes::lang::cplus::sem::dung(), lestes::lang::cplus::sem::ss_expr2pi::is_returned_pointer(), lestes::lang::cplus::sem::ss_destructor_tables_stack::open_compound_stmt(), lestes::lang::cplus::sem::ss_sp2pi_sp(), lestes::lang::cplus::sem::summary_seq_points(), and lestes::lang::cplus::sem::ss_expr2pi::visit_ss_var_ref().
| #define second_type_arg (rt->type_get()) |
Definition at line 839 of file ss_ss2pi_base.cc.
| #define start_ss_expr2pi | ( | stmt, | |||
| stmt_caller | ) |
Value:
ptr< expression_results_map_type > expr2operand = expression_results_map_type::create();\
ptr< ss_destructor_table > temporaries = ss_destructor_table::create(NULL);\
plog(dtl) << "New temporaries table " << temporaries->uid_get()<<"\n" << eolog;\
ptr< ss_expr2pi > expr_visitor = ss_expr2pi::create(stmt_caller,stmt->psp_get(),temporaries,expr2operand);\
\
list < srp<ss_sp> > ::iterator i = stmt->sequence_points_get()->begin();\
for ( ; i != stmt->sequence_points_get()->end(); i++) { \
\
list < srp<ss_se> >::iterator ii = (*i)->nse_get()->begin(); \
for ( ; ii != (*i)->nse_get()->end(); ii++){ \
expr_visitor->returns((*ii)->from_get()); \
} \
} \
Parameters: stmt- decl/expr statement from wherewe are calling start_ss_expr2pi stmt_caller - statement visitor, which is calling this routine Used variables: psp - previous sequence point for the whole expression needed for for origin lookup. nsp - needed for building of temporaries destruction
Definition at line 1279 of file ss_ss2pi_base.cc.
1.5.1-20070107