Commit 45f9877a by Eric Botcazou

loop.c (check_dbra_loop): Use gen_int_mode instead of GEN_INT for start_value when...

	* loop.c (check_dbra_loop): Use gen_int_mode instead of GEN_INT
	for start_value when it is directly moved into reg, and factorize
	the retrieval of GET_MODE (reg).

From-SVN: r77803
parent 544142d8
2004-02-14 Olivier Hainque <hainque@act-europe.fr>
* loop.c (check_dbra_loop): Use gen_int_mode instead of GEN_INT
for start_value when it is directly moved into reg, and factorize
the retrieval of GET_MODE (reg).
2004-02-14 Richard Sandiford <rsandifo@redhat.com> 2004-02-14 Richard Sandiford <rsandifo@redhat.com>
* config/mips/mips-protos.h (mips_load_got_page): Delete. * config/mips/mips-protos.h (mips_load_got_page): Delete.
......
...@@ -8015,6 +8015,7 @@ check_dbra_loop (struct loop *loop, int insn_count) ...@@ -8015,6 +8015,7 @@ check_dbra_loop (struct loop *loop, int insn_count)
struct loop_ivs *ivs = LOOP_IVS (loop); struct loop_ivs *ivs = LOOP_IVS (loop);
struct iv_class *bl; struct iv_class *bl;
rtx reg; rtx reg;
enum machine_mode mode;
rtx jump_label; rtx jump_label;
rtx final_value; rtx final_value;
rtx start_value; rtx start_value;
...@@ -8435,6 +8436,7 @@ check_dbra_loop (struct loop *loop, int insn_count) ...@@ -8435,6 +8436,7 @@ check_dbra_loop (struct loop *loop, int insn_count)
/* Save some info needed to produce the new insns. */ /* Save some info needed to produce the new insns. */
reg = bl->biv->dest_reg; reg = bl->biv->dest_reg;
mode = GET_MODE (reg);
jump_label = condjump_label (PREV_INSN (loop_end)); jump_label = condjump_label (PREV_INSN (loop_end));
new_add_val = GEN_INT (-INTVAL (bl->biv->add_val)); new_add_val = GEN_INT (-INTVAL (bl->biv->add_val));
...@@ -8446,12 +8448,12 @@ check_dbra_loop (struct loop *loop, int insn_count) ...@@ -8446,12 +8448,12 @@ check_dbra_loop (struct loop *loop, int insn_count)
if (initial_value == const0_rtx if (initial_value == const0_rtx
&& GET_CODE (comparison_value) == CONST_INT) && GET_CODE (comparison_value) == CONST_INT)
{ {
start_value = GEN_INT (comparison_val - add_adjust); start_value
= gen_int_mode (comparison_val - add_adjust, mode);
loop_insn_hoist (loop, gen_move_insn (reg, start_value)); loop_insn_hoist (loop, gen_move_insn (reg, start_value));
} }
else if (GET_CODE (initial_value) == CONST_INT) else if (GET_CODE (initial_value) == CONST_INT)
{ {
enum machine_mode mode = GET_MODE (reg);
rtx offset = GEN_INT (-INTVAL (initial_value) - add_adjust); rtx offset = GEN_INT (-INTVAL (initial_value) - add_adjust);
rtx add_insn = gen_add3_insn (reg, comparison_value, offset); rtx add_insn = gen_add3_insn (reg, comparison_value, offset);
...@@ -8467,7 +8469,6 @@ check_dbra_loop (struct loop *loop, int insn_count) ...@@ -8467,7 +8469,6 @@ check_dbra_loop (struct loop *loop, int insn_count)
} }
else if (! add_adjust) else if (! add_adjust)
{ {
enum machine_mode mode = GET_MODE (reg);
rtx sub_insn = gen_sub3_insn (reg, comparison_value, rtx sub_insn = gen_sub3_insn (reg, comparison_value,
initial_value); initial_value);
...@@ -8525,7 +8526,7 @@ check_dbra_loop (struct loop *loop, int insn_count) ...@@ -8525,7 +8526,7 @@ check_dbra_loop (struct loop *loop, int insn_count)
/* Add new compare/branch insn at end of loop. */ /* Add new compare/branch insn at end of loop. */
start_sequence (); start_sequence ();
emit_cmp_and_jump_insns (reg, const0_rtx, cmp_code, NULL_RTX, emit_cmp_and_jump_insns (reg, const0_rtx, cmp_code, NULL_RTX,
GET_MODE (reg), 0, mode, 0,
XEXP (jump_label, 0)); XEXP (jump_label, 0));
tem = get_insns (); tem = get_insns ();
end_sequence (); end_sequence ();
......
2004-02-14 Eric Botcazou <ebotcazou@act-europe.fr>
* gcc.c-torture/compile/20040214-1.c: New test.
2004-02-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 2004-02-14 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
PR c++/13635 PR c++/13635
...@@ -20794,3 +20798,4 @@ rlsruhe.de> ...@@ -20794,3 +20798,4 @@ rlsruhe.de>
* New file. * New file.
void foo(void)
{
char c;
for (c = -75; c <= 75; c++)
;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment