aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Novillo <dnovillo@redhat.com>2001-07-10 03:50:25 +0000
committerDiego Novillo <dnovillo@gcc.gnu.org>2001-07-09 23:50:25 -0400
commit2b1d9dc0efa7f724ce91c3463b1f5a70ab936cd1 (patch)
tree6798316b89ab69c995e28b442a4782b978b2535b
parent70bdc2ff0aa08ce5166cd202074100eea97a653d (diff)
downloadgcc-2b1d9dc0efa7f724ce91c3463b1f5a70ab936cd1.zip
gcc-2b1d9dc0efa7f724ce91c3463b1f5a70ab936cd1.tar.gz
gcc-2b1d9dc0efa7f724ce91c3463b1f5a70ab936cd1.tar.bz2
basic-block.h (tree_node): Forward declare if needed.
2001-07-09 Diego Novillo <dnovillo@redhat.com> * basic-block.h (tree_node): Forward declare if needed. (struct basic_block_def): Add fields 'head_tree' and 'end_tree'. (BLOCK_HEAD_TREE): Define. (BLOCK_END_TREE): Define. (struct loops): Rename field 'tree' to 'tree_root'. * flow.c (entry_exit_blocks): Add initializers for 'head_tree' and 'end_tree'. (flow_loops_tree_build): Rename reference to field 'tree' to 'tree_root'. (flow_loops_level_compute): Ditto. * predict.c (estimate_bb_frequencies): Ditto. * tree.h (struct tree_common): Add field 'aux'. From-SVN: r43886
-rw-r--r--gcc/ChangeLog15
-rw-r--r--gcc/basic-block.h14
-rw-r--r--gcc/flow.c10
-rw-r--r--gcc/predict.c2
-rw-r--r--gcc/tree.h1
5 files changed, 37 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ea2c7c6..f1379c1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,18 @@
+2001-07-09 Diego Novillo <dnovillo@redhat.com>
+
+ * basic-block.h (tree_node): Forward declare if needed.
+ (struct basic_block_def): Add fields 'head_tree' and 'end_tree'.
+ (BLOCK_HEAD_TREE): Define.
+ (BLOCK_END_TREE): Define.
+ (struct loops): Rename field 'tree' to 'tree_root'.
+ * flow.c (entry_exit_blocks): Add initializers for 'head_tree' and
+ 'end_tree'.
+ (flow_loops_tree_build): Rename reference to field 'tree' to
+ 'tree_root'.
+ (flow_loops_level_compute): Ditto.
+ * predict.c (estimate_bb_frequencies): Ditto.
+ * tree.h (struct tree_common): Add field 'aux'.
+
2001-07-09 Stan Shebs <shebs@apple.com>
* config/darwin.c (darwin_encode_section_info): Don't mark any
diff --git a/gcc/basic-block.h b/gcc/basic-block.h
index 256492e..5a2088e 100644
--- a/gcc/basic-block.h
+++ b/gcc/basic-block.h
@@ -26,6 +26,11 @@ Boston, MA 02111-1307, USA. */
#include "varray.h"
#include "partition.h"
+#ifndef TREE_CODE
+union tree_node;
+#define tree union tree_node *
+#endif
+
/* Head of register set linked list. */
typedef bitmap_head regset_head;
/* A pointer to a regset_head. */
@@ -174,6 +179,10 @@ typedef struct basic_block_def {
/* The first and last insns of the block. */
rtx head, end;
+ /* The first and last trees of the block. */
+ tree head_tree;
+ tree end_tree;
+
/* The edges into and out of the block. */
edge pred, succ;
@@ -247,6 +256,9 @@ extern regset regs_live_at_setjmp;
#define BLOCK_HEAD(B) (BASIC_BLOCK (B)->head)
#define BLOCK_END(B) (BASIC_BLOCK (B)->end)
+#define BLOCK_HEAD_TREE(B) (BASIC_BLOCK (B)->head_tree)
+#define BLOCK_END_TREE(B) (BASIC_BLOCK (B)->end_tree)
+
/* Special block numbers [markers] for entry and exit. */
#define ENTRY_BLOCK (-1)
#define EXIT_BLOCK (-2)
@@ -433,7 +445,7 @@ struct loops
struct loop *array;
/* Pointer to root of loop heirachy tree. */
- struct loop *tree;
+ struct loop *tree_root;
/* Information derived from the CFG. */
struct cfg
diff --git a/gcc/flow.c b/gcc/flow.c
index fba78dd..784d21d 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -195,6 +195,8 @@ varray_type basic_block_info;
struct basic_block_def entry_exit_blocks[2]
= {{NULL, /* head */
NULL, /* end */
+ NULL, /* head_tree */
+ NULL, /* end_tree */
NULL, /* pred */
NULL, /* succ */
NULL, /* local_set */
@@ -210,6 +212,8 @@ struct basic_block_def entry_exit_blocks[2]
{
NULL, /* head */
NULL, /* end */
+ NULL, /* head_tree */
+ NULL, /* end_tree */
NULL, /* pred */
NULL, /* succ */
NULL, /* local_set */
@@ -8718,8 +8722,8 @@ flow_loops_tree_build (loops)
/* Root the loop hierarchy tree with the first loop found.
Since we used a depth first search this should be the
outermost loop. */
- loops->tree = &loops->array[0];
- loops->tree->outer = loops->tree->inner = loops->tree->next = NULL;
+ loops->tree_root = &loops->array[0];
+ loops->tree_root->outer = loops->tree_root->inner = loops->tree_root->next = NULL;
/* Add the remaining loops to the tree. */
for (i = 1; i < num_loops; i++)
@@ -8773,7 +8777,7 @@ flow_loops_level_compute (loops)
int levels = 0;
/* Traverse all the outer level loops. */
- for (loop = loops->tree; loop; loop = loop->next)
+ for (loop = loops->tree_root; loop; loop = loop->next)
{
level = flow_loop_level_compute (loop, 1);
if (level > levels)
diff --git a/gcc/predict.c b/gcc/predict.c
index 8557313..9fed0c9 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -806,7 +806,7 @@ estimate_bb_frequencies (loops)
}
/* First compute probabilities locally for each loop from innermost
to outermost to examine probabilities for back edges. */
- estimate_loops_at_level (loops->tree);
+ estimate_loops_at_level (loops->tree_root);
/* Now fake loop around whole function to finalize probabilities. */
for (i = 0; i < n_basic_blocks; i++)
diff --git a/gcc/tree.h b/gcc/tree.h
index ec7a287..4becd00 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -130,6 +130,7 @@ struct tree_common
{
union tree_node *chain;
union tree_node *type;
+ void *aux;
ENUM_BITFIELD(tree_code) code : 8;
unsigned side_effects_flag : 1;
unsigned constant_flag : 1;