From cc099622eb9c54a3b20a56e3c7d265ba7a4c840d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Christian=20W=C3=BCrdig?= Date: Wed, 28 Mar 2007 17:09:52 +0000 Subject: [PATCH] BugFix: spill delayed phis which are not in start workset --- ir/be/bespillbelady.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ir/be/bespillbelady.c b/ir/be/bespillbelady.c index 028d17b4d..355133207 100644 --- a/ir/be/bespillbelady.c +++ b/ir/be/bespillbelady.c @@ -459,6 +459,16 @@ static void compute_live_ins(ir_node *block, void *data) { for (i = 0; i < ARR_LEN(delayed) && i < free_slots; ++i) { DBG((dbg, DBG_START, " delayed %+F taken\n", delayed[i].irn)); ARR_APP1(loc_t, starters, delayed[i]); + delayed[i].irn = NULL; + } + + /* spill all delayed phis which didn't make it into start workset */ + for (i = ARR_LEN(delayed) - 1; i >= 0; --i) { + ir_node *irn = delayed[i].irn; + if (irn && is_Phi(irn)) { + DBG((dbg, DBG_START, " spilling delayed phi %+F\n", irn)); + be_spill_phi(env->senv, irn); + } } DEL_ARR_F(delayed); -- 2.20.1