ss_ss2pi_base.cc File Reference

#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.

Namespaces

namespace  lestes
namespace  lestes::lang
namespace  lestes::lang::cplus
namespace  lestes::lang::cplus::sem

Defines

#define log_flow_indent   " "
#define plog
#define entry(a)   log_indent(fll,log_count++), plog(fll) <<" in " << x->uid_get() << " (" << a << ")\n" << eolog
#define outry(a)   log_indent(fll,--log_count), plog(fll) <<" out " << x->uid_get() << " (" << a << ")\n" << eolog
#define pi_operand_void   NULL
#define BIND_EQUAL_SS_PI(OP, second_type...)
#define second_type_arg   (rt->type_get())
#define BIND_UNARY_EQUAL_SS_PI(OP)
#define start_ss_expr2pi(stmt, stmt_caller)

Functions

 lestes::lang::cplus::sem::declare_logger (dtl)
 lestes::lang::cplus::sem::declare_logger (fll)
 lestes::lang::cplus::sem::declare_logger (spl)
 lestes::lang::cplus::sem::declare_logger (gnl)
 lestes::lang::cplus::sem::initialize_logger (dtl,"destr_tab", sem_logger)
 lestes::lang::cplus::sem::initialize_logger (fll,"flow", sem_logger)
 lestes::lang::cplus::sem::initialize_logger (spl,"SP", sem_logger)
 lestes::lang::cplus::sem::initialize_logger (gnl,"ss2pi", sem_logger)
int lestes::lang::cplus::sem::log_indent (ptr< ::lestes::msg::logger > flow, int ind)
void lestes::lang::cplus::sem::dump (ptr< object >x)
void lestes::lang::cplus::sem::dumb (ptr< object >x)
template<typename X>
ptr< X > lestes::lang::cplus::sem::dung (ptr< X >x)
void lestes::lang::cplus::sem::summary_seq_points (ptr< ss_sp > x)
void lestes::lang::cplus::sem::ss2pi_start (ptr< ss_translation_unit >)
ptr< pi_mem > lestes::lang::cplus::sem::pi_operand2pi_mem (ptr< pi_operand > x)
ptr< pi_mem_ptr_deref > lestes::lang::cplus::sem::pi_operand2pi_mem_pointer (ptr< pi_operand > x)
ptr< pi_preg > lestes::lang::cplus::sem::pi_operand2pi_preg (ptr< pi_operand > x)
ptr< pi_sp > lestes::lang::cplus::sem::ss_sp2pi_sp (ptr< ss_sp > sp)
 lestes::lang::cplus::sem::BIND_EQUAL_SS_PI (add)
 lestes::lang::cplus::sem::BIND_EQUAL_SS_PI (sub)
 lestes::lang::cplus::sem::BIND_EQUAL_SS_PI (mul)
 lestes::lang::cplus::sem::BIND_EQUAL_SS_PI (div)
 lestes::lang::cplus::sem::BIND_EQUAL_SS_PI (mod)
 lestes::lang::cplus::sem::BIND_EQUAL_SS_PI (shr)
 lestes::lang::cplus::sem::BIND_EQUAL_SS_PI (shl)
 lestes::lang::cplus::sem::BIND_EQUAL_SS_PI (band)
 lestes::lang::cplus::sem::BIND_EQUAL_SS_PI (bor)
 lestes::lang::cplus::sem::BIND_EQUAL_SS_PI (bxor)

Variables

int lestes::lang::cplus::sem::log_count = 0


Define Documentation

#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());               \
                }       \
        }       \
Common entry point for expression to pi tranformation, since there are more ways how to get into ss_expression - through expression statement initializer or conditions in other statements.

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.


Generated on Mon Feb 12 18:23:47 2007 for lestes by doxygen 1.5.1-20070107