diff options
Diffstat (limited to 'optimize.c')
-rw-r--r-- | optimize.c | 30 |
1 files changed, 7 insertions, 23 deletions
@@ -57,10 +57,6 @@ nop_node (node_t *node, int index) { g_assert (node); -#if 0 - g_print ("nopping %p (type %d)\n", node, node->common.type); -#endif - if (index == 0) { label_node_t *label = NULL; @@ -90,8 +86,7 @@ nop_node (node_t *node, int index) } static gboolean -node_is (node_t *node, - node_type_t type) +node_is (node_t *node, node_type_t type) { if (node && node->common.type == type) return TRUE; @@ -104,11 +99,17 @@ change_source_node (node_t *source, label_node_t *new_target) { if (source->common.type == NODE_GOTO) + { source->goto_.label = new_target; + } else if (source->common.type == NODE_IF) + { source->if_.taken = new_target; + } else if (source->common.type == NODE_DYN_LABEL) + { source->dyn_label.label = new_target; + } else { g_print ("unexpected type: %d (node: %p)\n", @@ -438,27 +439,10 @@ optimize (ast_t *ast) do { -#if 0 - real_dump_graph (*entry); -#endif - changed = FALSE; *node = peephole (*node, &changed); - -#if 0 - real_dump_graph (*entry); - - g_print ("-=-=-=- nops \n"); -#endif - *node = remove_nops (*node, &changed); - -#if 0 - real_dump_graph (*entry); - - g_print ("---------------done----------------------------------\n"); -#endif } while (changed); } |