X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Flower%2Flower_dw.c;h=991fa36105c92818108541c3f70dfcd15a4ce09f;hb=69a273f6926cf85f60c3da082b4a451cfba683c3;hp=753eb9d0df0158a54df07cd25c10fabcb427f88a;hpb=a0c2de17a0cbd24a34119aca32f92017cf9a2f41;p=libfirm diff --git a/ir/lower/lower_dw.c b/ir/lower/lower_dw.c index 753eb9d0d..991fa3610 100644 --- a/ir/lower/lower_dw.c +++ b/ir/lower/lower_dw.c @@ -424,6 +424,8 @@ static void lower_Store(ir_node *node, ir_mode *mode, lower_env_t *env) { dbg_info *dbg; int idx; node_entry_t *entry; + (void) node; + (void) mode; irn = get_Store_value(node); entry = env->entries[get_irn_idx(irn)]; @@ -1218,6 +1220,7 @@ static void lower_Cond(ir_node *node, ir_mode *mode, lower_env_t *env) { ir_node *sel = get_Cond_selector(node); ir_mode *m = get_irn_mode(sel); int idx; + (void) mode; if (m == mode_b) { node_entry_t *lentry, *rentry; @@ -1229,7 +1232,13 @@ static void lower_Cond(ir_node *node, ir_mode *mode, lower_env_t *env) { pn_Cmp pnc; dbg_info *dbg; + if(!is_Proj(sel)) + return; + cmp = get_Proj_pred(sel); + if(!is_Cmp(cmp)) + return; + left = get_Cmp_left(cmp); idx = get_irn_idx(left); lentry = env->entries[idx]; @@ -1531,6 +1540,12 @@ static void lower_Conv_from_Ls(ir_node *node, lower_env_t *env) { assert(idx < env->n_entries); + if (! env->entries[idx]->low_word) { + /* not ready yet, wait */ + pdeq_putr(env->waitq, node); + return; + } /* if */ + if (mode_is_int(omode) || mode_is_reference(omode)) { op = env->entries[idx]->low_word; @@ -1569,6 +1584,12 @@ static void lower_Conv_from_Lu(ir_node *node, lower_env_t *env) { assert(idx < env->n_entries); + if (! env->entries[idx]->low_word) { + /* not ready yet, wait */ + pdeq_putr(env->waitq, node); + return; + } /* if */ + if (mode_is_int(omode) || mode_is_reference(omode)) { op = env->entries[idx]->low_word; @@ -1718,6 +1739,7 @@ static void lower_Return(ir_node *node, ir_mode *mode, lower_env_t *env) { ir_node **in; int i, j, n, idx; int need_conv = 0; + (void) mode; /* check if this return must be lowered */ for (i = 0, n = get_Return_n_ress(node); i < n; ++i) { @@ -1776,6 +1798,7 @@ static void lower_Start(ir_node *node, ir_mode *mode, lower_env_t *env) { long *new_projs; int i, j, n_params, rem; ir_node *proj, *args; + (void) mode; if (is_lowered_type(tp)) { mtp = get_associated_type(tp); @@ -1863,6 +1886,7 @@ static void lower_Call(ir_node *node, ir_mode *mode, lower_env_t *env) { int n_params, n_res, need_lower = 0; int i, j; long *res_numbers = NULL; + (void) mode; if (is_lowered_type(tp)) { call_tp = get_associated_type(tp); @@ -2267,6 +2291,7 @@ static void lower_ops(ir_node *node, void *env) static int cmp_op_mode(const void *elt, const void *key, size_t size) { const op_mode_entry_t *e1 = elt; const op_mode_entry_t *e2 = key; + (void) size; return (e1->op - e2->op) | (e1->imode - e2->imode) | (e1->omode - e2->omode); } /* cmp_op_mode */ @@ -2277,6 +2302,7 @@ static int cmp_op_mode(const void *elt, const void *key, size_t size) { static int cmp_conv_tp(const void *elt, const void *key, size_t size) { const conv_tp_entry_t *e1 = elt; const conv_tp_entry_t *e2 = key; + (void) size; return (e1->imode - e2->imode) | (e1->omode - e2->omode); } /* static int cmp_conv_tp */ @@ -2477,6 +2503,7 @@ ir_entity *def_create_intrinsic_fkt(ir_type *method, const ir_op *op, char buf[64]; ident *id; ir_entity *ent; + (void) context; if (imode == omode) { snprintf(buf, sizeof(buf), "__l%s%s", get_op_name(op), get_mode_name(imode));