stage3/flow_control_analysis.cc
changeset 685 5b19e376cc94
parent 672 dee28c5bdc73
child 690 6156ee2b4e32
equal deleted inserted replaced
684:0e417d42cf6a 685:5b19e376cc94
   130 flow_control_analysis_c::~flow_control_analysis_c(void) {
   130 flow_control_analysis_c::~flow_control_analysis_c(void) {
   131 }
   131 }
   132 
   132 
   133 
   133 
   134 void flow_control_analysis_c::link_insert(symbol_c *prev_instruction, symbol_c *next_instruction) {
   134 void flow_control_analysis_c::link_insert(symbol_c *prev_instruction, symbol_c *next_instruction) {
   135 	il_instruction_c *next = dynamic_cast<il_instruction_c *>(next_instruction);
   135 	il_instruction_c        *next_a = dynamic_cast<il_instruction_c        *>(next_instruction);
   136 	il_instruction_c *prev = dynamic_cast<il_instruction_c *>(prev_instruction);
   136 	il_instruction_c        *prev_a = dynamic_cast<il_instruction_c        *>(prev_instruction);
   137 	if ((NULL == next) || (NULL == prev)) ERROR;
   137 	il_simple_instruction_c *next_b = dynamic_cast<il_simple_instruction_c *>(next_instruction);
   138 
   138 	il_simple_instruction_c *prev_b = dynamic_cast<il_simple_instruction_c *>(prev_instruction);
   139 	next->prev_il_instruction.insert(next->prev_il_instruction.begin(), prev);
   139 	
   140 	prev->next_il_instruction.insert(prev->next_il_instruction.begin(), next);
   140 	if       (NULL != next_a)  next_a->prev_il_instruction.insert(next_a->prev_il_instruction.begin(), prev_instruction);
       
   141 	else if  (NULL != next_b)  next_b->prev_il_instruction.insert(next_b->prev_il_instruction.begin(), prev_instruction);
       
   142 	else ERROR;
       
   143 	
       
   144 	if       (NULL != prev_a)  prev_a->next_il_instruction.insert(prev_a->next_il_instruction.begin(), next_instruction);
       
   145 	else if  (NULL != prev_b)  prev_b->next_il_instruction.insert(prev_b->next_il_instruction.begin(), next_instruction);
       
   146 	else ERROR;
   141 }
   147 }
   142 
   148 
   143 
   149 
   144 void flow_control_analysis_c::link_pushback(symbol_c *prev_instruction, symbol_c *next_instruction) {
   150 void flow_control_analysis_c::link_pushback(symbol_c *prev_instruction, symbol_c *next_instruction) {
   145 	il_instruction_c *next = dynamic_cast<il_instruction_c *>(next_instruction);
   151 	il_instruction_c *next = dynamic_cast<il_instruction_c *>(next_instruction);