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); |