From 75ae7b18e06eb779d052dd10bd43762ef19f7f75 Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Mon, 16 Jul 2007 12:34:53 +0000 Subject: [PATCH] fix fehler40 [r15159] --- ir/opt/ldstopt.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ir/opt/ldstopt.c b/ir/opt/ldstopt.c index 11da3402c..84a52a4f8 100644 --- a/ir/opt/ldstopt.c +++ b/ir/opt/ldstopt.c @@ -979,7 +979,12 @@ static unsigned optimize_phi(ir_node *phi, walk_env_t *wenv) if (n <= 0) return 0; - store = skip_Proj(get_Phi_pred(phi, 0)); + /* must be only one user */ + projM = get_Phi_pred(phi, 0); + if (get_irn_n_edges(projM) != 1) + return 0; + + store = skip_Proj(projM); old_store = store; if (get_irn_op(store) != op_Store) return 0; @@ -1007,8 +1012,12 @@ static unsigned optimize_phi(ir_node *phi, walk_env_t *wenv) exc = info->exc_block; for (i = 1; i < n; ++i) { - ir_node *pred = skip_Proj(get_Phi_pred(phi, i)); + ir_node *pred = get_Phi_pred(phi, i); + + if (get_irn_n_edges(pred) != 1) + return 0; + pred = skip_Proj(pred); if (get_irn_op(pred) != op_Store) return 0; -- 2.20.1