Commit b3fade83 by Brian Booth Committed by Brian Booth

tree-optimize.c (register_one_dump_file): Update condition that uses static_pass_number.


	* tree-optimize.c (register_one_dump_file): Update condition that uses
	static_pass_number.
	(dup_pass_1): Replace with...
	(next_pass_1): This.
	(NEXT_PASS): Call next_pass_1.
	(DUP_PASS): Remove.
	(init_tree_optimization_passes): Remove uses of DUP_PASS.
	(execute_one_pass): Update condition that uses
	static_pass_number.
	* tree-pass.h (tree_opt_pass): Declare static_pass_number as a signed
	integer.

From-SVN: r85226
parent 62d59189
2004-07-27 Brian Booth <bbooth@redhat.com>
* tree-optimize.c (register_one_dump_file): Update condition that uses
static_pass_number.
(dup_pass_1): Replace with...
(next_pass_1): This.
(NEXT_PASS): Call next_pass_1.
(DUP_PASS): Remove.
(init_tree_optimization_passes): Remove uses of DUP_PASS.
(execute_one_pass): Update condition that uses
static_pass_number.
* tree-pass.h (tree_opt_pass): Declare static_pass_number as a signed
integer.
2004-07-27 Nick Clifton <nickc@redhat.com> 2004-07-27 Nick Clifton <nickc@redhat.com>
* config/m32r/m32r.c: Include integrate.h in order to get the * config/m32r/m32r.c: Include integrate.h in order to get the
......
...@@ -213,9 +213,9 @@ register_one_dump_file (struct tree_opt_pass *pass) ...@@ -213,9 +213,9 @@ register_one_dump_file (struct tree_opt_pass *pass)
if (!pass->name) if (!pass->name)
return; return;
/* See below in dup_pass_1. */ /* See below in next_pass_1. */
num[0] = '\0'; num[0] = '\0';
if (pass->static_pass_number) if (pass->static_pass_number != -1)
sprintf (num, "%d", ((int) pass->static_pass_number < 0 sprintf (num, "%d", ((int) pass->static_pass_number < 0
? 1 : pass->static_pass_number)); ? 1 : pass->static_pass_number));
...@@ -252,34 +252,42 @@ register_dump_files (struct tree_opt_pass *pass, int properties) ...@@ -252,34 +252,42 @@ register_dump_files (struct tree_opt_pass *pass, int properties)
return properties; return properties;
} }
/* Duplicate a pass that's to be run more than once. */ /* Add a pass to the pass list. Duplicate the pass if it's already
in the list. */
static struct tree_opt_pass * static struct tree_opt_pass **
dup_pass_1 (struct tree_opt_pass *pass) next_pass_1 (struct tree_opt_pass **list, struct tree_opt_pass *pass)
{ {
struct tree_opt_pass *new;
new = xmalloc (sizeof (*new));
memcpy (new, pass, sizeof (*new));
/* Indicate to register_dump_files that this pass has duplicates, /* A non-zero static_pass_number indicates that the
and so it should rename the dump file. The first instance will pass is already in the list. */
be < 0, and be number of duplicates = -static_pass_number + 1. if (pass->static_pass_number)
Subsequent instances will be > 0 and just the duplicate number. */
if (pass->name)
{ {
int n, p = pass->static_pass_number; struct tree_opt_pass *new;
if (p) new = xmalloc (sizeof (*new));
n = -(--p) + 1; memcpy (new, pass, sizeof (*new));
else
n = 2, p = -1; /* Indicate to register_dump_files that this pass has duplicates,
and so it should rename the dump file. The first instance will
pass->static_pass_number = p; be -1, and be number of duplicates = -static_pass_number - 1.
new->static_pass_number = n; Subsequent instances will be > 0 and just the duplicate number. */
if (pass->name)
{
pass->static_pass_number -= 1;
new->static_pass_number = -pass->static_pass_number;
}
*list = new;
} }
else
return new; {
pass->static_pass_number = -1;
*list = pass;
}
return &(*list)->next;
} }
/* Construct the pass tree. */ /* Construct the pass tree. */
...@@ -289,8 +297,7 @@ init_tree_optimization_passes (void) ...@@ -289,8 +297,7 @@ init_tree_optimization_passes (void)
{ {
struct tree_opt_pass **p; struct tree_opt_pass **p;
#define NEXT_PASS(PASS) (*p = &PASS, p = &(*p)->next) #define NEXT_PASS(PASS) (p = next_pass_1 (p, &PASS))
#define DUP_PASS(PASS) (*dup_pass_1 (&PASS))
p = &all_passes; p = &all_passes;
NEXT_PASS (pass_gimple); NEXT_PASS (pass_gimple);
...@@ -319,7 +326,7 @@ init_tree_optimization_passes (void) ...@@ -319,7 +326,7 @@ init_tree_optimization_passes (void)
NEXT_PASS (pass_dce); NEXT_PASS (pass_dce);
NEXT_PASS (pass_dominator); NEXT_PASS (pass_dominator);
NEXT_PASS (pass_redundant_phi); NEXT_PASS (pass_redundant_phi);
NEXT_PASS (DUP_PASS (pass_dce)); NEXT_PASS (pass_dce);
NEXT_PASS (pass_forwprop); NEXT_PASS (pass_forwprop);
NEXT_PASS (pass_phiopt); NEXT_PASS (pass_phiopt);
NEXT_PASS (pass_may_alias); NEXT_PASS (pass_may_alias);
...@@ -327,26 +334,26 @@ init_tree_optimization_passes (void) ...@@ -327,26 +334,26 @@ init_tree_optimization_passes (void)
NEXT_PASS (pass_ch); NEXT_PASS (pass_ch);
NEXT_PASS (pass_profile); NEXT_PASS (pass_profile);
NEXT_PASS (pass_sra); NEXT_PASS (pass_sra);
NEXT_PASS (DUP_PASS (pass_rename_ssa_copies)); NEXT_PASS (pass_rename_ssa_copies);
NEXT_PASS (DUP_PASS (pass_dominator)); NEXT_PASS (pass_dominator);
NEXT_PASS (DUP_PASS (pass_redundant_phi)); NEXT_PASS (pass_redundant_phi);
NEXT_PASS (DUP_PASS (pass_dce)); NEXT_PASS (pass_dce);
NEXT_PASS (pass_dse); NEXT_PASS (pass_dse);
NEXT_PASS (DUP_PASS (pass_may_alias)); NEXT_PASS (pass_may_alias);
NEXT_PASS (DUP_PASS (pass_forwprop)); NEXT_PASS (pass_forwprop);
NEXT_PASS (DUP_PASS (pass_phiopt)); NEXT_PASS (pass_phiopt);
NEXT_PASS (pass_ccp); NEXT_PASS (pass_ccp);
NEXT_PASS (DUP_PASS (pass_redundant_phi)); NEXT_PASS (pass_redundant_phi);
NEXT_PASS (pass_fold_builtins); NEXT_PASS (pass_fold_builtins);
NEXT_PASS (pass_split_crit_edges); NEXT_PASS (pass_split_crit_edges);
NEXT_PASS (pass_pre); NEXT_PASS (pass_pre);
NEXT_PASS (pass_loop); NEXT_PASS (pass_loop);
NEXT_PASS (DUP_PASS (pass_dominator)); NEXT_PASS (pass_dominator);
NEXT_PASS (DUP_PASS (pass_redundant_phi)); NEXT_PASS (pass_redundant_phi);
NEXT_PASS (pass_cd_dce); NEXT_PASS (pass_cd_dce);
NEXT_PASS (DUP_PASS (pass_dse)); NEXT_PASS (pass_dse);
NEXT_PASS (DUP_PASS (pass_forwprop)); NEXT_PASS (pass_forwprop);
NEXT_PASS (DUP_PASS (pass_phiopt)); NEXT_PASS (pass_phiopt);
NEXT_PASS (pass_tail_calls); NEXT_PASS (pass_tail_calls);
NEXT_PASS (pass_late_warn_uninitialized); NEXT_PASS (pass_late_warn_uninitialized);
NEXT_PASS (pass_del_pta); NEXT_PASS (pass_del_pta);
...@@ -363,7 +370,6 @@ init_tree_optimization_passes (void) ...@@ -363,7 +370,6 @@ init_tree_optimization_passes (void)
*p = NULL; *p = NULL;
#undef NEXT_PASS #undef NEXT_PASS
#undef DUP_PASS
/* Register the passes with the tree dump code. */ /* Register the passes with the tree dump code. */
register_dump_files (all_passes, 0); register_dump_files (all_passes, 0);
...@@ -424,7 +430,7 @@ execute_one_pass (struct tree_opt_pass *pass) ...@@ -424,7 +430,7 @@ execute_one_pass (struct tree_opt_pass *pass)
execute_todo (todo); execute_todo (todo);
/* If a dump file name is present, open it if enabled. */ /* If a dump file name is present, open it if enabled. */
if (pass->static_pass_number) if (pass->static_pass_number != -1)
{ {
dump_file = dump_begin (pass->static_pass_number, &dump_flags); dump_file = dump_begin (pass->static_pass_number, &dump_flags);
if (dump_file) if (dump_file)
......
...@@ -50,7 +50,7 @@ struct tree_opt_pass ...@@ -50,7 +50,7 @@ struct tree_opt_pass
struct tree_opt_pass *next; struct tree_opt_pass *next;
/* Static pass number, used as a fragment of the dump file name. */ /* Static pass number, used as a fragment of the dump file name. */
unsigned int static_pass_number; int static_pass_number;
/* The timevar id associated with this pass. */ /* The timevar id associated with this pass. */
/* ??? Ideally would be dynamically assigned. */ /* ??? Ideally would be dynamically assigned. */
......
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