X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Flower%2Flower_dw.c;h=25d9d6845ebee58c8e871d7d2968c273bda6abc6;hb=bc9cdc9fc86b6886fe5004374bfaa37b2c382a49;hp=7cfc3be0991fa452880cb7fcaaadf8bb9c319339;hpb=2eb47b449dbbf0a4b397a36ae8fa401d1cd99269;p=libfirm diff --git a/ir/lower/lower_dw.c b/ir/lower/lower_dw.c index 7cfc3be09..25d9d6845 100644 --- a/ir/lower/lower_dw.c +++ b/ir/lower/lower_dw.c @@ -37,6 +37,7 @@ #include +#include "lowering.h" #include "irnode_t.h" #include "irgraph_t.h" #include "irmode_t.h" @@ -49,7 +50,6 @@ #include "firmstat.h" #include "irgwalk.h" #include "ircons.h" -#include "lower_dw.h" #include "irflag.h" #include "irtools.h" #include "debug.h" @@ -1531,6 +1531,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 +1575,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;