From 32fc3abf0ed64ed30346eac9ba6e28f8fe9df11f Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Tue, 25 Nov 2008 21:25:52 +0000 Subject: [PATCH] regrename.c (merge_overlapping_regs): Add registers artificially defined at the top of the basic block to the set of... * regrename.c (merge_overlapping_regs): Add registers artificially defined at the top of the basic block to the set of live ones just before the first insn. From-SVN: r142203 --- gcc/ChangeLog | 6 ++++++ gcc/regrename.c | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bf00b683894..19295b13b96 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-11-25 Eric Botcazou + + * regrename.c (merge_overlapping_regs): Add registers artificially + defined at the top of the basic block to the set of live ones just + before the first insn. + 2008-11-25 H.J. Lu Joey Ye diff --git a/gcc/regrename.c b/gcc/regrename.c index b01c2e6b15b..83fd605fcb4 100644 --- a/gcc/regrename.c +++ b/gcc/regrename.c @@ -137,8 +137,15 @@ merge_overlapping_regs (basic_block b, HARD_REG_SET *pset, struct du_chain *t = chain; rtx insn; HARD_REG_SET live; + df_ref *def_rec; REG_SET_TO_HARD_REG_SET (live, df_get_live_in (b)); + for (def_rec = df_get_artificial_defs (b->index); *def_rec; def_rec++) + { + df_ref def = *def_rec; + if (DF_REF_FLAGS (def) & DF_REF_AT_TOP) + SET_HARD_REG_BIT (live, DF_REF_REGNO (def)); + } insn = BB_HEAD (b); while (t) { -- 2.30.2