+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
#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. */
/* 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;
#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)
struct loop *array;
/* Pointer to root of loop heirachy tree. */
- struct loop *tree;
+ struct loop *tree_root;
/* Information derived from the CFG. */
struct cfg
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 */
{
NULL, /* head */
NULL, /* end */
+ NULL, /* head_tree */
+ NULL, /* end_tree */
NULL, /* pred */
NULL, /* succ */
NULL, /* local_set */
/* 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++)
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)
}
/* 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++)
{
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;