ir_if *const stmt = new ir_if(condition);
- if (then_statement != NULL) {
- ast_node *node = (ast_node *) then_statement;
- do {
- node->hir(& stmt->then_instructions, state);
- node = (ast_node *) node->next;
- } while (node != then_statement);
- }
+ if (then_statement != NULL)
+ then_statement->hir(& stmt->then_instructions, state);
- if (else_statement != NULL) {
- ast_node *node = (ast_node *) else_statement;
- do {
- node->hir(& stmt->else_instructions, state);
- node = (ast_node *) node->next;
- } while (node != else_statement);
- }
+ if (else_statement != NULL)
+ else_statement->hir(& stmt->else_instructions, state);
instructions->push_tail(stmt);
if (mode != ast_do_while)
condition_to_hir(stmt, state);
- if (body != NULL) {
- ast_node *node = (ast_node *) body;
- do {
- node->hir(& stmt->body_instructions, state);
- node = (ast_node *) node->next;
- } while (node != body);
- }
+ if (body != NULL)
+ body->hir(& stmt->body_instructions, state);
if (rest_expression != NULL)
rest_expression->hir(& stmt->body_instructions, state);