From: Diego Novillo <dnovillo@redhat.com>
To: gcc-patches@gcc.gnu.org
Subject: [tree-ssa] Changes to -fdump-tree-all-ssa and GC fixes [patch]
Date: Tue, 05 Nov 2002 15:58:00 -0000 [thread overview]
Message-ID: <20021105235757.GA16970@tornado.toronto.redhat.com> (raw)
- Renames -fdump-tree-all-ssa to -fdump-tree-all and parses the
switch in dump_switch_p. This allows the user to set global
flags for all the tree dumping options.
- Adds a new tree dump option -block, to display basic block
information on block boundaries.
- Makes the tree CFG builder use the memory allocation routines
used in the RTL flowgraph. Since basic_block is still not
marked for garbage collection, we can't use ggc_alloc to
allocate basic blocks. Long term we should mark basic_block
for GC.
Bootstrapped and tested on x86.
Diego.
* tree-cfg.c (create_block_annotations): New local function.
(create_bb_ann): Remove. Update all users.
(parent_array): New local variable.
(build_tree_cfg): Initialize it.
Call create_block_annotations.
(create_bb): Call alloc_block instead of ggc_alloc to allocate
memory for basic blocks.
Don't call set_parent_block.
Grow array parent_array.
(dump_tree_cfg): Change meaning of second argument. Make it accept
any of the TDF_* flags defined in tree.h.
(delete_tree_cfg): Call free_aux_for_blocks.
Free array parent_array.
* tree-flow-inline.h (get_filename): New function.
(is_exec_stmt): return false if T is error_mark_node.
* tree-flow.h (struct var_ref_d): Mark alias_imm_rdefs field for
garbage collection.
(get_filename): Declare.
(struct bb_ann_d): Rename from bb_ann_def.
Remove garbage collection markers.
(referenced_vars): Mark for garbage collection.
(global_var): Likewise.
(create_bb_ann): Remove.
* tree-optimize.c (optimize_function_tree): Remove CFG and SSA
after debugging dumps.
* diagnostic.h (print_generic_stmt): Rename from print_generic_tree.
Update all users.
(print_generic_expr): Rename from print_generic_node. Update all
users.
(PPF_BRIEF): Remove. Update all users.
(PPF_BLOCK): Remove. Update all users.
(PPF_LINENO): Remove. Update all users.
(PPF_IS_STMT): Remove. Update all users.
* flags.h (flag_dump_tree_all_ssa): Remove. Update all users.
* toplev.c (f_options): Remove entry for -fdump-tree-all-ssa.
Update all users.
* tree-dump.c (dump_enable_all): Rename from dump_enable_all_ssa.
Update all users.
(dump_files): Add entry for -fdump-tree-all.
(dump_option_value_info): Remove entries for TDF_REFS and
TDF_RDEFS.
Add entry for TDF_BLOCK.
(dump_switch_p): If -fdump-tree-all was given, call dump_enable_all.
* tree-pretty-print.c (PPF_BRIEF): Remove. Update all users.
(PPF_BLOCK): Remove. Update all users.
(PPF_LINENO): Remove. Update all users.
(PPF_IS_STMT): Remove. Update all users.
(dumping_stmts): New local variable.
(print_generic_stmt): Rename from print_generic_tree. Update all
users.
Set dumping_stmts to true.
(print_generic_expr): Rename from print_generic_node. Update all
users.
Set dumping_stmts to false.
(maybe_init_pretty_print): Set last_bb to -1.
(dump_block_info): If available, dump file and line number
information for the first statement in the basic block.
* tree-ssa.c (build_tree_ssa): Dump referenced variables and
reaching definition information if -details is given.
* tree.h (enum tree_dump_index): Rename TDI_all to TDI_tu. Update
all users.
Add new index TDI_all.
(TDF_DETAILS): Change value.
(TDF_REFS): Remove. Update all users.
(TDF_RDEFS): Remove. Update all users.
(TDF_BLOCK): Define.
* doc/invoke.texi: Update documentation for -fdump-tree-... flags.
Index: c-call-graph.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/c-call-graph.c,v
retrieving revision 1.1.4.6
diff -d -u -p -r1.1.4.6 c-call-graph.c
--- c-call-graph.c 18 Oct 2002 03:36:38 -0000 1.1.4.6
+++ c-call-graph.c 5 Nov 2002 22:16:54 -0000
@@ -118,7 +118,7 @@ construct_call_graph (buffer, t, spc)
/* Statements based statistics. */
INDENT (spc+1);
- output_printf (buffer, "<stats calls=\"%d\" decisions=\"%d\" stmts=\"%d\" Gilb=\"%f\"",
+ output_printf (buffer, "<stats calls=\"%d\" decisions=\"%d\" stmts=\"%d\" Gilb=\"%d\"",
nb_calls, decision_points, nb_statements,
((nb_statements == 0) ? 0 :
((float)decision_points / (float)nb_statements)));
Index: c-decl.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/c-decl.c,v
retrieving revision 1.334.2.21
diff -d -u -p -r1.334.2.21 c-decl.c
--- c-decl.c 26 Oct 2002 20:37:06 -0000 1.334.2.21
+++ c-decl.c 5 Nov 2002 22:16:55 -0000
@@ -6531,7 +6531,7 @@ c_expand_body (fndecl, nested_p, can_def
dump_node (DECL_SAVED_TREE (fndecl), TDF_SLIM | dump_flags,
dump_file);
else
- print_generic_tree (dump_file, DECL_SAVED_TREE (fndecl), 0);
+ print_generic_stmt (dump_file, DECL_SAVED_TREE (fndecl), 0);
fprintf (dump_file, "\n");
dump_end (TDI_simple, dump_file);
Index: c-objc-common.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/c-objc-common.c,v
retrieving revision 1.14.2.7
diff -d -u -p -r1.14.2.7 c-objc-common.c
--- c-objc-common.c 1 Nov 2002 18:40:03 -0000 1.14.2.7
+++ c-objc-common.c 5 Nov 2002 22:16:55 -0000
@@ -392,12 +392,12 @@ c_objc_common_finish_file ()
{
int flags;
- FILE *stream = dump_begin (TDI_all, &flags);
+ FILE *stream = dump_begin (TDI_tu, &flags);
if (stream)
{
dump_node (getdecls (), flags & ~TDF_SLIM, stream);
- dump_end (TDI_all, stream);
+ dump_end (TDI_tu, stream);
}
}
}
Index: diagnostic.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/diagnostic.h,v
retrieving revision 1.44.2.12
diff -d -u -p -r1.44.2.12 diagnostic.h
--- diagnostic.h 26 Oct 2002 20:37:06 -0000 1.44.2.12
+++ diagnostic.h 5 Nov 2002 22:16:55 -0000
@@ -333,13 +333,7 @@ extern void debug_output_buffer PARAMS
/* In tree-pretty-print.c */
extern int dump_generic_node PARAMS ((output_buffer *, tree, int,
int));
-extern void print_generic_tree PARAMS ((FILE*, tree, int));
-extern void print_generic_node PARAMS ((FILE*, tree, int));
-
-/* Modifier flags for print_generic_* functions. */
-extern const int PPF_BRIEF; /* Don't print control stmt bodies. */
-extern const int PPF_BLOCK; /* Show basic block delimiters. */
-extern const int PPF_LINENO; /* Show line number information. */
-extern const int PPF_IS_STMT; /* The tree is a statement. */
+extern void print_generic_stmt PARAMS ((FILE *, tree, int));
+extern void print_generic_expr PARAMS ((FILE *, tree, int));
#endif /* ! GCC_DIAGNOSTIC_H */
Index: flags.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/flags.h,v
retrieving revision 1.86.2.13
diff -d -u -p -r1.86.2.13 flags.h
--- flags.h 28 Oct 2002 16:29:17 -0000 1.86.2.13
+++ flags.h 5 Nov 2002 22:16:55 -0000
@@ -668,9 +668,6 @@ extern int flag_tree_ccp;
/* Enable SSA-DCE on trees. */
extern int flag_tree_dce;
-/* Enable all SSA-related tree dumps. */
-extern int flag_dump_tree_all_ssa;
-
/* Nonzero means put zero initialized data in the bss section. */
extern int flag_zero_initialized_in_bss;
Index: gimplify.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/gimplify.c,v
retrieving revision 1.1.2.5
diff -d -u -p -r1.1.2.5 gimplify.c
--- gimplify.c 26 Oct 2002 20:37:06 -0000 1.1.2.5
+++ gimplify.c 5 Nov 2002 22:16:55 -0000
@@ -502,7 +502,7 @@ simplify_expr (expr_p, pre_p, post_p, si
else
{
fprintf (stderr, "simplification failed:\n");
- print_generic_tree (stderr, *expr_p, PPF_BRIEF);
+ print_generic_expr (stderr, *expr_p, 0);
debug_tree (*expr_p);
abort ();
}
Index: toplev.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/toplev.c,v
retrieving revision 1.654.2.29
diff -d -u -p -r1.654.2.29 toplev.c
--- toplev.c 1 Nov 2002 18:40:16 -0000 1.654.2.29
+++ toplev.c 5 Nov 2002 22:16:56 -0000
@@ -898,9 +898,6 @@ int flag_tree_ccp = 0;
/* Enable SSA-DCE on trees. */
int flag_tree_dce = 0;
-/* Enable all SSA-related dumps. */
-int flag_dump_tree_all_ssa = 0;
-
/* Nonzero if we perform superblock formation. */
int flag_tracer = 0;
@@ -1219,8 +1216,6 @@ static const lang_independent_options f_
N_("Enable SSA-CCP optimization on trees") },
{ "tree-dce", &flag_tree_dce, 1,
N_("Enable SSA dead code elimination optimization on trees") },
- { "dump-tree-all-ssa", &flag_dump_tree_all_ssa, 1,
- N_("Enable all SSA-related tree dumps") },
};
/* Table of language-specific options. */
@@ -5202,9 +5197,6 @@ process_options ()
if (flag_disable_simple && flag_mudflap)
warning ("-fdisable-simple also disables mudflap instrumentation");
-
- if (flag_dump_tree_all_ssa)
- dump_enable_all_ssa ();
}
\f
/* Initialize the compiler back end. */
Index: tree-cfg.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-cfg.c,v
retrieving revision 1.1.4.24
diff -d -u -p -r1.1.4.24 tree-cfg.c
--- tree-cfg.c 2 Nov 2002 04:30:54 -0000 1.1.4.24
+++ tree-cfg.c 5 Nov 2002 22:16:56 -0000
@@ -43,6 +43,10 @@ static const int initial_cfg_capacity =
static FILE *dump_file;
static int dump_flags;
+/* Array with control flow parents. */
+varray_type parent_array;
+
+
/* Basic blocks and flowgraphs. */
static void make_blocks PARAMS ((tree *, basic_block));
static void make_bind_expr_blocks PARAMS ((tree *, basic_block));
@@ -68,6 +72,7 @@ static basic_block first_exec_block PARA
static tree *first_exec_stmt PARAMS ((tree *));
static bool block_invalidates_loop PARAMS ((basic_block, struct loop *));
static basic_block switch_parent PARAMS ((basic_block));
+static void create_block_annotations PARAMS ((void));
/* Flowgraph optimization and cleanup. */
static void remove_tree_bb PARAMS ((basic_block, int));
@@ -112,10 +117,7 @@ build_tree_cfg (fnbody)
n_basic_blocks = 0;
last_basic_block = 0;
VARRAY_BB_INIT (basic_block_info, initial_cfg_capacity, "basic_block_info");
-
- /* Create annotations for ENTRY_BLOCK_PTR and EXIT_BLOCK_PTR. */
- create_bb_ann (ENTRY_BLOCK_PTR);
- create_bb_ann (EXIT_BLOCK_PTR);
+ VARRAY_BB_INIT (parent_array, initial_cfg_capacity, "parent_array");
ENTRY_BLOCK_PTR->next_bb = EXIT_BLOCK_PTR;
EXIT_BLOCK_PTR->prev_bb = ENTRY_BLOCK_PTR;
@@ -138,6 +140,9 @@ build_tree_cfg (fnbody)
/* Adjust the size of the array. */
VARRAY_GROW (basic_block_info, n_basic_blocks);
+ /* Create block annotations. */
+ create_block_annotations ();
+
/* Create the edges of the flowgraph. */
make_edges ();
@@ -153,7 +158,7 @@ build_tree_cfg (fnbody)
dump_file = dump_begin (TDI_cfg, &dump_flags);
if (dump_file)
{
- dump_tree_cfg (dump_file, dump_flags & TDF_DETAILS);
+ dump_tree_cfg (dump_file, dump_flags);
dump_end (TDI_cfg, dump_file);
}
}
@@ -339,17 +344,13 @@ create_bb (head_p, parent_block)
basic_block bb;
/* Create and initialize a new basic block. */
- bb = (basic_block) ggc_alloc (sizeof (*bb));
+ bb = alloc_block ();
memset (bb, 0, sizeof (*bb));
bb->head_tree_p = bb->end_tree_p = head_p;
bb->index = last_basic_block;
bb->flags = BB_NEW;
- /* Create annotations for the block. */
- create_bb_ann (bb);
- set_parent_block (bb, parent_block);
-
/* Add the new block to the linked list of blocks. */
if (n_basic_blocks > 0)
link_block (bb, BASIC_BLOCK (n_basic_blocks - 1));
@@ -358,10 +359,14 @@ create_bb (head_p, parent_block)
/* Grow the basic block array if needed. */
if ((size_t) n_basic_blocks == VARRAY_SIZE (basic_block_info))
- VARRAY_GROW (basic_block_info, n_basic_blocks + (n_basic_blocks + 3) / 4);
+ {
+ VARRAY_GROW (basic_block_info, n_basic_blocks + (n_basic_blocks + 3) / 4);
+ VARRAY_GROW (parent_array, n_basic_blocks + (n_basic_blocks + 3) / 4);
+ }
/* Add the newly created block to the array. */
BASIC_BLOCK (n_basic_blocks) = bb;
+ VARRAY_BB (parent_array, n_basic_blocks) = parent_block;
n_basic_blocks++;
last_basic_block++;
@@ -400,18 +405,25 @@ set_bb_for_stmt (t, bb)
}
-/* Create a new annotation for basic block BB. */
+/* Create annotations for all the blocks in the flowgraph. */
-bb_ann
-create_bb_ann (bb)
- basic_block bb;
+static void
+create_block_annotations ()
{
- bb_ann ann = (bb_ann) ggc_alloc (sizeof (*ann));
- memset ((void *) ann, 0, sizeof (*ann));
- ann->refs = create_ref_list ();
- bb->aux = (void *) ann;
+ basic_block bb;
+ int i;
- return ann;
+ alloc_aux_for_blocks (sizeof (struct bb_ann_d));
+
+ /* Set parent block information for each block. */
+ i = 0;
+ FOR_EACH_BB (bb)
+ {
+ bb_ann ann = (bb_ann)bb->aux;
+ ann->refs = create_ref_list ();
+ ann->parent_block = VARRAY_BB (parent_array, i);
+ i++;
+ }
}
@@ -767,19 +779,16 @@ remove_tree_bb (bb, remove_stmts)
for (i = gsi_start_bb (bb); !gsi_after_end (i); gsi_step_bb (&i))
{
tree stmt = gsi_stmt (i);
- STRIP_WFL (stmt);
- STRIP_NOPS (stmt);
-
- if (remove_stmts)
- gsi_remove (i);
- else
- set_bb_for_stmt (stmt, NULL);
if (dump_file && is_exec_stmt (gsi_stmt (i)))
{
fprintf (dump_file, "WARNING: Removing executable statement: ");
- print_generic_node (dump_file, gsi_stmt (i), PPF_BRIEF);
+ print_generic_stmt (dump_file, gsi_stmt (i), dump_flags|TDF_SLIM);
}
+
+ set_bb_for_stmt (stmt, NULL);
+ if (remove_stmts)
+ gsi_remove (i);
}
/* Remove the edges into and out of this block. */
@@ -1305,7 +1314,7 @@ dump_tree_bb (outf, prefix, bb, indent)
if (head)
{
lineno = get_lineno (head);
- print_generic_node (outf, head, PPF_BRIEF|PPF_IS_STMT);
+ print_generic_stmt (outf, head, TDF_SLIM);
fprintf (outf, " (line: %d)\n", lineno);
}
else
@@ -1315,7 +1324,7 @@ dump_tree_bb (outf, prefix, bb, indent)
if (end)
{
lineno = get_lineno (end);
- print_generic_node (outf, end, PPF_BRIEF|PPF_IS_STMT);
+ print_generic_stmt (outf, end, TDF_SLIM);
fprintf (outf, " (line: %d)\n", lineno);
}
else
@@ -1353,29 +1362,29 @@ debug_tree_bb (bb)
}
-/* Dump the CFG on stderr. If DETAILS is nonzero, a textual representation
- of each basic block is also produced. */
+/* Dump the CFG on stderr. FLAGS are the same used by the tree dumping
+ functions (see TDF_* in tree.h). */
void
-debug_tree_cfg (details)
- int details;
+debug_tree_cfg (flags)
+ int flags;
{
- dump_tree_cfg (stderr, details);
+ dump_tree_cfg (stderr, flags);
}
-/* Dump the program showing basic block boundaries on the given FILE. If
- DETAILS is set, a textual representation of every basic block will also
- be dumped. */
+/* Dump the program showing basic block boundaries on the given FILE.
+ FLAGS are the same used by the tree dumping functions (see TDF_* in
+ tree.h). */
void
-dump_tree_cfg (file, details)
+dump_tree_cfg (file, flags)
FILE *file;
- int details;
+ int flags;
{
basic_block bb;
- if (details)
+ if (flags & TDF_DETAILS)
{
fputc ('\n', file);
fprintf (file, "Function %s\n\n", get_name (current_function_decl));
@@ -1390,7 +1399,8 @@ dump_tree_cfg (file, details)
}
fprintf (file, "%s()\n", get_name (current_function_decl));
- print_generic_tree (file, DECL_SAVED_TREE (current_function_decl), PPF_BLOCK);
+ print_generic_stmt (file, DECL_SAVED_TREE (current_function_decl),
+ flags|TDF_BLOCK);
fprintf (file, "\n");
}
@@ -1614,18 +1624,17 @@ stmt_starts_bb_p (t)
void
delete_tree_cfg ()
{
- basic_block bb;
-
if (basic_block_info == NULL)
return;
- FOR_EACH_BB (bb)
- bb->aux = NULL;
+ if (n_basic_blocks > 0)
+ {
+ free_aux_for_blocks ();
+ clear_edges ();
+ }
- ENTRY_BLOCK_PTR->aux = NULL;
- EXIT_BLOCK_PTR->aux = NULL;
- clear_edges ();
VARRAY_FREE (basic_block_info);
+ VARRAY_FREE (parent_array);
}
Index: tree-dfa.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-dfa.c,v
retrieving revision 1.1.4.39
diff -d -u -p -r1.1.4.39 tree-dfa.c
--- tree-dfa.c 2 Nov 2002 04:30:54 -0000 1.1.4.39
+++ tree-dfa.c 5 Nov 2002 22:16:56 -0000
@@ -1135,14 +1135,14 @@ dump_ref (outf, prefix, ref, indent, det
fprintf (outf, "%s%s%s(", s_indent, prefix, type);
if (ref_var (ref))
- print_generic_node (outf, ref_var (ref), 0);
+ print_generic_expr (outf, ref_var (ref), 0);
else
fprintf (outf, "nil");
fprintf (outf, "): line %d, bb %d, id %lu, ", lineno, bbix, ref_id (ref));
if (ref_expr (ref))
- print_generic_node (outf, ref_expr (ref), 0);
+ print_generic_expr (outf, ref_expr (ref), 0);
else
fprintf (outf, "<nil>");
@@ -1319,7 +1319,7 @@ dump_variable (file, var)
size_t num;
fprintf (file, "Variable: ");
- print_generic_node (file, var, 0);
+ print_generic_expr (file, var, 0);
num = num_may_alias (var);
if (num > 0)
@@ -1330,7 +1330,7 @@ dump_variable (file, var)
for (i = 0; i < num; i++)
{
- print_generic_node (file, may_alias (var, i), 0);
+ print_generic_expr (file, may_alias (var, i), 0);
if (i < num - 1)
fprintf (file, ", ");
}
Index: tree-dump.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-dump.c,v
retrieving revision 1.6.2.13
diff -d -u -p -r1.6.2.13 tree-dump.c
--- tree-dump.c 11 Oct 2002 23:55:00 -0000 1.6.2.13
+++ tree-dump.c 5 Nov 2002 22:16:56 -0000
@@ -34,6 +34,7 @@ static void dequeue_and_dump PARAMS ((du
static void dump_new_line PARAMS ((dump_info_p));
static void dump_maybe_newline PARAMS ((dump_info_p));
static void dump_string_field PARAMS ((dump_info_p, const char *, const char *));
+static void dump_enable_all PARAMS ((int));
/* Add T to the end of the queue of nodes to dump. Returns the index
assigned to T. */
@@ -669,6 +670,7 @@ static struct dump_file_info dump_files[
{".dce", "dump-tree-dce", 0, 0},
{".optimized", "dump-tree-optimized", 0, 0},
{".xml", "dump-call-graph", 0, 0},
+ {NULL, "dump-tree-all", 0, 0},
};
/* Define a name->number mapping for a dump flag value. */
@@ -686,9 +688,8 @@ static const struct dump_option_value_in
{"slim", TDF_SLIM},
{"raw", TDF_RAW},
{"details", TDF_DETAILS},
- {"refs", TDF_REFS},
- {"rdefs", TDF_RDEFS},
{"stats", TDF_STATS},
+ {"block", TDF_BLOCK},
{"all", ~0},
{NULL, 0}
};
@@ -755,20 +756,23 @@ dump_end (phase, stream)
fclose (stream);
}
-/* Enable all SSA-related tree dumps. */
+/* Enable all tree dumps. */
-void
-dump_enable_all_ssa ()
+static void
+dump_enable_all (flags)
+ int flags;
{
- dump_files[TDI_original].state = -1;
- dump_files[TDI_optimized].state = -1;
- dump_files[TDI_cfg].state = -1;
- dump_files[TDI_dot].state = -1;
- dump_files[TDI_pre].state = -1;
- dump_files[TDI_ccp].state = -1;
- dump_files[TDI_dce].state = -1;
- dump_files[TDI_ssa].state = -1;
- dump_files[TDI_simple].state = -1;
+ enum tree_dump_index i;
+
+ for (i = TDI_tu; i < TDI_end; i++)
+ {
+ dump_files[i].state = -1;
+ dump_files[i].flags = flags;
+ }
+
+ /* FIXME -fdump-call-graph is broken. */
+ dump_files[TDI_xml].state = 0;
+ dump_files[TDI_xml].flags = 0;
}
/* Parse ARG as a dump switch. Return nonzero if it is, and store the
@@ -793,6 +797,7 @@ dump_switch_p (arg)
best = ix;
bestlen = strlen (option_value);
}
+
if (best >= 0)
{
if ((option_value = skip_leading_substring (arg, dump_files[best].swtch)))
@@ -829,9 +834,14 @@ dump_switch_p (arg)
dump_files[best].state = -1;
dump_files[best].flags = flags;
+
+ /* Process -fdump-tree-all by enabling all the known dumps. */
+ if (dump_files[best].suffix == NULL)
+ dump_enable_all (dump_files[best].flags);
return 1;
}
}
+
return 0;
}
Index: tree-flow-inline.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-flow-inline.h,v
retrieving revision 1.1.2.9
diff -d -u -p -r1.1.2.9 tree-flow-inline.h
--- tree-flow-inline.h 26 Oct 2002 20:37:07 -0000 1.1.2.9
+++ tree-flow-inline.h 5 Nov 2002 22:16:56 -0000
@@ -284,6 +284,22 @@ get_lineno (expr)
return -1;
}
+static inline const char *
+get_filename (expr)
+ tree expr;
+{
+ if (expr == NULL_TREE)
+ return "???";
+
+ if (TREE_CODE (expr) == COMPOUND_EXPR)
+ expr = TREE_OPERAND (expr, 0);
+
+ if (TREE_CODE (expr) == EXPR_WITH_FILE_LOCATION)
+ return EXPR_WFL_FILENAME (expr);
+ else
+ return "???";
+}
+
static inline tree_ref
output_ref (t)
tree t;
@@ -649,7 +665,7 @@ static inline bool
is_exec_stmt (t)
tree t;
{
- return (t && t != empty_stmt_node);
+ return (t && t != empty_stmt_node && t != error_mark_node);
}
static inline bool
Index: tree-flow.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-flow.h,v
retrieving revision 1.1.4.31
diff -d -u -p -r1.1.4.31 tree-flow.h
--- tree-flow.h 2 Nov 2002 04:30:54 -0000 1.1.4.31
+++ tree-flow.h 5 Nov 2002 22:16:56 -0000
@@ -192,7 +192,7 @@ struct var_ref_d GTY(())
reference. This array is setup so that the Ith entry corresponds to
the Ith alias of the variable associated to this reference (i.e., this
is the Ith entry of the array MAY_ALIASES in struct tree_ann_d). */
- union tree_ref_d ** GTY((skip (""))) alias_imm_rdefs;
+ union tree_ref_d ** GTY((length ("VARRAY_SIZE (%h.common.var->common.ann->may_aliases)"))) alias_imm_rdefs;
};
/* Variable definitions. */
@@ -534,23 +534,24 @@ static inline void set_indirect_var PARA
static inline tree may_alias PARAMS ((tree, size_t));
static inline size_t num_may_alias PARAMS ((tree));
static inline int get_lineno PARAMS ((tree));
+static inline const char *get_filename PARAMS ((tree));
static inline bool is_exec_stmt PARAMS ((tree));
/*---------------------------------------------------------------------------
Block annotations stored in basic_block.aux
---------------------------------------------------------------------------*/
-struct bb_ann_def GTY(())
+struct bb_ann_d
{
/* Control flow parent. This is the entry block to the control structure
to which this block belongs to. */
- basic_block GTY((skip (""))) parent_block;
+ basic_block parent_block;
/* List of references made in this block. */
ref_list refs;
};
-typedef struct bb_ann_def *bb_ann;
+typedef struct bb_ann_d *bb_ann;
/* Accessors for basic block annotations. */
static inline bb_ann bb_annotation PARAMS ((basic_block));
@@ -615,13 +616,13 @@ extern void rli_delete PARAMS ((ref_li
extern int tree_warn_uninitialized;
/* Array of all variables referenced in the function. */
-extern varray_type referenced_vars;
+extern GTY(()) varray_type referenced_vars;
/* Next unique reference ID to be assigned by create_ref(). */
extern unsigned long next_tree_ref_id;
/* Artificial variable used to model the effects of function calls. */
-extern tree global_var;
+extern GTY(()) tree global_var;
/* Accessors for the referenced_vars array. */
extern unsigned long num_referenced_vars;
@@ -645,7 +646,6 @@ extern bool is_computed_goto PARAMS ((t
extern tree loop_body PARAMS ((tree));
extern void set_loop_body PARAMS ((tree, tree));
extern bool stmt_starts_bb_p PARAMS ((tree));
-extern bb_ann create_bb_ann PARAMS ((basic_block));
extern void dump_tree_bb PARAMS ((FILE *, const char *,
basic_block, int));
extern void debug_tree_bb PARAMS ((basic_block));
Index: tree-mudflap.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-mudflap.c,v
retrieving revision 1.1.2.20
diff -d -u -p -r1.1.2.20 tree-mudflap.c
--- tree-mudflap.c 26 Oct 2002 20:37:07 -0000 1.1.2.20
+++ tree-mudflap.c 5 Nov 2002 22:16:56 -0000
@@ -84,13 +84,13 @@ mudflap_c_function (t)
if (getenv ("UNPARSE")) /* XXX */
{
- print_generic_tree (stderr, DECL_RESULT (t), 0);
+ print_generic_expr (stderr, DECL_RESULT (t), 0);
fprintf (stderr, " ");
- print_generic_tree (stderr, DECL_NAME (t), 0);
+ print_generic_expr (stderr, DECL_NAME (t), 0);
fprintf (stderr, " (");
- print_generic_tree (stderr, DECL_ARGUMENTS (t), 0);
+ print_generic_expr (stderr, DECL_ARGUMENTS (t), 0);
fprintf (stderr, " )\n");
- print_generic_tree (stderr, DECL_SAVED_TREE (t), 0);
+ print_generic_stmt (stderr, DECL_SAVED_TREE (t), 0);
}
mf_init_extern_trees ();
@@ -101,7 +101,7 @@ mudflap_c_function (t)
if (getenv ("UNPARSE")) /* XXX */
{
fprintf (stderr, "/* after -fmudflap: */\n");
- print_generic_tree (stderr, DECL_SAVED_TREE (t), 0);
+ print_generic_stmt (stderr, DECL_SAVED_TREE (t), 0);
}
}
@@ -137,7 +137,7 @@ mudflap_enqueue_decl (obj, label)
/*
fprintf (stderr, "enqueue_decl obj=`");
- print_generic_tree (stderr, obj, 0);
+ print_generic_expr (stderr, obj, 0);
fprintf (stderr, "' label=`%s'\n", label);
*/
@@ -733,7 +733,7 @@ mx_xfn_indirect_ref (t, continue_p, data
#if 0
fprintf (stderr, "expr=%s: ", tree_code_name [TREE_CODE (*t)]);
- print_generic_tree (stderr, *t, 0);
+ print_generic_expr (stderr, *t, 0);
fprintf (stderr, "\n");
#endif
@@ -830,7 +830,7 @@ mx_xfn_indirect_ref (t, continue_p, data
#if 0
warning ("mudflap is omitting array bounds checks");
fprintf (stderr, " for expression: ");
- print_generic_tree (stderr, *t, 0);
+ print_generic_expr (stderr, *t, 0);
fprintf (stderr, " array-size=%u", int_size_in_bytes (TREE_TYPE (base_array)));
fprintf (stderr, " check-size=%u", TREE_INT_CST_LOW (check_size));
fprintf (stderr, "\n");
@@ -1164,9 +1164,9 @@ mx_xfn_find_addrof (t, continue_p, data)
if (gotit != NULL)
{
fprintf (stderr, "matched decl=");
- print_generic_tree (stderr, decl, 0);
+ print_generic_expr (stderr, decl, 0);
fprintf (stderr, " in tree=");
- print_generic_tree (stderr, gotit, 0);
+ print_generic_expr (stderr, gotit, 0);
fprintf (stderr, "\n");
}
#endif
Index: tree-optimize.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-optimize.c,v
retrieving revision 1.1.4.19
diff -d -u -p -r1.1.4.19 tree-optimize.c
--- tree-optimize.c 26 Oct 2002 20:37:07 -0000 1.1.4.19
+++ tree-optimize.c 5 Nov 2002 22:16:56 -0000
@@ -99,10 +99,6 @@ optimize_function_tree (fndecl)
double_chain_free (fnbody);
#endif
- /* Flush out flow graph and SSA data. */
- delete_tree_ssa (fnbody);
- delete_tree_cfg ();
-
/* Debugging dump after optimization. */
dump_file = dump_begin (TDI_optimized, &dump_flags);
if (dump_file)
@@ -114,9 +110,13 @@ optimize_function_tree (fndecl)
if (dump_flags & TDF_RAW)
dump_node (fnbody, TDF_SLIM | dump_flags, dump_file);
else
- print_generic_tree (dump_file, fnbody, 0);
+ print_generic_stmt (dump_file, fnbody, dump_flags);
fprintf (dump_file, "\n");
dump_end (TDI_optimized, dump_file);
}
+
+ /* Flush out flow graph and SSA data. */
+ delete_tree_ssa (fnbody);
+ delete_tree_cfg ();
}
Index: tree-pretty-print.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-pretty-print.c,v
retrieving revision 1.1.2.3
diff -d -u -p -r1.1.2.3 tree-pretty-print.c
--- tree-pretty-print.c 26 Oct 2002 20:37:07 -0000 1.1.2.3
+++ tree-pretty-print.c 5 Nov 2002 22:16:56 -0000
@@ -28,14 +28,6 @@ Software Foundation, 59 Temple Place - S
#include "hashtab.h"
#include "tree-flow.h"
-/* Modifier flags for print_generic_* functions. See diagnostic.h for
- documentation. */
-const int PPF_BRIEF = 1 << 0;
-const int PPF_BLOCK = 1 << 1;
-const int PPF_LINENO = 1 << 2;
-const int PPF_IS_STMT = 1 << 3;
-
-
/* Local functions, macros and variables. */
static int op_prio PARAMS ((tree));
static const char *op_symbol PARAMS ((tree));
@@ -67,44 +59,46 @@ static void dump_block_info PARAMS ((o
static output_buffer buffer;
static int initialized = 0;
-static int last_bb = -1;
+static int last_bb;
+static bool dumping_stmts;
-/* Print the tree T, and its successors, on file FILE. FLAGS specifies details
- to show in the dump. See PPF_* in diagnostic.h. */
+/* Print tree T, and its successors, on file FILE. FLAGS specifies details
+ to show in the dump. See TDF_* in tree.h. */
void
-print_generic_tree (file, t, flags)
+print_generic_stmt (file, t, flags)
FILE *file;
tree t;
int flags;
{
maybe_init_pretty_print ();
- last_bb = -1;
- dump_generic_node (&buffer, t, 0, flags | PPF_IS_STMT);
+ dumping_stmts = true;
+ dump_generic_node (&buffer, t, 0, flags);
fprintf (file, "%s", output_finalize_message (&buffer));
output_clear_message_text (&buffer);
}
-/* Print a single node T on file FILE. FLAGS specifies details to show in the
- dump. See PPF_* in diagnostic.h. */
+/* Print a single expression T on file FILE. FLAGS specifies details to show
+ in the dump. See TDF_* in tree.h. */
void
-print_generic_node (file, t, flags)
+print_generic_expr (file, t, flags)
FILE *file;
tree t;
int flags;
{
maybe_init_pretty_print ();
- last_bb = -1;
+ dumping_stmts = false;
dump_generic_node (&buffer, t, 0, flags);
fprintf (file, "%s", output_finalize_message (&buffer));
output_clear_message_text (&buffer);
}
-/* Dump the node NODE on the output_buffer BUFFER, SPC spaces of indent. */
+/* Dump the node NODE on the output_buffer BUFFER, SPC spaces of indent.
+ FLAGS specifies details to show in the dump (see TDF_* in tree.h). */
int
dump_generic_node (buffer, node, spc, flags)
@@ -120,7 +114,7 @@ dump_generic_node (buffer, node, spc, fl
if (node == NULL_TREE)
return spc;
- if ((flags & PPF_BLOCK)
+ if ((flags & TDF_BLOCK)
&& node != empty_stmt_node
&& node != error_mark_node)
dump_block_info (buffer, bb_for_stmt (node), spc);
@@ -575,10 +569,10 @@ dump_generic_node (buffer, node, spc, fl
break;
case COMPOUND_EXPR:
- if (flags & PPF_IS_STMT)
+ if (dumping_stmts)
{
dump_generic_node (buffer, TREE_OPERAND (node, 0), spc, flags);
- if (!(flags & PPF_BRIEF))
+ if (!(flags & TDF_SLIM))
{
output_add_character (buffer, ';');
newline_and_indent (buffer, spc);
@@ -616,7 +610,7 @@ dump_generic_node (buffer, node, spc, fl
output_add_string (buffer, "if (");
dump_generic_node (buffer, COND_EXPR_COND (node), spc, flags);
output_add_character (buffer, ')');
- if (!(flags & PPF_BRIEF))
+ if (!(flags & TDF_SLIM))
{
if (COND_EXPR_THEN (node) == empty_stmt_node)
{
@@ -662,7 +656,7 @@ dump_generic_node (buffer, node, spc, fl
case BIND_EXPR:
output_add_character (buffer, '{');
- if (!(flags & PPF_BRIEF))
+ if (!(flags & TDF_SLIM))
{
if (BIND_EXPR_VARS (node))
{
@@ -1009,7 +1003,7 @@ dump_generic_node (buffer, node, spc, fl
}
dump_generic_node (buffer, LABELED_BLOCK_LABEL (node), spc, flags);
output_add_string (buffer, ": {");
- if (!(flags & PPF_BRIEF))
+ if (!(flags & TDF_SLIM))
newline_and_indent (buffer, spc+2);
dump_generic_node (buffer, LABELED_BLOCK_BODY (node), spc+2, flags);
if (!flags)
@@ -1045,7 +1039,7 @@ dump_generic_node (buffer, node, spc, fl
case LOOP_EXPR:
output_add_string (buffer, "while (1)");
- if (!(flags & PPF_BRIEF))
+ if (!(flags & TDF_SLIM))
{
newline_and_indent (buffer, spc+2);
output_add_character (buffer, '{');
@@ -1059,7 +1053,7 @@ dump_generic_node (buffer, node, spc, fl
flowgraph information, we should show them to avoid confusing
the user. This perhaps should be fixed by actually inserting
an empty statement at the end of LOOP_EXPRs. */
- if ((flags & PPF_BLOCK) && bb_for_stmt (node))
+ if ((flags & TDF_BLOCK) && bb_for_stmt (node))
{
newline_and_indent (buffer, spc);
dump_block_info (buffer, latch_block (bb_for_stmt (node)), spc);
@@ -1091,7 +1085,7 @@ dump_generic_node (buffer, node, spc, fl
output_add_string (buffer, "switch (");
dump_generic_node (buffer, SWITCH_COND (node), spc, flags);
output_add_character (buffer, ')');
- if (!(flags & PPF_BRIEF))
+ if (!(flags & TDF_SLIM))
{
newline_and_indent (buffer, spc+2);
output_add_character (buffer, '{');
@@ -1136,7 +1130,7 @@ dump_generic_node (buffer, node, spc, fl
dump_generic_node (buffer, ASM_CLOBBERS (node), spc, flags);
}
output_add_string (buffer, ");");
- if (!(flags & PPF_BRIEF))
+ if (!(flags & TDF_SLIM))
output_add_newline (buffer);
break;
@@ -1246,7 +1240,7 @@ print_declaration (buffer, t, spc, flags
}
output_add_character (buffer, ';');
- if (!(flags & PPF_BRIEF))
+ if (!(flags & TDF_SLIM))
output_add_newline (buffer);
}
@@ -1733,6 +1727,8 @@ pretty_print_string (buffer, str)
static void
maybe_init_pretty_print ()
{
+ last_bb = -1;
+
if (!initialized)
{
init_output_buffer (&buffer, /* prefix */NULL, /* line-width */0);
@@ -1759,8 +1755,20 @@ dump_block_info (buffer, bb, spc)
if (bb && bb->index != last_bb)
{
edge e;
+ tree *stmt_p = bb->head_tree_p;
+ int lineno;
output_formatted_scalar (buffer, "# BLOCK %d", bb->index);
+
+ if (stmt_p
+ && is_exec_stmt (*stmt_p)
+ && (lineno = get_lineno (*stmt_p)) > 0)
+ {
+ output_add_string (buffer, " (");
+ output_add_string (buffer, get_filename (*stmt_p));
+ output_formatted_scalar (buffer, ":%d", lineno);
+ output_add_string (buffer, ")");
+ }
output_add_string (buffer, ". PRED:");
for (e = bb->pred; e; e = e->pred_next)
Index: tree-ssa-ccp.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-ssa-ccp.c,v
retrieving revision 1.1.2.28
diff -d -u -p -r1.1.2.28 tree-ssa-ccp.c
--- tree-ssa-ccp.c 2 Nov 2002 04:30:54 -0000 1.1.2.28
+++ tree-ssa-ccp.c 5 Nov 2002 22:16:56 -0000
@@ -167,7 +167,7 @@ tree_ssa_ccp (fndecl)
if (dump_flags & TDF_RAW)
dump_node (fnbody, TDF_SLIM | dump_flags, dump_file);
else
- print_generic_tree (dump_file, fnbody, PPF_BLOCK);
+ print_generic_stmt (dump_file, fnbody, dump_flags);
fprintf (dump_file, "\n");
dump_end (TDI_ccp, dump_file);
@@ -309,7 +309,7 @@ substitute_and_fold ()
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, "Line %d: replaced ", get_lineno (expr));
- print_generic_node (dump_file, expr, 0);
+ print_generic_stmt (dump_file, expr, TDF_SLIM);
}
replace_uses_in (expr);
@@ -320,7 +320,7 @@ substitute_and_fold ()
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, " with ");
- print_generic_node (dump_file, new_expr, 0);
+ print_generic_stmt (dump_file, new_expr, TDF_SLIM);
fprintf (dump_file, "\n");
}
}
@@ -480,7 +480,7 @@ visit_expression_for (ref)
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, "\nVisiting expression: ");
- print_generic_node (dump_file, expr, 0);
+ print_generic_expr (dump_file, expr, 0);
dump_ref (dump_file, "\nfor reference: ", ref, 0, 0);
}
@@ -669,12 +669,12 @@ evaluate_expr (expr)
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, "Expression evaluates to ");
- print_generic_node (dump_file, expr, 0);
+ print_generic_expr (dump_file, expr, 0);
fprintf (dump_file, " which is ");
if (val.lattice_val == CONSTANT)
{
fprintf (dump_file, "constant ");
- print_generic_node (dump_file, simplified, 0);
+ print_generic_expr (dump_file, simplified, 0);
}
else if (val.lattice_val == VARYING)
fprintf (dump_file, "not a constant");
@@ -705,7 +705,7 @@ dump_lattice_value (outf, prefix, val)
else
{
fprintf (outf, "%sCONSTANT ", prefix);
- print_generic_node (outf, val.const_value, 0);
+ print_generic_expr (outf, val.const_value, 0);
}
}
@@ -917,7 +917,7 @@ set_lattice_value (def, val)
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, "Lattice value changed to ");
- print_generic_node (dump_file, val.const_value, 0);
+ print_generic_expr (dump_file, val.const_value, 0);
fprintf (dump_file, ". Adding definition to SSA edges.\n");
}
Index: tree-ssa-dce.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-ssa-dce.c,v
retrieving revision 1.1.2.10
diff -d -u -p -r1.1.2.10 tree-ssa-dce.c
--- tree-ssa-dce.c 26 Oct 2002 20:37:07 -0000 1.1.2.10
+++ tree-ssa-dce.c 5 Nov 2002 22:16:56 -0000
@@ -152,7 +152,7 @@ tree_ssa_eliminate_dead_code (fndecl)
if (dump_flags & TDF_RAW)
dump_node (fnbody, TDF_SLIM | dump_flags, dump_file);
else
- print_generic_tree (dump_file, fnbody, 0);
+ print_generic_stmt (dump_file, fnbody, dump_flags);
fprintf (dump_file, "Finding obviously useful instructions:\n");
}
@@ -282,7 +282,7 @@ tree_ssa_eliminate_dead_code (fndecl)
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, "Warning: removing ");
- print_generic_node (dump_file, t, PPF_IS_STMT);
+ print_generic_stmt (dump_file, t, TDF_SLIM);
}
stats.removed++;
@@ -312,7 +312,7 @@ tree_ssa_eliminate_dead_code (fndecl)
if (dump_flags & TDF_RAW)
dump_node (fnbody, TDF_SLIM | dump_flags, dump_file);
else
- print_generic_tree (dump_file, fnbody, 0);
+ print_generic_stmt (dump_file, fnbody, dump_flags);
print_stats ();
Index: tree-ssa-pre.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-ssa-pre.c,v
retrieving revision 1.1.4.30
diff -d -u -p -r1.1.4.30 tree-ssa-pre.c
--- tree-ssa-pre.c 26 Oct 2002 20:37:07 -0000 1.1.4.30
+++ tree-ssa-pre.c 5 Nov 2002 22:16:57 -0000
@@ -1490,12 +1490,12 @@ finalize_1 (ei, temp)
{
fprintf (dump_file, "In BB %d, insert save of ",
ref_bb (X)->index);
- print_generic_tree (dump_file, ei->expr, 0);
+ print_generic_expr (dump_file, ei->expr, 0);
fprintf (dump_file, " to ");
- print_generic_tree (dump_file, temp, 0);
+ print_generic_expr (dump_file, temp, 0);
fprintf (dump_file, " after ");
- print_generic_node (dump_file, last_stmt (ref_bb (X)),
- PPF_IS_STMT);
+ print_generic_stmt (dump_file, last_stmt (ref_bb (X)),
+ dump_flags);
fprintf (dump_file,
" (at end of BB), because of ExprPhi");
fprintf (dump_file, " in BB %d\n",
@@ -1953,7 +1953,7 @@ calculate_increment (ei, expr)
if (dump_file)
{
fprintf (dump_file, "Increment calculated to be: ");
- print_generic_tree (dump_file, incr, 0);
+ print_generic_expr (dump_file, incr, 0);
fprintf (dump_file, "\n");
}
#endif
@@ -2022,7 +2022,7 @@ repair_injury (ei, use, temp, orig_euse)
if (dump_file)
{
fprintf (dump_file, "Injuring def to repair is: ");
- print_generic_tree (dump_file, ref_expr (v), 0);
+ print_generic_expr (dump_file, ref_expr (v), 0);
fprintf (dump_file, "\n");
}
#endif
@@ -2389,11 +2389,11 @@ code_motion (ei, temp)
{
fprintf (dump_file, "In BB %d, insert save of ",
use_bb->index);
- print_generic_tree (dump_file, ei->expr, 0);
+ print_generic_expr (dump_file, ei->expr, 0);
fprintf (dump_file, " to ");
- print_generic_tree (dump_file, temp, 0);
+ print_generic_expr (dump_file, temp, 0);
fprintf (dump_file, " before statement ");
- print_generic_tree (dump_file,TREE_OPERAND (use_stmt, 0), 0);
+ print_generic_expr (dump_file,TREE_OPERAND (use_stmt, 0), 0);
fprintf (dump_file, " on line %d\n",
EXPR_WFL_LINENO (use_expr));
}
@@ -2467,11 +2467,11 @@ code_motion (ei, temp)
{
fprintf (dump_file, "In BB %d, insert reload of ",
use_bb->index);
- print_generic_tree (dump_file, ei->expr, 0);
+ print_generic_expr (dump_file, ei->expr, 0);
fprintf (dump_file, " from ");
- print_generic_tree (dump_file, temp, 0);
+ print_generic_expr (dump_file, temp, 0);
fprintf (dump_file, " in statement ");
- print_generic_tree (dump_file, TREE_OPERAND (use_stmt, 0), 0);
+ print_generic_expr (dump_file, TREE_OPERAND (use_stmt, 0), 0);
fprintf (dump_file, " on line %d\n",
EXPR_WFL_LINENO (use_stmt));
}
@@ -2648,7 +2648,7 @@ pre_part_1_trav (slot, data)
if (dump_file)
{
fprintf (dump_file, "Occurrences for expression ");
- print_generic_tree (dump_file, ei->expr, 0);
+ print_generic_expr (dump_file, ei->expr, 0);
fprintf (dump_file, "\n");
dump_ref_array (dump_file, "", ei->refs, 0, 1);
}
@@ -2657,7 +2657,7 @@ pre_part_1_trav (slot, data)
if (dump_file)
{
fprintf (dump_file, "ExprPhi's for expression ");
- print_generic_tree (dump_file, ei->expr, 0);
+ print_generic_expr (dump_file, ei->expr, 0);
fprintf (dump_file, "\n");
dump_ref_array (dump_file, "", ei->phis, 0, 1);
}
@@ -2865,7 +2865,7 @@ tree_perform_ssapre ()
if (dump_flags & TDF_RAW)
dump_node (fn, TDF_SLIM | dump_flags, dump_file);
else
- print_generic_tree (dump_file, fn, 0);
+ print_generic_stmt (dump_file, fn, dump_flags);
dump_end (TDI_pre, dump_file);
}
Index: tree-ssa.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Attic/tree-ssa.c,v
retrieving revision 1.1.4.27
diff -d -u -p -r1.1.4.27 tree-ssa.c
--- tree-ssa.c 31 Oct 2002 19:47:04 -0000 1.1.4.27
+++ tree-ssa.c 5 Nov 2002 22:16:57 -0000
@@ -221,16 +221,14 @@ build_tree_ssa (fndecl)
/* FIXME Default dump should be the pretty-printed function with SSA
indices. */
if (tree_ssa_dump_flags & (TDF_DETAILS))
- dump_tree_ssa (tree_ssa_dump_file);
+ {
+ dump_referenced_vars (tree_ssa_dump_file);
+ dump_tree_ssa (tree_ssa_dump_file);
+ dump_reaching_defs (tree_ssa_dump_file);
+ }
if (tree_ssa_dump_flags & TDF_STATS)
dump_dfa_stats (tree_ssa_dump_file);
-
- if (tree_ssa_dump_flags & TDF_REFS)
- dump_referenced_vars (tree_ssa_dump_file);
-
- if (tree_ssa_dump_flags & TDF_RDEFS)
- dump_reaching_defs (tree_ssa_dump_file);
dump_end (TDI_ssa, tree_ssa_dump_file);
}
Index: tree.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree.h,v
retrieving revision 1.342.2.24
diff -d -u -p -r1.342.2.24 tree.h
--- tree.h 1 Nov 2002 18:40:17 -0000 1.342.2.24
+++ tree.h 5 Nov 2002 22:16:57 -0000
@@ -3201,8 +3201,8 @@ typedef tree (*walk_tree_fn) PARAMS ((t
extend the DUMP_FILES array in tree-dump.c */
enum tree_dump_index
{
- TDI_all, /* dump the whole translation unit */
- TDI_class, /* dump class hierarchy */
+ TDI_tu, /* dump the whole translation unit. */
+ TDI_class, /* dump class hierarchy. */
TDI_inlined, /* dump each function after inlining
within it. */
TDI_original, /* dump each function before optimizing it */
@@ -3218,8 +3218,9 @@ enum tree_dump_index
function. */
TDI_dce, /* dump SSA DCE information for each
function. */
- TDI_optimized, /* dump each function after optimizing it */
- TDI_xml, /* dump function call graph. */
+ TDI_optimized, /* dump each function after optimizing it. */
+ TDI_xml, /* dump function call graph. */
+ TDI_all, /* enable all the dumps above. */
TDI_end
};
@@ -3229,12 +3230,12 @@ enum tree_dump_index
#define TDF_ADDRESS (1 << 0) /* dump node addresses */
#define TDF_SLIM (1 << 1) /* don't go wild following links */
#define TDF_RAW (1 << 2) /* unparse the function */
-#define TDF_DETAILS (1 << 3) /* show how each statement is
- simplified */
+#define TDF_DETAILS (1 << 3) /* show more detailed info about
+ each pass */
#define TDF_STATS (1 << 4) /* dump various statistics about
each pass */
-#define TDF_REFS (1 << 0) /* dump ssa variable refs */
-#define TDF_RDEFS (1 << 1) /* dump reaching definitions */
+#define TDF_BLOCK (1 << 5) /* display basic block boundaries */
+
typedef struct dump_info *dump_info_p;
@@ -3244,11 +3245,10 @@ extern FILE *dump_begin PARAMS ((enum
extern void dump_end PARAMS ((enum tree_dump_index, FILE *));
extern void dump_node PARAMS ((tree, int, FILE *));
extern int dump_switch_p PARAMS ((const char *));
-extern void dump_enable_all_ssa PARAMS ((void));
-const char *dump_flag_name PARAMS ((enum tree_dump_index));
+const char *dump_flag_name PARAMS ((enum tree_dump_index));
-extern int simplify_function_tree PARAMS ((tree));
-extern const char *get_name PARAMS ((tree));
+extern int simplify_function_tree PARAMS ((tree));
+extern const char *get_name PARAMS ((tree));
\f
/* Redefine abort to report an internal error w/o coredump, and
reporting the location of the error in the source file. This logic
Index: doc/invoke.texi
===================================================================
RCS file: /cvs/gcc/gcc/gcc/doc/invoke.texi,v
retrieving revision 1.152.2.21
diff -d -u -p -r1.152.2.21 invoke.texi
--- doc/invoke.texi 22 Oct 2002 18:28:51 -0000 1.152.2.21
+++ doc/invoke.texi 5 Nov 2002 22:16:59 -0000
@@ -3232,19 +3232,19 @@ changes according to the environment and
is for tying up a dump file with a debug environment.
@item slim
Inhibit dumping of members of a scope or body of a function merely
-because that scope has been reached. Only dump such items when they
-are directly reachable by some other path.
-@item refs
-Print the list of references made to each variable in the program.
-@item rdefs
-Print the list of reaching definitions for each variable used in the program.
+because that scope has been reached. Only dump such items when they
+are directly reachable by some other path. When dumping pretty-printed
+trees, this option inhibits dumping the bodies of control structures.
@item raw
-Print a raw representation of the tree.
+Print a raw representation of the tree. By default, trees are
+pretty-printed into a C-like representation.
@item details
Enable more detailed dumps (not honored by every dump option).
@item stats
Enable dumping various statistics about the pass (not honored by every dump
option).
+@item block
+Enable showing basic block boundaries (disabled in raw dumps).
@item all
Turn on all options.
@end table
@@ -3295,11 +3295,11 @@ by appending @file{.pre} to the source f
@opindex fdump-tree-dce
Dump each function before and after DCE. The file name is made by appending
@file{.dce} to the source file name.
-@end table
-@item -fdump-tree-all-ssa @r{(C and C++ only)}
-@opindex fdump-tree-all-ssa @r{(C and C++ only)}
-Enable all SSA-related dumps described above.
+@item all
+@opindex fdump-tree-all
+Enable all the available tree dumps with the flags provided in this option.
+@end table
@item -fsched-verbose=@var{n}
@opindex fsched-verbose
reply other threads:[~2002-11-05 23:58 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20021105235757.GA16970@tornado.toronto.redhat.com \
--to=dnovillo@redhat.com \
--cc=gcc-patches@gcc.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).