summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-threadupdate.c
diff options
context:
space:
mode:
authorDiego Novillo <dnovillo@redhat.com>2005-06-07 21:01:14 +0000
committerDiego Novillo <dnovillo@gcc.gnu.org>2005-06-07 17:01:14 -0400
commita4233c29b7c5ce3fb024ac7f075c4c04c8e10ae5 (patch)
treea680f15c8edec49520cd7eba4ad8cd9baca9f330 /gcc/tree-ssa-threadupdate.c
parentae740ccecdd59110782f3c0623486df14a57d7b7 (diff)
downloadgcc-a4233c29b7c5ce3fb024ac7f075c4c04c8e10ae5.tar.gz
tree-ssa-threadupdate.c (struct thread_stats_d): Declare.
* tree-ssa-threadupdate.c (struct thread_stats_d): Declare. (thread_stats): New local variable. (redirect_edges): Increment count of threaded edges. (thread_through_all_blocks): Initialize thread_stats. Display number of threaded jumps if TDF_STATS is enabled. From-SVN: r100722
Diffstat (limited to 'gcc/tree-ssa-threadupdate.c')
-rw-r--r--gcc/tree-ssa-threadupdate.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc/tree-ssa-threadupdate.c b/gcc/tree-ssa-threadupdate.c
index 25f6cdfdc02..ea4413710a1 100644
--- a/gcc/tree-ssa-threadupdate.c
+++ b/gcc/tree-ssa-threadupdate.c
@@ -147,6 +147,16 @@ struct local_info
bool jumps_threaded;
};
+/* Jump threading statistics. */
+
+struct thread_stats_d
+{
+ unsigned long num_threaded_edges;
+};
+
+struct thread_stats_d thread_stats;
+
+
/* Remove the last statement in block BB if it is a control statement
Also remove all outgoing edges except the edge which reaches DEST_BB.
If DEST_BB is NULL, then remove all outgoing edges. */
@@ -589,6 +599,8 @@ redirect_edges (void **slot, void *data)
to clear it will cause all kinds of unpleasant problems later. */
e->aux = NULL;
+ thread_stats.num_threaded_edges++;
+
if (rd->dup_block)
{
edge e2;
@@ -811,6 +823,7 @@ thread_through_all_blocks (bitmap threaded_blocks)
bitmap_iterator bi;
rediscover_loops_after_threading = false;
+ memset (&thread_stats, 0, sizeof (thread_stats));
EXECUTE_IF_SET_IN_BITMAP (threaded_blocks, 0, i, bi)
{
@@ -820,5 +833,9 @@ thread_through_all_blocks (bitmap threaded_blocks)
retval |= thread_block (bb);
}
+ if (dump_file && (dump_flags & TDF_STATS))
+ fprintf (dump_file, "\nJumps threaded: %lu\n",
+ thread_stats.num_threaded_edges);
+
return retval;
}