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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@106842
138bc75d-0d04-0410-961f-
82ee72b054a4
+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
+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
/* { 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" } } */
void xxx(void)
{
- int iter;
+ long iter;
for (iter = 0; iter < 100; iter++)
arr_base[iter] = foo (iter);
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);
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 ();