X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fldstopt.c;h=c8552d610912828c0a002127eb1f87de6f632672;hb=b27ae245166bb695bc4e418ff416d91bc37d0f28;hp=1b22324ef00b52b7476e8a69c60c09c22bfea8a1;hpb=702a47604a6db081d5c34bac1f92e58200627340;p=libfirm diff --git a/ir/opt/ldstopt.c b/ir/opt/ldstopt.c index 1b22324ef..c8552d610 100644 --- a/ir/opt/ldstopt.c +++ b/ir/opt/ldstopt.c @@ -215,7 +215,7 @@ static void collect_nodes(ir_node *node, void *env) if (is_Proj(proj)) { pred = get_Proj_pred(proj); - is_exc = get_Proj_proj(proj) == pn_Generic_X_except; + is_exc = is_x_except_Proj(proj); } /* ignore Bad predecessors, they will be removed later */ @@ -913,7 +913,7 @@ static int try_load_after_store(ir_node *load, /* no exception */ if (info->projs[pn_Load_X_except]) { ir_graph *irg = get_irn_irg(load); - exchange( info->projs[pn_Load_X_except], new_r_Bad(irg)); + exchange( info->projs[pn_Load_X_except], new_r_Bad(irg, mode_X)); res |= CF_CHANGED; } if (info->projs[pn_Load_X_regular]) { @@ -1019,7 +1019,7 @@ static unsigned follow_Mem_chain(ir_node *load, ir_node *curr) /* no exception */ if (info->projs[pn_Load_X_except]) { ir_graph *irg = get_irn_irg(load); - exchange(info->projs[pn_Load_X_except], new_r_Bad(irg)); + exchange(info->projs[pn_Load_X_except], new_r_Bad(irg, mode_X)); res |= CF_CHANGED; } if (info->projs[pn_Load_X_regular]) { @@ -1156,7 +1156,7 @@ static unsigned optimize_load(ir_node *load) /* no exception, clear the info field as it might be checked later again */ if (info->projs[pn_Load_X_except]) { ir_graph *irg = get_irn_irg(load); - exchange(info->projs[pn_Load_X_except], new_r_Bad(irg)); + exchange(info->projs[pn_Load_X_except], new_r_Bad(irg, mode_X)); info->projs[pn_Load_X_except] = NULL; res |= CF_CHANGED; } @@ -1191,7 +1191,7 @@ static unsigned optimize_load(ir_node *load) /* we completely replace the load by this value */ if (info->projs[pn_Load_X_except]) { ir_graph *irg = get_irn_irg(load); - exchange(info->projs[pn_Load_X_except], new_r_Bad(irg)); + exchange(info->projs[pn_Load_X_except], new_r_Bad(irg, mode_X)); info->projs[pn_Load_X_except] = NULL; res |= CF_CHANGED; } @@ -1847,10 +1847,8 @@ static void move_loads_out_of_loops(scc *pscc, loop_env *env) } } } - - /* Within unreachable code, there might be memory loops without Phis. */ - if (phi_list == NULL) - return; + /* no Phis no fun */ + assert(phi_list != NULL && "DFS found a loop without Phi"); /* for now, we cannot handle more than one input (only reducible cf) */ if (phi_list->next != NULL) @@ -2285,8 +2283,8 @@ int optimize_load_store(ir_graph *irg) /* Handle graph state */ if (env.changes) { - set_irg_outs_inconsistent(irg); set_irg_entity_usage_state(irg, ir_entity_usage_not_computed); + edges_deactivate(irg); } if (env.changes & CF_CHANGED) {