diff options
author | aesok <aesok@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-03-19 17:33:45 +0000 |
---|---|---|
committer | aesok <aesok@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-03-19 17:33:45 +0000 |
commit | 771d46166087ea8e015d1cb02560aa6f212852f2 (patch) | |
tree | 65a46d02e15ddf767df696b9661692c68608064a /gcc/sched-rgn.c | |
parent | 794f0924f3b7a206875bd5f0cc86d002f8208d60 (diff) | |
download | gcc-771d46166087ea8e015d1cb02560aa6f212852f2.tar.gz |
* cfgcleanup.c (mark_effect): Use bitmap_set_range/bitmap_clear_range
instead of loop. Use HARD_REGISTER_NUM_P predicate.
* haifa-sched.c (setup_ref_regs): Ditto.
* caller-save.c (add_used_regs_1): Ditto.
* dse.c (look_for_hardregs): Ditto.
* df-problems.c (df_simulate_one_insn_forwards): Ditto.
* sched-rgn.c (check_live_1): Ditto.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171183 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/sched-rgn.c')
-rw-r--r-- | gcc/sched-rgn.c | 31 |
1 files changed, 10 insertions, 21 deletions
diff --git a/gcc/sched-rgn.c b/gcc/sched-rgn.c index 6c4fd46a50f..be2a1e9a211 100644 --- a/gcc/sched-rgn.c +++ b/gcc/sched-rgn.c @@ -1,6 +1,6 @@ /* Instruction scheduling pass. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011 Free Software Foundation, Inc. Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by, and currently maintained by, Jim Wilson (wilson@cygnus.com) @@ -1762,29 +1762,18 @@ update_live_1 (int src, rtx x) regno = REGNO (reg); - if (regno >= FIRST_PSEUDO_REGISTER || !global_regs[regno]) + if (! HARD_REGISTER_NUM_P (regno) + || !global_regs[regno]) { - if (regno < FIRST_PSEUDO_REGISTER) - { - int j = hard_regno_nregs[regno][GET_MODE (reg)]; - while (--j >= 0) - { - for (i = 0; i < candidate_table[src].update_bbs.nr_members; i++) - { - basic_block b = candidate_table[src].update_bbs.first_member[i]; - - SET_REGNO_REG_SET (df_get_live_in (b), regno + j); - } - } - } - else + for (i = 0; i < candidate_table[src].update_bbs.nr_members; i++) { - for (i = 0; i < candidate_table[src].update_bbs.nr_members; i++) - { - basic_block b = candidate_table[src].update_bbs.first_member[i]; + basic_block b = candidate_table[src].update_bbs.first_member[i]; - SET_REGNO_REG_SET (df_get_live_in (b), regno); - } + if (HARD_REGISTER_NUM_P (regno)) + bitmap_set_range (df_get_live_in (b), regno, + hard_regno_nregs[regno][GET_MODE (reg)]); + else + bitmap_set_bit (df_get_live_in (b), regno); } } } |