stage3/flow_control_analysis.hh
changeset 459 01f6664bf8c5
parent 453 4733f662362a
child 463 fafa9abc166e
equal deleted inserted replaced
458:587884880be6 459:01f6664bf8c5
    46 
    46 
    47 
    47 
    48 class flow_control_analysis_c: public iterator_visitor_c {
    48 class flow_control_analysis_c: public iterator_visitor_c {
    49 
    49 
    50   private:
    50   private:
    51     search_varfb_instance_type_c *search_varfb_instance_type;
    51     search_il_label_c *search_il_label;
    52     symbol_c *prev_il_instruction;
    52     symbol_c *prev_il_instruction;
       
    53     symbol_c *curr_il_instruction;
    53 
    54 
    54   public:
    55   public:
    55     flow_control_analysis_c(symbol_c *ignore);
    56     flow_control_analysis_c(symbol_c *ignore);
    56     virtual ~flow_control_analysis_c(void);
    57     virtual ~flow_control_analysis_c(void);
    57 
    58 
    87     void *visit(instruction_list_c *symbol);
    88     void *visit(instruction_list_c *symbol);
    88     void *visit(il_instruction_c *symbol);
    89     void *visit(il_instruction_c *symbol);
    89 //     void *visit(il_simple_operation_c *symbol);
    90 //     void *visit(il_simple_operation_c *symbol);
    90 //     void *visit(il_function_call_c *symbol);
    91 //     void *visit(il_function_call_c *symbol);
    91     void *visit(il_expression_c *symbol);
    92     void *visit(il_expression_c *symbol);
       
    93     void *visit(il_jump_operation_c *symbol);
    92 //     void *visit(il_fb_call_c *symbol);
    94 //     void *visit(il_fb_call_c *symbol);
    93 //     void *visit(il_formal_funct_call_c *symbol);
    95 //     void *visit(il_formal_funct_call_c *symbol);
    94 //     void *visit(il_operand_list_c *symbol);
    96 //     void *visit(il_operand_list_c *symbol);
    95        void *visit(simple_instr_list_c *symbol);
    97        void *visit(simple_instr_list_c *symbol);
    96        void *visit(il_simple_instruction_c*symbol);
    98        void *visit(il_simple_instruction_c*symbol);
    99 //     void *visit(il_param_out_assignment_c *symbol);
   101 //     void *visit(il_param_out_assignment_c *symbol);
   100 
   102 
   101     /*******************/
   103     /*******************/
   102     /* B 2.2 Operators */
   104     /* B 2.2 Operators */
   103     /*******************/
   105     /*******************/
   104     /*
   106 //     void *visit(   LD_operator_c *symbol);
   105     void *visit(LD_operator_c *symbol);
   107 //     void *visit(  LDN_operator_c *symbol);
   106     void *visit(LDN_operator_c *symbol);
   108 //     void *visit(   ST_operator_c *symbol);
   107     void *visit(ST_operator_c *symbol);
   109 //     void *visit(  STN_operator_c *symbol);
   108     void *visit(STN_operator_c *symbol);
   110 //     void *visit(  NOT_operator_c *symbol);
   109     void *visit(NOT_operator_c *symbol);
   111 //     void *visit(    S_operator_c *symbol);
   110     void *visit(S_operator_c *symbol);
   112 //     void *visit(    R_operator_c *symbol);
   111     void *visit(R_operator_c *symbol);
   113 //     void *visit(   S1_operator_c *symbol);
   112     void *visit(S1_operator_c *symbol);
   114 //     void *visit(   R1_operator_c *symbol);
   113     void *visit(R1_operator_c *symbol);
   115 //     void *visit(  CLK_operator_c *symbol);
   114     void *visit(CLK_operator_c *symbol);
   116 //     void *visit(   CU_operator_c *symbol);
   115     void *visit(CU_operator_c *symbol);
   117 //     void *visit(   CD_operator_c *symbol);
   116     void *visit(CD_operator_c *symbol);
   118 //     void *visit(   PV_operator_c *symbol);
   117     void *visit(PV_operator_c *symbol);
   119 //     void *visit(   IN_operator_c *symbol);
   118     void *visit(IN_operator_c *symbol);
   120 //     void *visit(   PT_operator_c *symbol);
   119     void *visit(PT_operator_c *symbol);
   121 //     void *visit(  AND_operator_c *symbol);
   120     void *visit(AND_operator_c *symbol);
   122 //     void *visit(   OR_operator_c *symbol);
   121     void *visit(OR_operator_c *symbol);
   123 //     void *visit(  XOR_operator_c *symbol);
   122     void *visit(XOR_operator_c *symbol);
   124 //     void *visit( ANDN_operator_c *symbol);
   123     void *visit(ANDN_operator_c *symbol);
   125 //     void *visit(  ORN_operator_c *symbol);
   124     void *visit(ORN_operator_c *symbol);
   126 //     void *visit( XORN_operator_c *symbol);
   125     void *visit(XORN_operator_c *symbol);
   127 //     void *visit(  ADD_operator_c *symbol);
   126     void *visit(ADD_operator_c *symbol);
   128 //     void *visit(  SUB_operator_c *symbol);
   127     void *visit(SUB_operator_c *symbol);
   129 //     void *visit(  MUL_operator_c *symbol);
   128     void *visit(MUL_operator_c *symbol);
   130 //     void *visit(  DIV_operator_c *symbol);
   129     void *visit(DIV_operator_c *symbol);
   131 //     void *visit(  MOD_operator_c *symbol);
   130     void *visit(MOD_operator_c *symbol);
   132 //     void *visit(   GT_operator_c *symbol);
   131     void *visit(GT_operator_c *symbol);
   133 //     void *visit(   GE_operator_c *symbol);
   132     void *visit(GE_operator_c *symbol);
   134 //     void *visit(   EQ_operator_c *symbol);
   133     void *visit(EQ_operator_c *symbol);
   135 //     void *visit(   LT_operator_c *symbol);
   134     void *visit(LT_operator_c *symbol);
   136 //     void *visit(   LE_operator_c *symbol);
   135     void *visit(LE_operator_c *symbol);
   137 //     void *visit(   NE_operator_c *symbol);
   136     void *visit(NE_operator_c *symbol);
   138 //     void *visit(  CAL_operator_c *symbol);
   137     void *visit(CAL_operator_c *symbol);
   139 //     void *visit( CALC_operator_c *symbol);
   138     void *visit(CALC_operator_c *symbol);
   140 //     void *visit(CALCN_operator_c *symbol);
   139     void *visit(CALCN_operator_c *symbol);
   141 //     void *visit(  RET_operator_c *symbol);
   140     void *visit(RET_operator_c *symbol);
   142 //     void *visit( RETC_operator_c *symbol);
   141     void *visit(RETC_operator_c *symbol);
   143 //     void *visit(RETCN_operator_c *symbol);
   142     void *visit(RETCN_operator_c *symbol);
   144 //     void *visit(  JMP_operator_c *symbol);
   143     void *visit(JMP_operator_c *symbol);
   145 //     void *visit( JMPC_operator_c *symbol);
   144     void *visit(JMPC_operator_c *symbol);
   146 //     void *visit(JMPCN_operator_c *symbol);
   145     void *visit(JMPCN_operator_c *symbol);
   147 
   146     */
       
   147     /* Symbol class handled together with function call checks */
   148     /* Symbol class handled together with function call checks */
   148     // void *visit(il_assign_operator_c *symbol, variable_name);
   149     // void *visit(il_assign_operator_c *symbol, variable_name);
   149     /* Symbol class handled together with function call checks */
   150     /* Symbol class handled together with function call checks */
   150     // void *visit(il_assign_operator_c *symbol, option, variable_name);
   151     // void *visit(il_assign_operator_c *symbol, option, variable_name);
   151 
   152