aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1992-07-31 08:13:38 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1992-07-31 08:13:38 -0400
commit58c8c59349b32c5f8ced092c74d2918580c218f0 (patch)
tree3157856d1898a840aac68ef6de2bc701b24e3867 /gcc
parent510dd77e9569867570a74513c79eb767344370c6 (diff)
downloadgcc-58c8c59349b32c5f8ced092c74d2918580c218f0.zip
gcc-58c8c59349b32c5f8ced092c74d2918580c218f0.tar.gz
gcc-58c8c59349b32c5f8ced092c74d2918580c218f0.tar.bz2
entered into RCS
From-SVN: r1731
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cexp.y2
-rw-r--r--gcc/combine.c30
-rw-r--r--gcc/cse.c2
-rw-r--r--gcc/reload.c7
-rw-r--r--gcc/reload1.c2
-rw-r--r--gcc/reorg.c2
6 files changed, 34 insertions, 11 deletions
diff --git a/gcc/cexp.y b/gcc/cexp.y
index e16028b..6dcbecd 100644
--- a/gcc/cexp.y
+++ b/gcc/cexp.y
@@ -65,6 +65,8 @@ static int keyword_parsing = 0;
/* some external tables of character types */
extern unsigned char is_idstart[], is_idchar[], is_hor_space[];
+extern char *xmalloc ();
+
/* Flag for -pedantic. */
extern int pedantic;
diff --git a/gcc/combine.c b/gcc/combine.c
index ab9b09d..a2a11a1 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -1886,14 +1886,32 @@ try_combine (i3, i2, i1)
distribute_notes (gen_rtx (EXPR_LIST, REG_DEAD, i3dest_killed, NULL_RTX),
NULL_RTX, i3, newi2pat ? i2 : NULL_RTX,
NULL_RTX, NULL_RTX);
+
+ /* For I2 and I1, we have to be careful. If NEWI2PAT exists and sets
+ I2DEST or I1DEST, the death must be somewhere before I2, not I3. If
+ we passed I3 in that case, it might delete I2. */
+
if (i2dest_in_i2src)
- distribute_notes (gen_rtx (EXPR_LIST, REG_DEAD, i2dest, NULL_RTX),
- NULL_RTX, i3, newi2pat ? i2 : NULL_RTX,
- NULL_RTX, NULL_RTX);
+ {
+ if (newi2pat && reg_set_p (i2dest, newi2pat))
+ distribute_notes (gen_rtx (EXPR_LIST, REG_DEAD, i2dest, NULL_RTX),
+ NULL_RTX, i2, NULL_RTX, NULL_RTX, NULL_RTX);
+ else
+ distribute_notes (gen_rtx (EXPR_LIST, REG_DEAD, i2dest, NULL_RTX),
+ NULL_RTX, i3, newi2pat ? i2 : NULL_RTX,
+ NULL_RTX, NULL_RTX);
+ }
+
if (i1dest_in_i1src)
- distribute_notes (gen_rtx (EXPR_LIST, REG_DEAD, i1dest, NULL_RTX),
- NULL_RTX, i3, newi2pat ? i2 : NULL_RTX,
- NULL_RTX, NULL_RTX);
+ {
+ if (newi2pat && reg_set_p (i1dest, newi2pat))
+ distribute_notes (gen_rtx (EXPR_LIST, REG_DEAD, i1dest, NULL_RTX),
+ NULL_RTX, i2, NULL_RTX, NULL_RTX, NULL_RTX);
+ else
+ distribute_notes (gen_rtx (EXPR_LIST, REG_DEAD, i1dest, NULL_RTX),
+ NULL_RTX, i3, newi2pat ? i2 : NULL_RTX,
+ NULL_RTX, NULL_RTX);
+ }
distribute_links (i3links);
distribute_links (i2links);
diff --git a/gcc/cse.c b/gcc/cse.c
index e1c3209..14ef88b 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -1998,7 +1998,7 @@ exp_equiv_p (x, y, validate, equal_values)
return x == y;
case CONST_INT:
- return XINT (x, 0) == XINT (y, 0);
+ return INTVAL (x) == INTVAL (y);
case LABEL_REF:
case SYMBOL_REF:
diff --git a/gcc/reload.c b/gcc/reload.c
index 3dfcb2d..381a86e 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -4153,9 +4153,10 @@ find_reloads_address_1 (x, context, loc, operand, ind_levels)
if (reg_equiv_constant[regno] != 0)
{
- push_reload (reg_equiv_constant[regno], NULL_RTX, loc, NULL_PTR,
- context ? INDEX_REG_CLASS : BASE_REG_CLASS,
- GET_MODE (x), VOIDmode, 0, 0, operand);
+ find_reloads_address_part (reg_equiv_constant[regno], loc,
+ (context ? INDEX_REG_CLASS
+ : BASE_REG_CLASS),
+ GET_MODE (x), operand, ind_levels);
return 1;
}
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 4627437..2c89096 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -5673,8 +5673,8 @@ gen_input_reload (reloadreg, in, before_insn)
if (GET_MODE (loc) != GET_MODE (in))
in = gen_rtx (REG, GET_MODE (loc), REGNO (in));
- emit_insn_before (gen_move_insn (reloadreg, loc), before_insn);
emit_insn_before (gen_move_insn (loc, in), before_insn);
+ emit_insn_before (gen_move_insn (reloadreg, loc), before_insn);
}
#endif
diff --git a/gcc/reorg.c b/gcc/reorg.c
index 778090e..d95c734 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -1110,6 +1110,8 @@ get_branch_condition (insn, target)
return gen_rtx (reverse_condition (GET_CODE (XEXP (src, 0))),
GET_MODE (XEXP (src, 0)),
XEXP (XEXP (src, 0), 0), XEXP (XEXP (src, 0), 1));
+
+ return 0;
}
/* Return non-zero if CONDITION is more strict than the condition of