summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog14
-rw-r--r--gcc/lists.c8
-rw-r--r--gcc/rtl.def7
-rw-r--r--gcc/rtl.h6
-rw-r--r--gcc/sched-int.h10
-rw-r--r--gcc/target.h5
6 files changed, 32 insertions, 18 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 902cf75af3a..e302bb76138 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,19 @@
2006-03-30 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
+ PR target/26734
+ * rtl.def (DEPS_LIST): Change type of the second operand to 'int'.
+ * target.h (struct gcc_target.speculate_insn): Change type of the
+ second parameter to 'int'.
+ * lists.c (alloc_DEPS_LIST): Change signature. Update reference to
+ the second operand of the DEPS_LIST.
+ (copy_DEPS_LIST_list): Update reference to the second operand of the
+ DEPS_LIST.
+ * rtl.h (alloc_DEPS_LIST): Update signature.
+ * sched-int.h (ds_t): Change typedef to 'int'.
+ (DEP_STATUS, BITS_PER_DEP_STATUS): Update.
+
+2006-03-30 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
+
* haifa-sched.c (try_ready): Change condition to restore
non-speculative pattern of the instruction.
(process_insn_depend_be_in_spec): Code to keep probability of the
diff --git a/gcc/lists.c b/gcc/lists.c
index 907ccf5ef2b..23529a362e2 100644
--- a/gcc/lists.c
+++ b/gcc/lists.c
@@ -1,6 +1,6 @@
/* List management for the GCC expander.
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2003, 2004 Free Software Foundation, Inc.
+ 1999, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of GCC.
@@ -159,7 +159,7 @@ alloc_EXPR_LIST (int kind, rtx val, rtx next)
node available, we'll use it, otherwise a call to gen_rtx_DEPS_LIST
is made. */
rtx
-alloc_DEPS_LIST (rtx val, rtx next, HOST_WIDE_INT ds)
+alloc_DEPS_LIST (rtx val, rtx next, int ds)
{
rtx r;
@@ -169,7 +169,7 @@ alloc_DEPS_LIST (rtx val, rtx next, HOST_WIDE_INT ds)
unused_deps_list = XEXP (r, 1);
XEXP (r, 0) = val;
XEXP (r, 1) = next;
- XWINT (r, 2) = ds;
+ XINT (r, 2) = ds;
PUT_REG_NOTE_KIND (r, VOIDmode);
gcc_assert (GET_CODE (r) == DEPS_LIST);
@@ -257,7 +257,7 @@ copy_DEPS_LIST_list (rtx list)
while (list)
{
- *resp = alloc_DEPS_LIST (XEXP (list, 0), 0, XWINT (list, 2));
+ *resp = alloc_DEPS_LIST (XEXP (list, 0), 0, XINT (list, 2));
PUT_REG_NOTE_KIND (*resp, REG_NOTE_KIND (list));
resp = &XEXP (*resp, 1);
list = XEXP (list, 1);
diff --git a/gcc/rtl.def b/gcc/rtl.def
index 078f4af67ac..4c5a632063b 100644
--- a/gcc/rtl.def
+++ b/gcc/rtl.def
@@ -2,7 +2,7 @@
Register Transfer Expressions (rtx's) that make up the
Register Transfer Language (rtl) used in the Back End of the GNU compiler.
Copyright (C) 1987, 1988, 1992, 1994, 1995, 1997, 1998, 1999, 2000, 2004,
- 2005
+ 2005, 2006
Free Software Foundation, Inc.
This file is part of GCC.
@@ -95,9 +95,8 @@ DEF_RTL_EXPR(INSN_LIST, "insn_list", "ue", RTX_EXTRA)
/* a linked list of dependencies.
The insns are represented in print by their uids.
- Operand 2 is a degree of speculativeness of the dependence.
- Operand 3 is a degree of weakness of the dependence. */
-DEF_RTL_EXPR(DEPS_LIST, "deps_list", "uew", RTX_EXTRA)
+ Operand 2 is the status of a dependence (see sched-int.h for more). */
+DEF_RTL_EXPR(DEPS_LIST, "deps_list", "uei", RTX_EXTRA)
/* SEQUENCE appears in the result of a `gen_...' function
for a DEFINE_EXPAND that wants to make several insns.
diff --git a/gcc/rtl.h b/gcc/rtl.h
index 989bea8dc55..a442fb25d20 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -1,6 +1,6 @@
/* Register Transfer Language (RTL) definitions for GCC
- Copyright (C) 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+ 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of GCC.
@@ -1757,7 +1757,7 @@ void free_INSN_LIST_node (rtx);
rtx alloc_INSN_LIST (rtx, rtx);
rtx alloc_EXPR_LIST (int, rtx, rtx);
void free_DEPS_LIST_list (rtx *);
-rtx alloc_DEPS_LIST (rtx, rtx, HOST_WIDE_INT);
+rtx alloc_DEPS_LIST (rtx, rtx, int);
void remove_free_DEPS_LIST_elem (rtx, rtx *);
void remove_free_INSN_LIST_elem (rtx, rtx *);
rtx remove_list_elem (rtx, rtx *);
diff --git a/gcc/sched-int.h b/gcc/sched-int.h
index 175bd69dd5a..cc9812ad20f 100644
--- a/gcc/sched-int.h
+++ b/gcc/sched-int.h
@@ -1,7 +1,7 @@
/* Instruction scheduling pass. This file contains definitions used
internally in the scheduler.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of GCC.
@@ -36,8 +36,8 @@ extern state_t curr_state;
/* Forward declaration. */
struct ready_list;
-/* Type to represent status of a dependence. A convinient short alias. */
-typedef HOST_WIDE_INT ds_t;
+/* Type to represent status of a dependence. */
+typedef int ds_t;
/* Type to represent weakness of speculative dependence. */
typedef int dw_t;
@@ -377,10 +377,10 @@ extern regset *glat_start, *glat_end;
for using to describe instruction's status. It is set whenever instuction
has at least one dependence, that cannot be overcome.
See also: check_dep_status () in sched-deps.c . */
-#define DEP_STATUS(LINK) XWINT (LINK, 2)
+#define DEP_STATUS(LINK) XINT (LINK, 2)
/* We exclude sign bit. */
-#define BITS_PER_DEP_STATUS (HOST_BITS_PER_WIDE_INT - 1)
+#define BITS_PER_DEP_STATUS (HOST_BITS_PER_INT - 1)
/* First '4' stands for 3 dep type bits and HARD_DEP bit.
Second '4' stands for BEGIN_{DATA, CONTROL}, BE_IN_{DATA, CONTROL}
diff --git a/gcc/target.h b/gcc/target.h
index e9a5eca9255..b9d35782a61 100644
--- a/gcc/target.h
+++ b/gcc/target.h
@@ -1,5 +1,6 @@
/* Data structure definitions for a generic GCC target.
- Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
@@ -329,7 +330,7 @@ struct gcc_target
0, if current pattern satisfies the requested speculation type,
1, if pattern of the instruction should be changed to the newly
generated one. */
- int (* speculate_insn) (rtx, HOST_WIDE_INT, rtx *);
+ int (* speculate_insn) (rtx, int, rtx *);
/* The following member value is a pointer to a function called
by the insn scheduler. It should return true if the check instruction