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
This commit is contained in:
parent
544142d816
commit
45f9877a51
@ -1,3 +1,9 @@
|
||||
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>
|
||||
|
||||
* config/mips/mips-protos.h (mips_load_got_page): Delete.
|
||||
|
@ -8015,6 +8015,7 @@ check_dbra_loop (struct loop *loop, int insn_count)
|
||||
struct loop_ivs *ivs = LOOP_IVS (loop);
|
||||
struct iv_class *bl;
|
||||
rtx reg;
|
||||
enum machine_mode mode;
|
||||
rtx jump_label;
|
||||
rtx final_value;
|
||||
rtx start_value;
|
||||
@ -8435,6 +8436,7 @@ check_dbra_loop (struct loop *loop, int insn_count)
|
||||
|
||||
/* Save some info needed to produce the new insns. */
|
||||
reg = bl->biv->dest_reg;
|
||||
mode = GET_MODE (reg);
|
||||
jump_label = condjump_label (PREV_INSN (loop_end));
|
||||
new_add_val = GEN_INT (-INTVAL (bl->biv->add_val));
|
||||
|
||||
@ -8446,12 +8448,12 @@ check_dbra_loop (struct loop *loop, int insn_count)
|
||||
if (initial_value == const0_rtx
|
||||
&& 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));
|
||||
}
|
||||
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 add_insn = gen_add3_insn (reg, comparison_value, offset);
|
||||
|
||||
@ -8467,7 +8469,6 @@ check_dbra_loop (struct loop *loop, int insn_count)
|
||||
}
|
||||
else if (! add_adjust)
|
||||
{
|
||||
enum machine_mode mode = GET_MODE (reg);
|
||||
rtx sub_insn = gen_sub3_insn (reg, comparison_value,
|
||||
initial_value);
|
||||
|
||||
@ -8525,7 +8526,7 @@ check_dbra_loop (struct loop *loop, int insn_count)
|
||||
/* Add new compare/branch insn at end of loop. */
|
||||
start_sequence ();
|
||||
emit_cmp_and_jump_insns (reg, const0_rtx, cmp_code, NULL_RTX,
|
||||
GET_MODE (reg), 0,
|
||||
mode, 0,
|
||||
XEXP (jump_label, 0));
|
||||
tem = get_insns ();
|
||||
end_sequence ();
|
||||
|
@ -1,3 +1,7 @@
|
||||
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>
|
||||
|
||||
PR c++/13635
|
||||
@ -20794,3 +20798,4 @@ rlsruhe.de>
|
||||
|
||||
* New file.
|
||||
|
||||
|
||||
|
7
gcc/testsuite/gcc.c-torture/compile/20040214-1.c
Normal file
7
gcc/testsuite/gcc.c-torture/compile/20040214-1.c
Normal file
@ -0,0 +1,7 @@
|
||||
void foo(void)
|
||||
{
|
||||
char c;
|
||||
|
||||
for (c = -75; c <= 75; c++)
|
||||
;
|
||||
}
|
Loading…
Reference in New Issue
Block a user