Commit 7f7b1718 by Jan Hubicka Committed by Jan Hubicka

cfgloop.h (DLTHE_RECORD_COPY_NUMBER): New flag.

	* cfgloop.h (DLTHE_RECORD_COPY_NUMBER): New flag.
	* cfgloopmanip.c (duplicate_loop_to_header_edge): Set aux flags only
	when asked for.
	* loop-unroll.c (peel_loop_completely, unroll_loop_constant_iterations,
	unroll_loop_runtime_iterations, peel_loop_simple, unroll_loop_stupid):
	Update call of duplicate_loop_to_header_edge.
	(apply_opt_in_copies): Clear out aux pointers.

From-SVN: r101193
parent cac24f06
2005-06-20 Jan Hubicka <jh@suse.cz>
* cfgloop.h (DLTHE_RECORD_COPY_NUMBER): New flag.
* cfgloopmanip.c (duplicate_loop_to_header_edge): Set aux flags only
when asked for.
* loop-unroll.c (peel_loop_completely, unroll_loop_constant_iterations,
unroll_loop_runtime_iterations, peel_loop_simple, unroll_loop_stupid):
Update call of duplicate_loop_to_header_edge.
(apply_opt_in_copies): Clear out aux pointers.
2005-06-19 Joseph S. Myers <joseph@codesourcery.com>
* config/i386/i386.c (TARGET_MANGLE_FUNDAMENTAL_TYPE): Define.
......
......@@ -296,6 +296,8 @@ extern bool can_duplicate_loop_p (struct loop *loop);
#define DLTHE_FLAG_UPDATE_FREQ 1 /* Update frequencies in
duplicate_loop_to_header_edge. */
#define DLTHE_RECORD_COPY_NUMBER 2 /* Record copy number in the aux
field of newly create BB. */
extern struct loop * duplicate_loop (struct loops *, struct loop *,
struct loop *);
......
......@@ -982,11 +982,12 @@ duplicate_loop_to_header_edge (struct loop *loop, edge e, struct loops *loops,
/* Copy bbs. */
copy_bbs (bbs, n, new_bbs, spec_edges, 2, new_spec_edges, loop);
for (i = 0; i < n; i++)
{
gcc_assert (!new_bbs[i]->aux);
new_bbs[i]->aux = (void *)(size_t)(j + 1);
}
if (flags & DLTHE_RECORD_COPY_NUMBER)
for (i = 0; i < n; i++)
{
gcc_assert (!new_bbs[i]->aux);
new_bbs[i]->aux = (void *)(size_t)(j + 1);
}
/* Note whether the blocks and edges belong to an irreducible loop. */
if (add_irreducible_flag)
......
......@@ -519,7 +519,9 @@ peel_loop_completely (struct loops *loops, struct loop *loop)
loops, npeel,
wont_exit, desc->out_edge,
remove_edges, &n_remove_edges,
DLTHE_FLAG_UPDATE_FREQ);
DLTHE_FLAG_UPDATE_FREQ
| (opt_info
? DLTHE_RECORD_COPY_NUMBER : 0));
gcc_assert (ok);
free (wont_exit);
......@@ -717,7 +719,10 @@ unroll_loop_constant_iterations (struct loops *loops, struct loop *loop)
loops, exit_mod,
wont_exit, desc->out_edge,
remove_edges, &n_remove_edges,
DLTHE_FLAG_UPDATE_FREQ);
DLTHE_FLAG_UPDATE_FREQ
| (opt_info && exit_mod > 1
? DLTHE_RECORD_COPY_NUMBER
: 0));
gcc_assert (ok);
if (opt_info && exit_mod > 1)
......@@ -753,7 +758,10 @@ unroll_loop_constant_iterations (struct loops *loops, struct loop *loop)
loops, exit_mod + 1,
wont_exit, desc->out_edge,
remove_edges, &n_remove_edges,
DLTHE_FLAG_UPDATE_FREQ);
DLTHE_FLAG_UPDATE_FREQ
| (opt_info && exit_mod > 0
? DLTHE_RECORD_COPY_NUMBER
: 0));
gcc_assert (ok);
if (opt_info && exit_mod > 0)
......@@ -777,7 +785,10 @@ unroll_loop_constant_iterations (struct loops *loops, struct loop *loop)
loops, max_unroll,
wont_exit, desc->out_edge,
remove_edges, &n_remove_edges,
DLTHE_FLAG_UPDATE_FREQ);
DLTHE_FLAG_UPDATE_FREQ
| (opt_info
? DLTHE_RECORD_COPY_NUMBER
: 0));
gcc_assert (ok);
if (opt_info)
......@@ -1097,7 +1108,10 @@ unroll_loop_runtime_iterations (struct loops *loops, struct loop *loop)
loops, max_unroll,
wont_exit, desc->out_edge,
remove_edges, &n_remove_edges,
DLTHE_FLAG_UPDATE_FREQ);
DLTHE_FLAG_UPDATE_FREQ
| (opt_info
? DLTHE_RECORD_COPY_NUMBER
: 0));
gcc_assert (ok);
if (opt_info)
......@@ -1274,7 +1288,10 @@ peel_loop_simple (struct loops *loops, struct loop *loop)
ok = duplicate_loop_to_header_edge (loop, loop_preheader_edge (loop),
loops, npeel, wont_exit,
NULL, NULL,
NULL, DLTHE_FLAG_UPDATE_FREQ);
NULL, DLTHE_FLAG_UPDATE_FREQ
| (opt_info
? DLTHE_RECORD_COPY_NUMBER
: 0));
gcc_assert (ok);
free (wont_exit);
......@@ -1422,7 +1439,10 @@ unroll_loop_stupid (struct loops *loops, struct loop *loop)
ok = duplicate_loop_to_header_edge (loop, loop_latch_edge (loop),
loops, nunroll, wont_exit,
NULL, NULL, NULL,
DLTHE_FLAG_UPDATE_FREQ);
DLTHE_FLAG_UPDATE_FREQ
| (opt_info
? DLTHE_RECORD_COPY_NUMBER
: 0));
gcc_assert (ok);
if (opt_info)
......@@ -2064,6 +2084,7 @@ apply_opt_in_copies (struct opt_info *opt_info,
duplicate_loop_to_header_edge. */
delta = determine_split_iv_delta ((size_t)bb->aux, n_copies,
unrolling);
bb->aux = 0;
orig_insn = BB_HEAD (orig_bb);
for (insn = BB_HEAD (bb); insn != NEXT_INSN (BB_END (bb)); insn = next)
{
......
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