This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[tree-profiling] support for multiple cfgs


Hi,

I've just commited the attached patch to the tree profiling
branch.

Bootstrapped and tested on i686-unknown-linux-gnu.

Gr.
Steven

Index: Makefile.in
===================================================================
RCS file: /cvs/gcc/gcc/gcc/Makefile.in,v
retrieving revision 1.903.2.179.2.10
diff -c -3 -p -r1.903.2.179.2.10 Makefile.in
*** Makefile.in	4 Jun 2004 20:44:42 -0000	1.903.2.179.2.10
--- Makefile.in	10 Jun 2004 12:34:25 -0000
*************** PARAMS_H = params.h params.def
*** 686,692 ****
  TREE_H = tree.h tree.def $(MACHMODE_H) tree-check.h version.h builtins.def \
            input.h statistics.h
  BASIC_BLOCK_H = basic-block.h bitmap.h sbitmap.h varray.h $(PARTITION_H) \
!           hard-reg-set.h cfghooks.h
  COVERAGE_H = coverage.h gcov-io.h gcov-iov.h
  DEMANGLE_H = $(srcdir)/../include/demangle.h
  RECOG_H = recog.h
--- 686,692 ----
  TREE_H = tree.h tree.def $(MACHMODE_H) tree-check.h version.h builtins.def \
            input.h statistics.h
  BASIC_BLOCK_H = basic-block.h bitmap.h sbitmap.h varray.h $(PARTITION_H) \
!           hard-reg-set.h cfghooks.h function.h
  COVERAGE_H = coverage.h gcov-io.h gcov-iov.h
  DEMANGLE_H = $(srcdir)/../include/demangle.h
  RECOG_H = recog.h
*************** tree-ssa-pre.o : tree-ssa-pre.c $(TREE_F
*** 1625,1631 ****
  tree-cfg.o : tree-cfg.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
     $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) flags.h output.h \
     diagnostic.h errors.h function.h $(TIMEVAR_H) $(TM_H) coretypes.h \
!    $(TREE_DUMP_H) except.h langhooks.h cfgloop.h gt-tree-cfg.h tree-pass.h
  tree-tailcall.o : tree-tailcall.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
     $(RTL_H) $(TREE_H) $(TM_P_H) function.h $(TM_H) coretypes.h \
     $(TREE_DUMP_H) diagnostic.h except.h tree-pass.h flags.h langhooks.h
--- 1625,1631 ----
  tree-cfg.o : tree-cfg.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
     $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) flags.h output.h \
     diagnostic.h errors.h function.h $(TIMEVAR_H) $(TM_H) coretypes.h \
!    $(TREE_DUMP_H) except.h langhooks.h cfgloop.h tree-pass.h
  tree-tailcall.o : tree-tailcall.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
     $(RTL_H) $(TREE_H) $(TM_P_H) function.h $(TM_H) coretypes.h \
     $(TREE_DUMP_H) diagnostic.h except.h tree-pass.h flags.h langhooks.h
*************** cfghooks.o: cfghooks.c $(CONFIG_H) $(SYS
*** 1911,1917 ****
     $(BASIC_BLOCK_H) cfglayout.h $(TREE_FLOW_H) $(TIMEVAR_H) toplev.h
  cfgexpand.o : cfgexpand.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
     $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) function.h $(TIMEVAR_H) $(TM_H) coretypes.h \
!    $(TREE_DUMP_H) except.h langhooks.h cfgloop.h gt-tree-cfg.h tree-pass.h $(RTL_H)
  cfgrtl.o : cfgrtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) flags.h \
     insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h $(RECOG_H) \
     function.h except.h $(GGC_H) $(TM_P_H) insn-config.h $(EXPR_H)
--- 1911,1917 ----
     $(BASIC_BLOCK_H) cfglayout.h $(TREE_FLOW_H) $(TIMEVAR_H) toplev.h
  cfgexpand.o : cfgexpand.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
     $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) function.h $(TIMEVAR_H) $(TM_H) coretypes.h \
!    $(TREE_DUMP_H) except.h langhooks.h cfgloop.h tree-pass.h $(RTL_H)
  cfgrtl.o : cfgrtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) flags.h \
     insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h $(RECOG_H) \
     function.h except.h $(GGC_H) $(TM_P_H) insn-config.h $(EXPR_H)
*************** GTFILES = $(srcdir)/input.h $(srcdir)/co
*** 2303,2309 ****
    $(srcdir)/tree-mudflap.c $(srcdir)/tree-flow.h \
    $(srcdir)/c-objc-common.c $(srcdir)/c-common.c $(srcdir)/c-parse.in \
    $(srcdir)/tree-ssanames.c $(srcdir)/tree-eh.c \
!   $(srcdir)/tree-phinodes.c $(srcdir)/tree-cfg.c \
    $(srcdir)/tree-dfa.c $(srcdir)/tree-ssa-ccp.c \
    $(srcdir)/tree-iterator.c $(srcdir)/gimplify.c \
    $(srcdir)/tree-alias-type.h $(srcdir)/tree-alias-common.h \
--- 2303,2309 ----
    $(srcdir)/tree-mudflap.c $(srcdir)/tree-flow.h \
    $(srcdir)/c-objc-common.c $(srcdir)/c-common.c $(srcdir)/c-parse.in \
    $(srcdir)/tree-ssanames.c $(srcdir)/tree-eh.c \
!   $(srcdir)/tree-phinodes.c \
    $(srcdir)/tree-dfa.c $(srcdir)/tree-ssa-ccp.c \
    $(srcdir)/tree-iterator.c $(srcdir)/gimplify.c \
    $(srcdir)/tree-alias-type.h $(srcdir)/tree-alias-common.h \
*************** gt-c-pragma.h gtype-c.h gt-input.h gt-cf
*** 2329,2335 ****
  gt-tree-alias-common.h gt-tree-mudflap.h \
  gt-tree-ssa-ccp.h gt-tree-eh.h \
  gt-tree-ssanames.h gt-tree-iterator.h gt-gimplify.h \
! gt-tree-phinodes.h gt-tree-cfg.h gt-tree-nested.h \
  gt-stringpool.h gt-langhooks.h : s-gtype ; @true
  
  gtyp-gen.h: s-gtyp-gen ; @true
--- 2329,2335 ----
  gt-tree-alias-common.h gt-tree-mudflap.h \
  gt-tree-ssa-ccp.h gt-tree-eh.h \
  gt-tree-ssanames.h gt-tree-iterator.h gt-gimplify.h \
! gt-tree-phinodes.h gt-tree-nested.h \
  gt-stringpool.h gt-langhooks.h : s-gtype ; @true
  
  gtyp-gen.h: s-gtyp-gen ; @true
Index: basic-block.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/basic-block.h,v
retrieving revision 1.153.2.46.2.6
diff -c -3 -p -r1.153.2.46.2.6 basic-block.h
*** basic-block.h	17 May 2004 22:19:30 -0000	1.153.2.46.2.6
--- basic-block.h	10 Jun 2004 12:34:25 -0000
*************** struct basic_block_def GTY((chain_next (
*** 274,280 ****
    int partition;
  
    /* The data used by basic block copying and reordering functions.  */
!   struct reorder_block_def * GTY ((skip (""))) rbi;
  
    /* Annotations used at the tree level.  */
    struct bb_ann_d *tree_annotations;
--- 274,280 ----
    int partition;
  
    /* The data used by basic block copying and reordering functions.  */
!   struct reorder_block_def *rbi;
  
    /* Annotations used at the tree level.  */
    struct bb_ann_d *tree_annotations;
*************** struct basic_block_def GTY((chain_next (
*** 283,303 ****
  typedef struct basic_block_def *basic_block;
  
  /* Structure to hold information about the blocks during reordering and
!    copying.  */
  
! typedef struct reorder_block_def
  {
    rtx header;
    rtx footer;
    basic_block next;
!   basic_block original;
!   /* Used by loop copying.  */
!   basic_block copy;
    int duplicated;
  
!   /* These fields are used by bb-reorder pass.  */
    int visited;
! } *reorder_block_def;
  
  #define BB_FREQ_MAX 10000
  
--- 283,311 ----
  typedef struct basic_block_def *basic_block;
  
  /* Structure to hold information about the blocks during reordering and
!    copying.  Needs to be put on a diet.  */
  
! struct reorder_block_def GTY(())
  {
    rtx header;
    rtx footer;
+ 
    basic_block next;
! 
!   /* These pointers may be unreliable as the first is only used for
!      debugging (and should probably be removed, and the second is only
!      used by copying.  The basic blocks pointed to may be removed and
!      that leaves these pointers pointing to garbage.  */
!   basic_block GTY ((skip (""))) original;
!   basic_block GTY ((skip (""))) copy;
! 
    int duplicated;
  
!   /* This field is used by the bb-reorder and tracer passes.  */
    int visited;
! };
! 
! typedef struct reorder_block_def *reorder_block_def;
  
  #define BB_FREQ_MAX 10000
  
*************** typedef struct reorder_block_def
*** 315,337 ****
  #define HOT_PARTITION   1
  #define COLD_PARTITION  2
  
! /* Number of basic blocks in the current function.  */
! 
! extern int n_basic_blocks;
! 
! /* First free basic block number.  */
! 
! extern int last_basic_block;
! 
! /* Number of edges in the current function.  */
! 
! extern int n_edges;
! 
! /* Index by basic block number, get basic block struct info.  */
  
! extern GTY(()) varray_type basic_block_info;
  
! #define BASIC_BLOCK(N)  (VARRAY_BB (basic_block_info, (N)))
  
  /* For iterating over basic blocks.  */
  #define FOR_BB_BETWEEN(BB, FROM, TO, DIR) \
--- 323,378 ----
  #define HOT_PARTITION   1
  #define COLD_PARTITION  2
  
! /* A structure to group all the per-function control flow graph data.
!    The x_* prefixing is necessary because otherwise references to the
!    fields of this struct are interpreted as the defines for backward
!    source compatibility following the definition of this struct.  */
! struct control_flow_graph GTY(())
! {
!   /* Block pointers for the exit and entry of a function.
!      These are always the head and tail of the basic block list.  */
!   basic_block x_entry_block_ptr;
!   basic_block x_exit_block_ptr;
! 
!   /* Index by basic block number, get basic block struct info.  */
!   varray_type x_basic_block_info;
! 
!   /* Number of basic blocks in this flow graph.  */
!   int x_n_basic_blocks;
! 
!   /* Number of edges in this flow graph.  */
!   int x_n_edges;
! 
!   /* The first free basic block number.  */
!   int x_last_basic_block;
! 
!   /* Mapping of labels to their associated blocks.  At present
!      only used for the tree CFG.  */
!   varray_type x_label_to_block_map;
! };
  
! /* Defines for accessing the fields of the CFG structure for function FN.  */
! #define ENTRY_BLOCK_PTR_FOR_FUNCTION(FN)     ((FN)->cfg->x_entry_block_ptr)
! #define EXIT_BLOCK_PTR_FOR_FUNCTION(FN)	     ((FN)->cfg->x_exit_block_ptr)
! #define basic_block_info_for_function(FN)    ((FN)->cfg->x_basic_block_info)
! #define n_basic_blocks_for_function(FN)	     ((FN)->cfg->x_n_basic_blocks)
! #define n_edges_for_function(FN)	     ((FN)->cfg->x_n_edges)
! #define last_basic_block_for_function(FN)    ((FN)->cfg->x_last_basic_block)
! #define label_to_block_map_for_function(FN)  ((FN)->cfg->x_label_to_block_map)
! 
! #define BASIC_BLOCK_FOR_FUNCTION(FN,N) \
!   (VARRAY_BB (basic_block_info_for_function(FN), (N)))
! 
! /* Defines for texual backward source compatibility.  */
! #define ENTRY_BLOCK_PTR		(cfun->cfg->x_entry_block_ptr)
! #define EXIT_BLOCK_PTR		(cfun->cfg->x_exit_block_ptr)
! #define basic_block_info	(cfun->cfg->x_basic_block_info)
! #define n_basic_blocks		(cfun->cfg->x_n_basic_blocks)
! #define n_edges			(cfun->cfg->x_n_edges)
! #define last_basic_block	(cfun->cfg->x_last_basic_block)
! #define label_to_block_map	(cfun->cfg->x_label_to_block_map)
  
! #define BASIC_BLOCK(N)		(VARRAY_BB (basic_block_info, (N)))
  
  /* For iterating over basic blocks.  */
  #define FOR_BB_BETWEEN(BB, FROM, TO, DIR) \
*************** extern struct obstack flow_obstack;
*** 395,404 ****
  /* Special block number not valid for any block.  */
  #define INVALID_BLOCK (-3)
  
- /* Similarly, block pointers for the edge list.  */
- extern GTY(()) basic_block ENTRY_BLOCK_PTR;
- extern GTY(()) basic_block EXIT_BLOCK_PTR;
- 
  #define BLOCK_NUM(INSN)	      (BLOCK_FOR_INSN (INSN)->index + 0)
  #define set_block_for_insn(INSN, BB)  (BLOCK_FOR_INSN (INSN) = BB)
  
--- 436,441 ----
*************** extern void reorder_basic_blocks (void);
*** 679,687 ****
  extern void partition_hot_cold_basic_blocks (void);
  
  /* In cfg.c */
- extern void alloc_rbi_pool (void);
  extern void initialize_bb_rbi (basic_block bb);
- extern void free_rbi_pool (void);
  
  /* In dominance.c */
  
--- 716,722 ----
Index: cfg.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfg.c,v
retrieving revision 1.34.2.23.2.8
diff -c -3 -p -r1.34.2.23.2.8 cfg.c
*** cfg.c	18 Apr 2004 10:35:19 -0000	1.34.2.23.2.8
--- cfg.c	10 Jun 2004 12:34:25 -0000
*************** Software Foundation, 59 Temple Place - S
*** 61,67 ****
  #include "toplev.h"
  #include "tm_p.h"
  #include "obstack.h"
- #include "alloc-pool.h"
  #include "timevar.h"
  #include "ggc.h"
  
--- 61,66 ----
*************** Software Foundation, 59 Temple Place - S
*** 70,97 ****
  struct obstack flow_obstack;
  static char *flow_firstobj;
  
- /* Number of basic blocks in the current function.  */
- 
- int n_basic_blocks;
- 
- /* First free basic block number.  */
- 
- int last_basic_block;
- 
- /* Number of edges in the current function.  */
- 
- int n_edges;
- 
- /* The basic block array.  */
- 
- varray_type basic_block_info;
- 
- /* The special entry and exit blocks.  */
- basic_block ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR;
- 
- /* Memory alloc pool for bb member rbi.  */
- alloc_pool rbi_pool;
- 
  void debug_flow_info (void);
  static void free_edge (edge);
  
--- 69,74 ----
*************** init_flow (void)
*** 116,124 ****
        flow_firstobj = obstack_alloc (&flow_obstack, 0);
      }
  
!   ENTRY_BLOCK_PTR = ggc_alloc_cleared (sizeof (*ENTRY_BLOCK_PTR));
    ENTRY_BLOCK_PTR->index = ENTRY_BLOCK;
!   EXIT_BLOCK_PTR = ggc_alloc_cleared (sizeof (*EXIT_BLOCK_PTR));
    EXIT_BLOCK_PTR->index = EXIT_BLOCK;
    ENTRY_BLOCK_PTR->next_bb = EXIT_BLOCK_PTR;
    EXIT_BLOCK_PTR->prev_bb = ENTRY_BLOCK_PTR;
--- 93,101 ----
        flow_firstobj = obstack_alloc (&flow_obstack, 0);
      }
  
!   ENTRY_BLOCK_PTR = ggc_alloc_cleared (sizeof (struct basic_block_def));
    ENTRY_BLOCK_PTR->index = ENTRY_BLOCK;
!   EXIT_BLOCK_PTR = ggc_alloc_cleared (sizeof (struct basic_block_def));
    EXIT_BLOCK_PTR->index = EXIT_BLOCK;
    ENTRY_BLOCK_PTR->next_bb = EXIT_BLOCK_PTR;
    EXIT_BLOCK_PTR->prev_bb = ENTRY_BLOCK_PTR;
*************** alloc_block (void)
*** 184,207 ****
    return bb;
  }
  
- /* Create memory pool for rbi_pool.  */
- 
- void
- alloc_rbi_pool (void)
- {
-   rbi_pool = create_alloc_pool ("rbi pool", 
- 				sizeof (struct reorder_block_def),
- 				n_basic_blocks + 2);
- }
- 
- /* Free rbi_pool.  */
- 
- void
- free_rbi_pool (void)
- {
-   free_alloc_pool (rbi_pool);
- }
- 
  /* Initialize rbi (the structure containing data used by basic block
     duplication and reordering) for the given basic block.  */
  
--- 161,166 ----
*************** initialize_bb_rbi (basic_block bb)
*** 210,217 ****
  {
    if (bb->rbi)
      abort ();
!   bb->rbi = pool_alloc (rbi_pool);
!   memset (bb->rbi, 0, sizeof (struct reorder_block_def));
  }
  
  /* Link block B to chain after AFTER.  */
--- 169,175 ----
  {
    if (bb->rbi)
      abort ();
!   bb->rbi = ggc_alloc_cleared (sizeof (struct reorder_block_def));
  }
  
  /* Link block B to chain after AFTER.  */
Index: cfganal.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfganal.c,v
retrieving revision 1.25.2.13
diff -c -3 -p -r1.25.2.13 cfganal.c
*** cfganal.c	13 Feb 2004 13:11:03 -0000	1.25.2.13
--- cfganal.c	10 Jun 2004 12:34:25 -0000
*************** Software Foundation, 59 Temple Place - S
*** 27,32 ****
--- 27,33 ----
  #include "rtl.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "insn-config.h"
  #include "recog.h"
  #include "toplev.h"
Index: cfgcleanup.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfgcleanup.c,v
retrieving revision 1.62.2.21.2.7
diff -c -3 -p -r1.62.2.21.2.7 cfgcleanup.c
*** cfgcleanup.c	4 Jun 2004 20:44:50 -0000	1.62.2.21.2.7
--- cfgcleanup.c	10 Jun 2004 12:34:25 -0000
*************** Software Foundation, 59 Temple Place - S
*** 38,43 ****
--- 38,44 ----
  #include "rtl.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "timevar.h"
  #include "output.h"
  #include "insn-config.h"
Index: cfghooks.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfghooks.c,v
retrieving revision 1.1.2.10.2.4
diff -c -3 -p -r1.1.2.10.2.4 cfghooks.c
*** cfghooks.c	29 Apr 2004 07:27:33 -0000	1.1.2.10.2.4
--- cfghooks.c	10 Jun 2004 12:34:25 -0000
*************** Boston, MA 02111-1307, USA.  */
*** 26,31 ****
--- 26,32 ----
  #include "tree.h"
  #include "rtl.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "tree-flow.h"
  #include "timevar.h"
  #include "toplev.h"
Index: cfglayout.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfglayout.c,v
retrieving revision 1.19.2.18.2.6
diff -c -3 -p -r1.19.2.18.2.6 cfglayout.c
*** cfglayout.c	27 May 2004 00:33:37 -0000	1.19.2.18.2.6
--- cfglayout.c	10 Jun 2004 12:34:25 -0000
*************** cfg_layout_duplicate_bb (basic_block bb)
*** 1115,1131 ****
  }
  
  /* Main entry point to this module - initialize the data structures for
!    CFG layout changes.  It keeps LOOPS up-to-date if not null.  */
  
  void
  cfg_layout_initialize (void)
  {
    basic_block bb;
  
-   /* Our algorithm depends on fact that there are no dead jumptables
-      around the code.  */
-   alloc_rbi_pool ();
- 
    FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR, NULL, next_bb)
      initialize_bb_rbi (bb);
  
--- 1115,1129 ----
  }
  
  /* Main entry point to this module - initialize the data structures for
!    CFG layout changes.  It keeps LOOPS up-to-date if not null.
!    Our algorithm depends on fact that there are no dead jumptables
!    around the code.  */
  
  void
  cfg_layout_initialize (void)
  {
    basic_block bb;
  
    FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR, NULL, next_bb)
      initialize_bb_rbi (bb);
  
*************** cfg_layout_finalize (void)
*** 1183,1189 ****
    verify_insn_chain ();
  #endif
  
-   free_rbi_pool ();
    FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR, NULL, next_bb)
      bb->rbi = NULL;
  
--- 1181,1186 ----
*************** end:
*** 1247,1253 ****
  
  void
  copy_bbs (basic_block *bbs, unsigned n, basic_block *new_bbs,
! 	  edge *edges, unsigned n_edges, edge *new_edges,
  	  struct loop *base)
  {
    unsigned i, j;
--- 1244,1250 ----
  
  void
  copy_bbs (basic_block *bbs, unsigned n, basic_block *new_bbs,
! 	  edge *edges, unsigned num_edges, edge *new_edges,
  	  struct loop *base)
  {
    unsigned i, j;
*************** copy_bbs (basic_block *bbs, unsigned n, 
*** 1286,1292 ****
      }
  
    /* Redirect edges.  */
!   for (j = 0; j < n_edges; j++)
      new_edges[j] = NULL;
    for (i = 0; i < n; i++)
      {
--- 1283,1289 ----
      }
  
    /* Redirect edges.  */
!   for (j = 0; j < num_edges; j++)
      new_edges[j] = NULL;
    for (i = 0; i < n; i++)
      {
*************** copy_bbs (basic_block *bbs, unsigned n, 
*** 1295,1301 ****
  
        for (e = new_bb->succ; e; e = e->succ_next)
  	{
! 	  for (j = 0; j < n_edges; j++)
  	    if (edges[j] && edges[j]->src == bb && edges[j]->dest == e->dest)
  	      new_edges[j] = e;
  
--- 1292,1298 ----
  
        for (e = new_bb->succ; e; e = e->succ_next)
  	{
! 	  for (j = 0; j < num_edges; j++)
  	    if (edges[j] && edges[j]->src == bb && edges[j]->dest == e->dest)
  	      new_edges[j] = e;
  
Index: cfgloop.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfgloop.c,v
retrieving revision 1.14.2.14.2.1
diff -c -3 -p -r1.14.2.14.2.1 cfgloop.c
*** cfgloop.c	3 Mar 2004 14:17:35 -0000	1.14.2.14.2.1
--- cfgloop.c	10 Jun 2004 12:34:25 -0000
*************** Software Foundation, 59 Temple Place - S
*** 25,30 ****
--- 25,31 ----
  #include "rtl.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "toplev.h"
  #include "cfgloop.h"
  #include "flags.h"
*************** get_loop_body_in_dom_order (const struct
*** 1019,1025 ****
  
  /* Gets exit edges of a LOOP, returning their number in N_EDGES.  */
  edge *
! get_loop_exit_edges (const struct loop *loop, unsigned int *n_edges)
  {
    edge *edges, e;
    unsigned i, n;
--- 1020,1026 ----
  
  /* Gets exit edges of a LOOP, returning their number in N_EDGES.  */
  edge *
! get_loop_exit_edges (const struct loop *loop, unsigned int *num_edges)
  {
    edge *edges, e;
    unsigned i, n;
*************** get_loop_exit_edges (const struct loop *
*** 1035,1041 ****
        if (!flow_bb_inside_loop_p (loop, e->dest))
  	n++;
    edges = xmalloc (n * sizeof (edge));
!   *n_edges = n;
    n = 0;
    for (i = 0; i < loop->num_nodes; i++)
      for (e = body[i]->succ; e; e = e->succ_next)
--- 1036,1042 ----
        if (!flow_bb_inside_loop_p (loop, e->dest))
  	n++;
    edges = xmalloc (n * sizeof (edge));
!   *num_edges = n;
    n = 0;
    for (i = 0; i < loop->num_nodes; i++)
      for (e = body[i]->succ; e; e = e->succ_next)
Index: cfgloopanal.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfgloopanal.c,v
retrieving revision 1.2.4.10.2.5
diff -c -3 -p -r1.2.4.10.2.5 cfgloopanal.c
*** cfgloopanal.c	17 May 2004 22:19:34 -0000	1.2.4.10.2.5
--- cfgloopanal.c	10 Jun 2004 12:34:25 -0000
*************** Software Foundation, 59 Temple Place - S
*** 25,30 ****
--- 25,31 ----
  #include "rtl.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "cfgloop.h"
  #include "expr.h"
  #include "output.h"
Index: cfgloopmanip.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfgloopmanip.c,v
retrieving revision 1.3.2.14.2.2
diff -c -3 -p -r1.3.2.14.2.2 cfgloopmanip.c
*** cfgloopmanip.c	17 May 2004 22:19:34 -0000	1.3.2.14.2.2
--- cfgloopmanip.c	10 Jun 2004 12:34:26 -0000
*************** Software Foundation, 59 Temple Place - S
*** 25,30 ****
--- 25,31 ----
  #include "rtl.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "cfgloop.h"
  #include "cfglayout.h"
  #include "output.h"
*************** fix_irreducible_loops (basic_block from)
*** 251,257 ****
    int stack_top;
    sbitmap on_stack;
    edge *edges, e;
!   unsigned n_edges, i;
  
    if (!(from->flags & BB_IRREDUCIBLE_LOOP))
      return;
--- 252,258 ----
    int stack_top;
    sbitmap on_stack;
    edge *edges, e;
!   unsigned num_edges, i;
  
    if (!(from->flags & BB_IRREDUCIBLE_LOOP))
      return;
*************** fix_irreducible_loops (basic_block from)
*** 276,294 ****
  
        bb->flags &= ~BB_IRREDUCIBLE_LOOP;
        if (bb->loop_father->header == bb)
! 	edges = get_loop_exit_edges (bb->loop_father, &n_edges);
        else
  	{
! 	  n_edges = 0;
  	  for (e = bb->succ; e; e = e->succ_next)
! 	    n_edges++;
! 	  edges = xmalloc (n_edges * sizeof (edge));
! 	  n_edges = 0;
  	  for (e = bb->succ; e; e = e->succ_next)
! 	    edges[n_edges++] = e;
  	}
  
!       for (i = 0; i < n_edges; i++)
  	{
  	  e = edges[i];
  
--- 277,295 ----
  
        bb->flags &= ~BB_IRREDUCIBLE_LOOP;
        if (bb->loop_father->header == bb)
! 	edges = get_loop_exit_edges (bb->loop_father, &num_edges);
        else
  	{
! 	  num_edges = 0;
  	  for (e = bb->succ; e; e = e->succ_next)
! 	    num_edges++;
! 	  edges = xmalloc (num_edges * sizeof (edge));
! 	  num_edges = 0;
  	  for (e = bb->succ; e; e = e->succ_next)
! 	    edges[num_edges++] = e;
  	}
  
!       for (i = 0; i < num_edges; i++)
  	{
  	  e = edges[i];
  
*************** unloop (struct loops *loops, struct loop
*** 583,589 ****
    unsigned i, n;
    basic_block latch = loop->latch;
    edge *edges;
!   unsigned n_edges;
  
    /* This is relatively straightforward.  The dominators are unchanged, as
       loop header dominates loop latch, so the only thing we have to care of
--- 584,590 ----
    unsigned i, n;
    basic_block latch = loop->latch;
    edge *edges;
!   unsigned num_edges;
  
    /* This is relatively straightforward.  The dominators are unchanged, as
       loop header dominates loop latch, so the only thing we have to care of
*************** unloop (struct loops *loops, struct loop
*** 592,598 ****
       its work.  */
  
    body = get_loop_body (loop);
!   edges = get_loop_exit_edges (loop, &n_edges);
    n = loop->num_nodes;
    for (i = 0; i < n; i++)
      if (body[i]->loop_father == loop)
--- 593,599 ----
       its work.  */
  
    body = get_loop_body (loop);
!   edges = get_loop_exit_edges (loop, &num_edges);
    n = loop->num_nodes;
    for (i = 0; i < n; i++)
      if (body[i]->loop_father == loop)
*************** unloop (struct loops *loops, struct loop
*** 621,630 ****
       update the irreducible marks inside its body.  While it is certainly
       possible to do, it is a bit complicated and this situation should be
       very rare, so we just remark all loops in this case.  */
!   for (i = 0; i < n_edges; i++)
      if (edges[i]->flags & EDGE_IRREDUCIBLE_LOOP)
        break;
!   if (i != n_edges)
      mark_irreducible_loops (loops);
    free (edges);
  }
--- 622,631 ----
       update the irreducible marks inside its body.  While it is certainly
       possible to do, it is a bit complicated and this situation should be
       very rare, so we just remark all loops in this case.  */
!   for (i = 0; i < num_edges; i++)
      if (edges[i]->flags & EDGE_IRREDUCIBLE_LOOP)
        break;
!   if (i != num_edges)
      mark_irreducible_loops (loops);
    free (edges);
  }
Index: cfgrtl.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfgrtl.c,v
retrieving revision 1.57.2.28.2.8
diff -c -3 -p -r1.57.2.28.2.8 cfgrtl.c
*** cfgrtl.c	29 Apr 2004 07:27:34 -0000	1.57.2.28.2.8
--- cfgrtl.c	10 Jun 2004 12:34:26 -0000
*************** cfg_layout_delete_block (basic_block bb)
*** 2615,2620 ****
--- 2615,2623 ----
      to = &bb->next_bb->rbi->header;
    else
      to = &cfg_layout_function_footer;
+ 
+   bb->rbi = NULL;
+ 
    rtl_delete_block (bb);
  
    if (prev)
Index: conflict.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/conflict.c,v
retrieving revision 1.14.2.8
diff -c -3 -p -r1.14.2.8 conflict.c
*** conflict.c	3 Jan 2004 23:01:46 -0000	1.14.2.8
--- conflict.c	10 Jun 2004 12:34:26 -0000
*************** Software Foundation, 59 Temple Place - S
*** 34,39 ****
--- 34,40 ----
  #include "rtl.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
+ #include "function.h"
  
  /* A register conflict graph is an undirected graph containing nodes
     for some or all of the regs used in a function.  Arcs represent
Index: dominance.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/dominance.c,v
retrieving revision 1.10.2.14.2.2
diff -c -3 -p -r1.10.2.14.2.2 dominance.c
*** dominance.c	30 Mar 2004 23:19:04 -0000	1.10.2.14.2.2
--- dominance.c	10 Jun 2004 12:34:26 -0000
***************
*** 40,45 ****
--- 40,46 ----
  #include "rtl.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "errors.h"
  #include "et-forest.h"
  
Index: flow.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/flow.c,v
retrieving revision 1.534.2.26.2.3
diff -c -3 -p -r1.534.2.26.2.3 flow.c
*** flow.c	17 May 2004 22:19:45 -0000	1.534.2.26.2.3
--- flow.c	10 Jun 2004 12:34:26 -0000
*************** free_basic_block_vars (void)
*** 771,776 ****
--- 771,779 ----
      }
    n_basic_blocks = 0;
    last_basic_block = 0;
+   n_edges = 0;
+ 
+   label_to_block_map = NULL;
  
    ENTRY_BLOCK_PTR->aux = NULL;
    ENTRY_BLOCK_PTR->global_live_at_end = NULL;
Index: function.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/function.c,v
retrieving revision 1.374.2.42.2.9
diff -c -3 -p -r1.374.2.42.2.9 function.c
*** function.c	4 Jun 2004 20:44:59 -0000	1.374.2.42.2.9
--- function.c	10 Jun 2004 12:34:27 -0000
*************** allocate_struct_function (tree fndecl)
*** 6258,6263 ****
--- 6258,6264 ----
    tree fntype = fndecl ? TREE_TYPE (fndecl) : NULL_TREE;
  
    cfun = ggc_alloc_cleared (sizeof (struct function));
+   cfun->cfg = ggc_alloc_cleared (sizeof (struct control_flow_graph));
  
    max_parm_reg = LAST_VIRTUAL_REGISTER + 1;
  
Index: function.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/function.h,v
retrieving revision 1.83.2.27.2.6
diff -c -3 -p -r1.83.2.27.2.6 function.h
*** function.h	27 May 2004 00:34:01 -0000	1.83.2.27.2.6
--- function.h	10 Jun 2004 12:34:27 -0000
*************** struct function GTY(())
*** 181,186 ****
--- 181,189 ----
    struct emit_status *emit;
    struct varasm_status *varasm;
  
+   /* The control flow graph for this function.  */
+   struct control_flow_graph *cfg;
+ 
    /* For tree-optimize.c.  */
  
    /* Saved tree and arguments during tree optimization.  Used later for
Index: loop-doloop.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/loop-doloop.c,v
retrieving revision 2.2.4.2
diff -c -3 -p -r2.2.4.2 loop-doloop.c
*** loop-doloop.c	17 May 2004 22:19:50 -0000	2.2.4.2
--- loop-doloop.c	10 Jun 2004 12:34:27 -0000
*************** Software Foundation, 59 Temple Place - S
*** 28,33 ****
--- 28,34 ----
  #include "expr.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "toplev.h"
  #include "tm_p.h"
  #include "cfgloop.h"
Index: loop-init.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/loop-init.c,v
retrieving revision 1.2.2.8.2.1
diff -c -3 -p -r1.2.2.8.2.1 loop-init.c
*** loop-init.c	3 Mar 2004 14:18:06 -0000	1.2.2.8.2.1
--- loop-init.c	10 Jun 2004 12:34:27 -0000
*************** Software Foundation, 59 Temple Place - S
*** 25,30 ****
--- 25,31 ----
  #include "rtl.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "cfgloop.h"
  #include "cfglayout.h"
  
Index: loop-iv.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/loop-iv.c,v
retrieving revision 2.6.2.4
diff -c -3 -p -r2.6.2.4 loop-iv.c
*** loop-iv.c	27 May 2004 00:34:04 -0000	2.6.2.4
--- loop-iv.c	10 Jun 2004 12:34:27 -0000
*************** Software Foundation, 59 Temple Place - S
*** 54,59 ****
--- 54,60 ----
  #include "rtl.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "cfgloop.h"
  #include "expr.h"
  #include "output.h"
Index: loop-unroll.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/loop-unroll.c,v
retrieving revision 1.2.2.6.4.1
diff -c -3 -p -r1.2.2.6.4.1 loop-unroll.c
*** loop-unroll.c	3 Mar 2004 14:18:06 -0000	1.2.2.6.4.1
--- loop-unroll.c	10 Jun 2004 12:34:27 -0000
*************** Software Foundation, 59 Temple Place - S
*** 25,30 ****
--- 25,31 ----
  #include "rtl.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "cfgloop.h"
  #include "cfglayout.h"
  #include "params.h"
Index: loop-unswitch.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/loop-unswitch.c,v
retrieving revision 1.2.2.9.2.4
diff -c -3 -p -r1.2.2.9.2.4 loop-unswitch.c
*** loop-unswitch.c	27 May 2004 00:34:05 -0000	1.2.2.9.2.4
--- loop-unswitch.c	10 Jun 2004 12:34:27 -0000
*************** Software Foundation, 59 Temple Place - S
*** 25,30 ****
--- 25,31 ----
  #include "rtl.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "cfgloop.h"
  #include "cfglayout.h"
  #include "params.h"
Index: sbitmap.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/sbitmap.c,v
retrieving revision 1.21.2.9
diff -c -3 -p -r1.21.2.9 sbitmap.c
*** sbitmap.c	3 Jan 2004 23:02:00 -0000	1.21.2.9
--- sbitmap.c	10 Jun 2004 12:34:28 -0000
*************** Software Foundation, 59 Temple Place - S
*** 26,31 ****
--- 26,32 ----
  #include "flags.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
+ #include "function.h"
  
  /* Bitmap manipulation routines.  */
  
Index: tracer.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tracer.c,v
retrieving revision 1.2.6.10.2.2
diff -c -3 -p -r1.2.6.10.2.2 tracer.c
*** tracer.c	3 Mar 2004 14:18:16 -0000	1.2.6.10.2.2
--- tracer.c	10 Jun 2004 12:34:28 -0000
***************
*** 41,46 ****
--- 41,47 ----
  #include "rtl.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "output.h"
  #include "cfglayout.h"
  #include "fibheap.h"
Index: tree-cfg.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-cfg.c,v
retrieving revision 1.1.4.267.2.16
diff -c -3 -p -r1.1.4.267.2.16 tree-cfg.c
*** tree-cfg.c	4 Jun 2004 20:45:05 -0000	1.1.4.267.2.16
--- tree-cfg.c	10 Jun 2004 12:34:28 -0000
*************** Boston, MA 02111-1307, USA.  */
*** 52,61 ****
  /* Initial capacity for the basic block array.  */
  static const int initial_cfg_capacity = 20;
  
- /* Mapping of labels to their associated blocks.  This can greatly speed up
-    building of the CFG in code with lots of gotos.  */
- static GTY(()) varray_type label_to_block_map;
- 
  /* CFG statistics.  */
  struct cfg_stats_d
  {
--- 52,57 ----
*************** build_tree_cfg (tree *tp)
*** 122,130 ****
    /* Register specific tree functions.  */
    tree_register_cfg_hooks ();
  
-   /* Initialize rbi_pool.  */
-   alloc_rbi_pool ();
- 
    /* Initialize the basic block array.  */
    init_flow ();
    n_basic_blocks = 0;
--- 118,123 ----
*************** dump_cfg_stats (FILE *file)
*** 2289,2295 ****
  {
    static long max_num_merged_labels = 0;
    unsigned long size, total = 0;
!   long n_edges;
    basic_block bb;
    const char * const fmt_str   = "%-30s%-13s%12s\n";
    const char * const fmt_str_1 = "%-30s%13lu%11lu%c\n";
--- 2282,2288 ----
  {
    static long max_num_merged_labels = 0;
    unsigned long size, total = 0;
!   long num_edges;
    basic_block bb;
    const char * const fmt_str   = "%-30s%-13s%12s\n";
    const char * const fmt_str_1 = "%-30s%13lu%11lu%c\n";
*************** dump_cfg_stats (FILE *file)
*** 2310,2325 ****
    fprintf (file, fmt_str_1, "Basic blocks", n_basic_blocks, SCALE (size),
  	   LABEL (size));
  
!   n_edges = 0;
    FOR_EACH_BB (bb)
      {
        edge e;
        for (e = bb->succ; e; e = e->succ_next)
! 	n_edges++;
      }
!   size = n_edges * sizeof (struct edge_def);
    total += size;
!   fprintf (file, fmt_str_1, "Edges", n_edges, SCALE (size), LABEL (size));
  
    size = n_basic_blocks * sizeof (struct bb_ann_d);
    total += size;
--- 2303,2318 ----
    fprintf (file, fmt_str_1, "Basic blocks", n_basic_blocks, SCALE (size),
  	   LABEL (size));
  
!   num_edges = 0;
    FOR_EACH_BB (bb)
      {
        edge e;
        for (e = bb->succ; e; e = e->succ_next)
! 	num_edges++;
      }
!   size = num_edges * sizeof (struct edge_def);
    total += size;
!   fprintf (file, fmt_str_1, "Edges", num_edges, SCALE (size), LABEL (size));
  
    size = n_basic_blocks * sizeof (struct bb_ann_d);
    total += size;
*************** delete_tree_cfg_annotations (void)
*** 2673,2680 ****
      free_blocks_annotations ();
    free_dominance_info (CDI_DOMINATORS);
  
-   label_to_block_map = NULL;
-   free_rbi_pool ();
    FOR_EACH_BB (bb)
      bb->rbi = NULL;
  }
--- 2666,2671 ----
*************** struct tree_opt_pass pass_warn_function_
*** 4761,4764 ****
    0					/* todo_flags_finish */
  };
  
- #include "gt-tree-cfg.h"
--- 4752,4754 ----
Index: tree-complex.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-complex.c,v
retrieving revision 1.1.2.6.2.2
diff -c -3 -p -r1.1.2.6.2.2 tree-complex.c
*** tree-complex.c	4 Jun 2004 20:45:05 -0000	1.1.2.6.2.2
--- tree-complex.c	10 Jun 2004 12:34:28 -0000
*************** Software Foundation, 59 Temple Place - S
*** 23,28 ****
--- 23,30 ----
  #include "coretypes.h"
  #include "tree.h"
  #include "tm.h"
+ #include "basic-block.h"
+ #include "function.h"
  #include "tree-flow.h"
  #include "tree-gimple.h"
  #include "tree-iterator.h"
Index: tree-flow.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-flow.h,v
retrieving revision 1.1.4.187.2.9
diff -c -3 -p -r1.1.4.187.2.9 tree-flow.h
*** tree-flow.h	27 May 2004 00:34:12 -0000	1.1.4.187.2.9
--- tree-flow.h	10 Jun 2004 12:34:28 -0000
*************** Boston, MA 02111-1307, USA.  */
*** 25,30 ****
--- 25,31 ----
  #include "bitmap.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "hashtab.h"
  #include "tree-gimple.h"
  #include "tree-ssa-operands.h"
Index: tree-phinodes.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-phinodes.c,v
retrieving revision 1.1.2.9.2.2
diff -c -3 -p -r1.1.2.9.2.2 tree-phinodes.c
*** tree-phinodes.c	4 Jun 2004 20:45:06 -0000	1.1.2.9.2.2
--- tree-phinodes.c	10 Jun 2004 12:34:28 -0000
*************** Boston, MA 02111-1307, USA.  */
*** 27,32 ****
--- 27,33 ----
  #include "varray.h"
  #include "ggc.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "tree-flow.h"
  #include "toplev.h"
  
Index: tree-sra.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-sra.c,v
retrieving revision 1.1.2.20.2.3
diff -c -3 -p -r1.1.2.20.2.3 tree-sra.c
*** tree-sra.c	17 May 2004 22:19:55 -0000	1.1.2.20.2.3
--- tree-sra.c	10 Jun 2004 12:34:28 -0000
*************** Software Foundation, 59 Temple Place - S
*** 34,39 ****
--- 34,40 ----
  #include "tm_p.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "diagnostic.h"
  #include "langhooks.h"
  #include "tree-inline.h"
Index: tree-ssa-ccp.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-ssa-ccp.c,v
retrieving revision 1.1.2.139.2.7
diff -c -3 -p -r1.1.2.139.2.7 tree-ssa-ccp.c
*** tree-ssa-ccp.c	4 Jun 2004 20:45:06 -0000	1.1.2.139.2.7
--- tree-ssa-ccp.c	10 Jun 2004 12:34:28 -0000
*************** Software Foundation, 59 Temple Place - S
*** 47,53 ****
  #include "tm_p.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
! 
  #include "diagnostic.h"
  #include "tree-inline.h"
  #include "tree-flow.h"
--- 47,53 ----
  #include "tm_p.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
! #include "function.h"
  #include "diagnostic.h"
  #include "tree-inline.h"
  #include "tree-flow.h"
Index: tree-ssa-dce.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-ssa-dce.c,v
retrieving revision 1.1.2.78.2.5
diff -c -3 -p -r1.1.2.78.2.5 tree-ssa-dce.c
*** tree-ssa-dce.c	17 May 2004 22:19:55 -0000	1.1.2.78.2.5
--- tree-ssa-dce.c	10 Jun 2004 12:34:28 -0000
*************** Software Foundation, 59 Temple Place - S
*** 55,60 ****
--- 55,61 ----
  #include "tm_p.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
+ #include "function.h"
  
  #include "tree.h"
  #include "diagnostic.h"
Index: tree-ssa-dse.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-ssa-dse.c,v
retrieving revision 1.1.4.4
diff -c -3 -p -r1.1.4.4 tree-ssa-dse.c
*** tree-ssa-dse.c	30 Mar 2004 23:19:31 -0000	1.1.4.4
--- tree-ssa-dse.c	10 Jun 2004 12:34:28 -0000
*************** Boston, MA 02111-1307, USA.  */
*** 28,33 ****
--- 28,34 ----
  #include "rtl.h"
  #include "tm_p.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "timevar.h"
  #include "diagnostic.h"
  #include "tree-flow.h"
Index: tree-ssa-forwprop.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-ssa-forwprop.c,v
retrieving revision 1.1.2.1.2.5
diff -c -3 -p -r1.1.2.1.2.5 tree-ssa-forwprop.c
*** tree-ssa-forwprop.c	17 May 2004 22:19:55 -0000	1.1.2.1.2.5
--- tree-ssa-forwprop.c	10 Jun 2004 12:34:28 -0000
*************** Boston, MA 02111-1307, USA.  */
*** 28,33 ****
--- 28,34 ----
  #include "rtl.h"
  #include "tm_p.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "timevar.h"
  #include "diagnostic.h"
  #include "tree-flow.h"
Index: tree-ssa-phiopt.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-ssa-phiopt.c,v
retrieving revision 1.1.2.1.2.7
diff -c -3 -p -r1.1.2.1.2.7 tree-ssa-phiopt.c
*** tree-ssa-phiopt.c	27 May 2004 00:34:13 -0000	1.1.2.1.2.7
--- tree-ssa-phiopt.c	10 Jun 2004 12:34:28 -0000
*************** Software Foundation, 59 Temple Place - S
*** 29,34 ****
--- 29,35 ----
  #include "flags.h"
  #include "tm_p.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "timevar.h"
  #include "diagnostic.h"
  #include "tree-flow.h"
Index: tree-ssa-pre.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-ssa-pre.c,v
retrieving revision 1.1.4.129.2.5
diff -c -3 -p -r1.1.4.129.2.5 tree-ssa-pre.c
*** tree-ssa-pre.c	4 Jun 2004 20:45:07 -0000	1.1.4.129.2.5
--- tree-ssa-pre.c	10 Jun 2004 12:34:28 -0000
*************** Boston, MA 02111-1307, USA.  */
*** 31,36 ****
--- 31,37 ----
  #include "tm_p.h"
  #include "hard-reg-set.h"
  #include "basic-block.h"
+ #include "function.h"
  #include "diagnostic.h"
  #include "tree-inline.h"
  #include "tree-flow.h"
Index: var-tracking.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/var-tracking.c,v
retrieving revision 2.4.2.1.2.4
diff -c -3 -p -r2.4.2.1.2.4 var-tracking.c
*** var-tracking.c	17 May 2004 22:19:58 -0000	2.4.2.1.2.4
--- var-tracking.c	10 Jun 2004 12:34:29 -0000
***************
*** 93,98 ****
--- 93,99 ----
  #include "rtl.h"
  #include "tree.h"
  #include "hard-reg-set.h"
+ #include "function.h"
  #include "basic-block.h"
  #include "flags.h"
  #include "output.h"

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]