Commit 06acf7d0 by Richard Sandiford Committed by Richard Sandiford

dse.c (find_shift_sequence): Always choose an integer mode for new_mode.

gcc/
	* dse.c (find_shift_sequence): Always choose an integer mode for
	new_mode.
	(replace_read): Require both the read and store mode to be
	integer ones.  Remove a then-redundant FLOAT_P check.

gcc/testsuite/
	* gcc.target/mips/dse-1.c: Disable.

From-SVN: r130039
parent ea9d4a19
2007-11-09 Richard Sandiford <rsandifo@nildram.co.uk>
* dse.c (find_shift_sequence): Always choose an integer mode for
new_mode.
(replace_read): Require both the read and store mode to be
integer ones. Remove a then-redundant FLOAT_P check.
2007-11-08 Richard Guenther <rguenther@suse.de> 2007-11-08 Richard Guenther <rguenther@suse.de>
* tree-dfa.c (remove_referenced_var): If removing a * tree-dfa.c (remove_referenced_var): If removing a
...@@ -1447,7 +1447,7 @@ find_shift_sequence (rtx read_reg, ...@@ -1447,7 +1447,7 @@ find_shift_sequence (rtx read_reg,
continue; continue;
new_mode = smallest_mode_for_size (access_size * BITS_PER_UNIT, new_mode = smallest_mode_for_size (access_size * BITS_PER_UNIT,
GET_MODE_CLASS (read_mode)); MODE_INT);
new_reg = gen_reg_rtx (new_mode); new_reg = gen_reg_rtx (new_mode);
start_sequence (); start_sequence ();
...@@ -1473,9 +1473,8 @@ find_shift_sequence (rtx read_reg, ...@@ -1473,9 +1473,8 @@ find_shift_sequence (rtx read_reg,
of the arguments and could be precomputed. It may of the arguments and could be precomputed. It may
not be worth doing so. We could precompute if not be worth doing so. We could precompute if
worthwhile or at least cache the results. The result worthwhile or at least cache the results. The result
technically depends on SHIFT, ACCESS_SIZE, and technically depends on both SHIFT and ACCESS_SIZE,
GET_MODE_CLASS (READ_MODE). But in practice the but in practice the answer will depend only on ACCESS_SIZE. */
answer will depend only on ACCESS_SIZE. */
if (cost > COSTS_N_INSNS (1)) if (cost > COSTS_N_INSNS (1))
continue; continue;
...@@ -1557,7 +1556,8 @@ replace_read (store_info_t store_info, insn_info_t store_insn, ...@@ -1557,7 +1556,8 @@ replace_read (store_info_t store_info, insn_info_t store_insn,
if (!dbg_cnt (dse)) if (!dbg_cnt (dse))
return false; return false;
if (GET_MODE_CLASS (read_mode) != GET_MODE_CLASS (store_mode)) if (GET_MODE_CLASS (read_mode) != MODE_INT
|| GET_MODE_CLASS (store_mode) != MODE_INT)
return false; return false;
/* To get here the read is within the boundaries of the write so /* To get here the read is within the boundaries of the write so
...@@ -1580,7 +1580,7 @@ replace_read (store_info_t store_info, insn_info_t store_insn, ...@@ -1580,7 +1580,7 @@ replace_read (store_info_t store_info, insn_info_t store_insn,
call to get rid of the read. */ call to get rid of the read. */
if (shift) if (shift)
{ {
if (access_size > UNITS_PER_WORD || FLOAT_MODE_P (store_mode)) if (access_size > UNITS_PER_WORD)
return false; return false;
shift_seq = find_shift_sequence (read_reg, access_size, store_info, shift_seq = find_shift_sequence (read_reg, access_size, store_info,
......
2007-11-09 Richard Sandiford <rsandifo@nildram.co.uk>
* gcc.target/mips/dse-1.c: Disable.
2007-11-08 Tom Tromey <tromey@redhat.com> 2007-11-08 Tom Tromey <tromey@redhat.com>
* gcc.dg/empty-source-3.c: Update warning location. * gcc.dg/empty-source-3.c: Update warning location.
/* ??? Further to the subreg comment below, we can't rely on any of the
tests passing unless we handle subregs, and the patch to do so has
been rejected for the time being. */
/* { dg-do compile { target { ! *-*-* } } } */
/* { dg-mips-options "-mgp64 -O" } */ /* { dg-mips-options "-mgp64 -O" } */
#define TEST(ID, TYPE1, TYPE2) \ #define TEST(ID, TYPE1, TYPE2) \
......
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