OSDN Git Service
(root)
/
pf3gnuchains
/
gcc-fork.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* Makefile.in (GCC_OBJS): Remove opts-common.o and options.o.
[pf3gnuchains/gcc-fork.git]
/
gcc
/
sched-rgn.c
diff --git
a/gcc/sched-rgn.c
b/gcc/sched-rgn.c
index
7e971e1
..
2c00907
100644
(file)
--- 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,
/* 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)
Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@cygnus.com) Enhanced by,
and currently maintained by, Jim Wilson (wilson@cygnus.com)
@@
-50,7
+50,6
@@
along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "tm.h"
#include "diagnostic-core.h"
#include "coretypes.h"
#include "tm.h"
#include "diagnostic-core.h"
-#include "toplev.h"
#include "rtl.h"
#include "tm_p.h"
#include "hard-reg-set.h"
#include "rtl.h"
#include "tm_p.h"
#include "hard-reg-set.h"
@@
-60,7
+59,6
@@
along with GCC; see the file COPYING3. If not see
#include "insn-config.h"
#include "insn-attr.h"
#include "except.h"
#include "insn-config.h"
#include "insn-attr.h"
#include "except.h"
-#include "toplev.h"
#include "recog.h"
#include "cfglayout.h"
#include "params.h"
#include "recog.h"
#include "cfglayout.h"
#include "params.h"
@@
-1764,29
+1762,18
@@
update_live_1 (int src, rtx x)
regno = REGNO (reg);
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);
}
}
}
}
}
}
@@
-2070,7
+2057,7
@@
static int sched_n_insns;
/* Implementations of the sched_info functions for region scheduling. */
static void init_ready_list (void);
static int can_schedule_ready_p (rtx);
/* Implementations of the sched_info functions for region scheduling. */
static void init_ready_list (void);
static int can_schedule_ready_p (rtx);
-static void begin_schedule_ready (rtx
, rtx
);
+static void begin_schedule_ready (rtx);
static ds_t new_ready (rtx, ds_t);
static int schedule_more_p (void);
static const char *rgn_print_insn (const_rtx, int);
static ds_t new_ready (rtx, ds_t);
static int schedule_more_p (void);
static const char *rgn_print_insn (const_rtx, int);
@@
-2140,7
+2127,7
@@
init_ready_list (void)
src_head = head;
for (insn = src_head; insn != src_next_tail; insn = NEXT_INSN (insn))
src_head = head;
for (insn = src_head; insn != src_next_tail; insn = NEXT_INSN (insn))
- if (INSN_P (insn)
&& !BOUNDARY_DEBUG_INSN_P (insn)
)
+ if (INSN_P (insn))
try_ready (insn);
}
}
try_ready (insn);
}
}
@@
-2165,7
+2152,7
@@
can_schedule_ready_p (rtx insn)
can_schedule_ready_p () differs from the one passed to
begin_schedule_ready (). */
static void
can_schedule_ready_p () differs from the one passed to
begin_schedule_ready (). */
static void
-begin_schedule_ready (rtx insn
, rtx last ATTRIBUTE_UNUSED
)
+begin_schedule_ready (rtx insn)
{
/* An interblock motion? */
if (INSN_BB (insn) != target_bb)
{
/* An interblock motion? */
if (INSN_BB (insn) != target_bb)
@@
-2382,6
+2369,7
@@
static const struct haifa_sched_info rgn_const_sched_info =
rgn_add_remove_insn,
begin_schedule_ready,
rgn_add_remove_insn,
begin_schedule_ready,
+ NULL,
advance_target_bb,
SCHED_RGN
};
advance_target_bb,
SCHED_RGN
};
@@
-2574,7
+2562,10
@@
concat_INSN_LIST (rtx copy, rtx old)
{
rtx new_rtx = old;
for (; copy ; copy = XEXP (copy, 1))
{
rtx new_rtx = old;
for (; copy ; copy = XEXP (copy, 1))
- new_rtx = alloc_INSN_LIST (XEXP (copy, 0), new_rtx);
+ {
+ new_rtx = alloc_INSN_LIST (XEXP (copy, 0), new_rtx);
+ PUT_REG_NOTE_KIND (new_rtx, REG_NOTE_KIND (copy));
+ }
return new_rtx;
}
return new_rtx;
}