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:
parent
4cfe2e7514
commit
85a43114c9
5 changed files with 21 additions and 3 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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" } } */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 ();
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue