From: Richard Kenner Date: Fri, 31 Jul 1992 12:13:38 +0000 (-0400) Subject: entered into RCS X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=58c8c59349b32c5f8ced092c74d2918580c218f0;p=gcc.git entered into RCS From-SVN: r1731 --- diff --git a/gcc/cexp.y b/gcc/cexp.y index e16028bdf94..6dcbecd3c2a 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 ab9b09d1a62..a2a11a1fa5c 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 e1c320973ed..14ef88b4c95 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 3dfcb2db04e..381a86ecaec 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 46274374ce1..2c890965432 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 778090ef284..d95c7344bc1 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