tree-ssa-loop-ivopts.c (get_address_cost): Prevent splitting addressing modes during calculation of costs.

* tree-ssa-loop-ivopts.c (get_address_cost): Prevent splitting
	addressing modes during calculation of costs.

	* testsuite/gcc.dg/tree-ssa/loop-2.c: Fix outcome.
	* testsuite/gcc.dg/tree-ssa/loop-3.c: Change type of loop control
	variable.

From-SVN: r106842
This commit is contained in:
Zdenek Dvorak 2005-11-13 00:27:13 +01:00 committed by Zdenek Dvorak
parent 4cfe2e7514
commit 85a43114c9
5 changed files with 21 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2005-11-13 Zdenek Dvorak <dvorakz@suse.cz>
* tree-ssa-loop-ivopts.c (get_address_cost): Prevent splitting
addressing modes during calculation of costs.
2005-11-12 Eric Botcazou <ebotcazou@adacore.com>
* function.c (assign_stack_local_1): Restrict sanity check

View File

@ -1,3 +1,9 @@
2005-11-13 Zdenek Dvorak <dvorakz@suse.cz>
* gcc.dg/tree-ssa/loop-2.c: Fix outcome.
* gcc.dg/tree-ssa/loop-3.c: Change type of loop control
variable.
2005-11-12 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
testsuite/24614

View File

@ -34,9 +34,10 @@ void xxx(void)
/* { dg-final { scan-tree-dump-times " \\+ 17" 1 "vars" } } */
/* The induction variable comparison with 99 should be eliminated
and replaced by comparison of the variable for 17 * iter with 1700. */
and replaced by comparison of one of the newly created ivs. */
/* { dg-final { scan-tree-dump-times "1700" 1 "vars" } } */
/* { dg-final { scan-tree-dump-times "iter" 0 "vars" } } */
/* { dg-final { scan-tree-dump-times "99" 0 "vars" } } */
/* { dg-final { scan-tree-dump-times "100" 0 "vars" } } */
/* { dg-final { cleanup-tree-dump "vars" } } */

View File

@ -11,7 +11,7 @@ int foo(int);
void xxx(void)
{
int iter;
long iter;
for (iter = 0; iter < 100; iter++)
arr_base[iter] = foo (iter);

View File

@ -3384,6 +3384,7 @@ get_address_cost (bool symbol_present, bool var_present,
acost = costs[symbol_present][var_present][offset_p][ratio_p];
if (!acost)
{
int old_cse_not_expected;
acost = 0;
addr = gen_raw_REG (Pmode, LAST_VIRTUAL_REGISTER + 1);
@ -3412,7 +3413,12 @@ get_address_cost (bool symbol_present, bool var_present,
addr = gen_rtx_fmt_ee (PLUS, Pmode, addr, base);
start_sequence ();
/* To avoid splitting addressing modes, pretend that no cse will
follow. */
old_cse_not_expected = cse_not_expected;
cse_not_expected = true;
addr = memory_address (Pmode, addr);
cse_not_expected = old_cse_not_expected;
seq = get_insns ();
end_sequence ();