diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2008-11-25 21:25:52 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2008-11-25 21:25:52 +0000 |
commit | 32fc3abf0ed64ed30346eac9ba6e28f8fe9df11f (patch) | |
tree | 14ac1d001513028b4ffa9611446c7444e350c7ed | |
parent | 15c58b190c94455c0ea869366c6d0c1175d0381b (diff) | |
download | gcc-32fc3abf0ed64ed30346eac9ba6e28f8fe9df11f.zip gcc-32fc3abf0ed64ed30346eac9ba6e28f8fe9df11f.tar.gz gcc-32fc3abf0ed64ed30346eac9ba6e28f8fe9df11f.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/regrename.c | 7 |
2 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bf00b68..19295b1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-11-25 Eric Botcazou <ebotcazou@adacore.com> + + * 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 <hongjiu.lu@intel.com> Joey Ye <joey.ye@intel.com> diff --git a/gcc/regrename.c b/gcc/regrename.c index b01c2e6..83fd605 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) { |