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]

[debuglocus] Initial debuglocus table support.


Initial cut of support for maintaining a debuglocus table. This includes wrappers and accessors for source locations, insn_locators, and the debugtable itself.
No debuglocuses are actually created yet, so some of the code isn't actually exercised yet. That comes next.


Bootstrapped and no new regressions on x86_64-unknown-linux-gnu.
Andrew


2009-03-20  Andrew MacLeod  <amacleod@redhat.com>

	* debuglocus.c: New file.
	(init_debuglocus_table): Create and initialize a debuglocus table.
	(create_debuglocus_table): Create a debugtable for the current func.
	(destroy_debuglocus_table): Delete a debugtable fro the current func.
	(get_debuglocus_entry): Get an entry from a debuglocus table.
	(get_debuglocus): Get an entry from the current function's table.
	(new_debuglocus_entry): Create a new entry in a table.
	(create_debuglocus_entry): Create a new entry in cfun's table.
	(create_duplicate_debuglocus): Do a deep copy of a debuglocus.
	* debuglocus.h: New file.
	(struct debuglocus_entry_d): Debuglocus table entry.
	(struct debuglocus_table_d): Debuglocus table.
	(copy_debuglocus): Copy a source locus entrypoint.
	(debuglocus_lookup_locus): Get a locus from a debuglocus.
	* tree-pretty-print.c (dump_generic_node): Add '*' when debuglocus is
	present.
	* tree.c (expand_location): Fill in debuglocus field.
	* tree.h (COPY_EXPR_LOCATION, COPY_EXPR_LOCUS): Deep copy of source
	location field if debuglocus is present.
	* input.h (expanded_location): Add debuglocus index.
	* gimple-pretty-print.c (dump_gimple_phi, dump_gimple_stmt,
	dump_implicit_edges): Print '*' if debuglocus is present.
	* function.h (struct function): Add debuglocus_table to function.
	* print-rtl.c (print_rtx): Print '*' if insn has a debuglocus.
	* print-tree.c (print_node): Print '*' if insn has a debuglocus.
	* cfglayout.c (insn_debuglocus): New. Return debuglocus for insn.
	* rtl.h (insn_debuglocus): extern decl.
	* Makefile.in: Add debuglocus.o and debuglocus.h dependancies.


Index: debuglocus.c
===================================================================
*** debuglocus.c	(revision 0)
--- debuglocus.c	(revision 0)
***************
*** 0 ****
--- 1,197 ----
+ /* Routines for dealing with debuglocus
+    Copyright (C) 2009 Free Software Foundation, Inc.
+    Contributed by Andrew Macleod <amacleod@redhat.com>
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tm.h"
+ #include "tree.h"
+ #include "ggc.h"
+ #include "basic-block.h"
+ #include "diagnostic.h"
+ #include "bitmap.h"
+ #include "tree-flow.h"
+ #include "timevar.h"
+ #include "tree-dump.h"
+ #include "tree-ssa-live.h"
+ #include "tree-pass.h"
+ #include "toplev.h"
+ #include "debuglocus.h"
+ #include "hashtab.h"
+ 
+ 
+ /* This file contains data and functions required to implement debuglocus 
+    support. This is a mechanism for tracking debug information in the compiler
+    by replacing the source locus field on some statements with entries into
+    a debug table. This debuglocus entry also contains the original source locus
+    allowing for transparent use of source locations on statements.  */
+ 
+   
+ #define DEBUGLOCUS_VEC_SIZE	8192
+ #define DEBUGLOCUS_VEC_MEM	(DEBUGLOCUS_VEC_SIZE * sizeof (debuglocus))
+ 
+ 
+ /* Create and initialize a new debuglocus table.  */
+ static debuglocus_table_t *
+ init_debuglocus_table (void)
+ {
+   debuglocus_table_t *tab;
+   debuglocus_p dlocus;
+ 
+   tab = (debuglocus_table_t *) xmalloc (sizeof (debuglocus_table_t));
+   tab->table = VEC_alloc (debuglocus_p, heap, 100);
+   dlocus = (debuglocus_p) xmalloc (DEBUGLOCUS_VEC_MEM);
+   VEC_safe_push (debuglocus_p, heap, tab->table, dlocus);
+ 
+   /* Reserve space numbner 0 for the NULL entry.  */
+   tab->size = 1;
+   return tab;
+ }
+ 
+ 
+ /* Create a debuglocus table for the current function.  */
+ void
+ create_debuglocus_table (void)
+ {
+   cfun->debuglocus_table = init_debuglocus_table ();
+ }
+ 
+ 
+ /* Destroy the current function's debuglocus table.  */
+ void
+ destroy_debuglocus_table (void)
+ {
+   cfun->debuglocus_table = NULL;
+ }
+ 
+ 
+ /* Return a pointer to the debuglocus in table TAB at index I.  */
+ static debuglocus_p
+ get_debuglocus_entry (debuglocus_table_t *tab, debuglocus_index i)
+ {
+   int v,e;
+   debuglocus_p table_vec;
+   gcc_assert (tab != NULL);
+   gcc_assert (i > 0 && i < tab->size);
+ 
+   v = i / DEBUGLOCUS_VEC_SIZE;
+   e = i % DEBUGLOCUS_VEC_SIZE;
+   table_vec = VEC_index (debuglocus_p, tab->table, v);
+   return &(table_vec[e]);
+ }
+ 
+ 
+ /* Return a pointer to the debuglocus entry at index I in the current table.  */
+ debuglocus_p
+ get_debuglocus (debuglocus_index i)
+ {
+   return get_debuglocus_entry (cfun->debuglocus_table, i);
+ }
+ 
+ 
+ /* Create and return a pointer to a new debuglocus entry in table TAB. */
+ static debuglocus_p
+ new_debuglocus_entry (debuglocus_table_t *tab)
+ {
+   int i;
+   debuglocus_p dlocus;
+   gcc_assert (tab != NULL);
+ 
+   i = tab->size++;
+   
+   /* Check if we need to increase the size of the table vector.  */
+   if (i % DEBUGLOCUS_VEC_SIZE == 0)
+     {
+       dlocus = (debuglocus_p) xmalloc (DEBUGLOCUS_VEC_MEM);
+       VEC_safe_push (debuglocus_p, heap, tab->table, dlocus);
+     }
+ 
+   dlocus = get_debuglocus_entry (tab, i);
+ 
+   /* Initialize the entry.  */
+   dlocus->locus = UNKNOWN_LOCATION;
+   dlocus->decl = NULL_TREE;
+   dlocus->order = i;		    /* Initially the issuing index.  */
+   dlocus->prev = dlocus->next = i;  /* Initialize the circular linked list.  */
+   return get_debuglocus_entry (tab, i);
+ }
+ 
+ 
+ /* Create and return a pointer to a new debuglocus entry in the current 
+    table.  */
+ debuglocus_p
+ create_debuglocus_entry (void)
+ {
+   return new_debuglocus_entry (cfun->debuglocus_table);
+ }
+ 
+ 
+ /* Copy the debuglocus LOCUS. This requires duplicating the debuglocus, as well
+    as any chain of debuglocus's attached to it.  */
+ source_location
+ create_duplicate_debuglocus (source_location locus)
+ {
+   int root_i, new_i, src_i, dest_i, prev_dest_i;
+   debuglocus_p root_p, new_p, src_p, dest_p, prev_dest_p;
+ 
+   gcc_assert (IS_DEBUGLOCUS_P (locus));
+ 
+   root_i = DEBUGLOCUS_INDEX (locus);   /* Root is the locus being copied.  */
+   root_p = get_debuglocus (root_i);
+ 
+   new_p = create_debuglocus_entry ();  /* New is the copy of root.  */
+   /* The order field starts as the index of the new debuglocus.  */
+   new_i = new_p->order;
+ 
+   /* Copy the fields from the root node.  */
+   new_p->decl = root_p->decl;
+   new_p->locus = root_p->locus;
+   new_p->order = root_p->order;
+ 
+   prev_dest_p = new_p;  /* prev_dest is used for updating the links.  */
+   prev_dest_i = new_i;
+ 
+   /* Now duplicate and link in any other locus's which are linked to root.  */
+   for (src_i = root_p->next; src_i != root_i; src_i = src_p->next)
+    {
+      src_p = get_debuglocus (src_i);  /* Src is the node being copied.  */
+      dest_p = create_debuglocus_entry (); /* Dest is the new node.  */
+      dest_i = dest_p->order;
+      /* Initialize links  */
+      prev_dest_p->next = dest_i;
+      dest_p->prev = prev_dest_i;
+ 
+      /* copy node values.  */
+      dest_p->decl = src_p->decl;
+      dest_p->locus = src_p->locus;
+      dest_p->order = src_p->order;
+ 
+      /* Now dest is the previous node in the new list.  */
+      prev_dest_i = dest_i;
+      prev_dest_p = dest_p;
+    }
+ 
+    /* Update the final link.  */
+    new_p->prev = prev_dest_i;
+    prev_dest_p->next = new_i;
+ 
+   /* Return the debuglocus for the new copy.  */
+   return new_i | DEBUGLOCUS_BIT;
+ }
Index: debuglocus.h
===================================================================
*** debuglocus.h	(revision 0)
--- debuglocus.h	(revision 0)
***************
*** 0 ****
--- 1,89 ----
+ /* Routines for dealing with debuglocus
+    Copyright (C) 2009 Free Software Foundation, Inc.
+    Contributed by Andrew Macleod <amacleod@redhat.com>
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef DEBUGLOCUS_H
+ #define DEBUGLOCUS_H
+ 
+ /* No entry. Used for terminating lists and returning no matches.  */
+ #define DEBUGLOCUS_NONE			0
+ #define IS_DEBUGLOCUS_P(LOCUS) 		(((LOCUS) & DEBUGLOCUS_BIT) != 0)
+ #define DEBUGLOCUS_INDEX(LOCUS) 	((LOCUS) & ~DEBUGLOCUS_BIT)
+ #define GET_DEBUGLOCUS(I)		(get_debuglocus (I))
+ #define GET_LOCUS_FROM_DEBUGLOCUS(DL)	(debuglocus_lookup_locus (DL))
+ 
+ struct debuglocus_entry_d GTY((skip)) {
+   tree decl;			/* debug decl  */
+   int order;			/* Linear ordering for emission sorting.  */
+   source_location locus;	/* locus of statement.  */
+   int prev;			/* prev link for multiple entries on a stmt.  */
+   int next;			/* next link for multiple entries on a stmt.  */
+ };
+ 
+ typedef struct debuglocus_entry_d debuglocus;
+ typedef struct debuglocus_entry_d *debuglocus_p;
+ 
+ 
+ DEF_VEC_P(debuglocus_p);
+ DEF_VEC_ALLOC_P(debuglocus_p, heap);
+ 
+ /* The debuglocus table is implemented simply as an array of segments. This
+    allows for simple growth of the table without having to relocate existing 
+    memory in use.  The table can never shrink in size.  */
+ 
+ struct debuglocus_table_d GTY((skip)) {
+   int size;			  /* Current number of debuglocus entries.  */
+   VEC(debuglocus_p, heap) *table;   /* list of Table segments.  */
+ };
+ 
+ typedef struct debuglocus_table_d debuglocus_table_t;
+ 
+ 
+ typedef int debuglocus_index;
+ 
+ void create_debuglocus_table(void);
+ void destroy_debuglocus_table(void);
+ debuglocus_p create_debuglocus_entry (void);
+ debuglocus_p get_debuglocus (debuglocus_index);
+ source_location create_duplicate_debuglocus (source_location locus);
+ 
+ 
+ /* Copy a locus, performing a deep copy if it is a debuglocus.  */
+ static inline source_location 
+ copy_debuglocus (source_location locus)
+ {
+   if (!IS_DEBUGLOCUS_P (locus))
+     return locus;
+   else
+     return create_duplicate_debuglocus (locus);
+ }
+ 
+ 
+ /* Return the source locus associated with a debuglocus.  */
+ static inline source_location
+ debuglocus_lookup_locus (source_location dlocus)
+ {
+   debuglocus_p ptr;
+ 
+   gcc_assert (IS_DEBUGLOCUS_P (dlocus));
+   ptr = get_debuglocus (DEBUGLOCUS_INDEX (dlocus));
+   return ptr->locus;
+ }
+ 
+ #endif
Index: tree-pretty-print.c
===================================================================
*** tree-pretty-print.c	(revision 144935)
--- tree-pretty-print.c	(working copy)
*************** along with GCC; see the file COPYING3.  
*** 36,41 ****
--- 36,42 ----
  #include "fixed-value.h"
  #include "value-prof.h"
  #include "predict.h"
+ #include "debuglocus.h"
  
  /* Local functions, macros and variables.  */
  static const char *op_symbol (const_tree);
*************** dump_generic_node (pretty_printer *buffe
*** 455,460 ****
--- 456,463 ----
  	  pp_string (buffer, " : ");
  	}
        pp_decimal_int (buffer, xloc.line);
+       if (xloc.debuglocus != DEBUGLOCUS_NONE)
+ 	pp_character (buffer, '*');
        pp_string (buffer, "] ");
      }
  
Index: tree.c
===================================================================
*** tree.c	(revision 144935)
--- tree.c	(working copy)
*************** along with GCC; see the file COPYING3.  
*** 51,56 ****
--- 51,57 ----
  #include "params.h"
  #include "pointer-set.h"
  #include "fixed-value.h"
+ #include "debuglocus.h"
  
  /* Tree code classes.  */
  
*************** expand_location (source_location loc)
*** 3565,3574 ****
        xloc.line = 0;
        xloc.column = 0;
        xloc.sysp = 0;
      }
    else
      {
!       const struct line_map *map = linemap_lookup (line_table, loc);
        xloc.file = map->to_file;
        xloc.line = SOURCE_LINE (map, loc);
        xloc.column = SOURCE_COLUMN (map, loc);
--- 3566,3585 ----
        xloc.line = 0;
        xloc.column = 0;
        xloc.sysp = 0;
+       xloc.debuglocus = DEBUGLOCUS_NONE;
      }
    else
      {
!       const struct line_map *map;
!       /* Look through a debuglocus.  */
!       if (IS_DEBUGLOCUS_P (loc))
!         {
! 	  loc = GET_LOCUS_FROM_DEBUGLOCUS (loc);
! 	  xloc.debuglocus = DEBUGLOCUS_INDEX (loc);
! 	}
!       else
!         xloc.debuglocus = DEBUGLOCUS_NONE;
!       map = linemap_lookup (line_table, loc);
        xloc.file = map->to_file;
        xloc.line = SOURCE_LINE (map, loc);
        xloc.column = SOURCE_COLUMN (map, loc);
Index: tree.h
===================================================================
*** tree.h	(revision 144970)
--- tree.h	(working copy)
*************** struct tree_constructor GTY(())
*** 1565,1575 ****
--- 1565,1583 ----
     return nothing.  */
  #define EXPR_LOCATION(NODE) (EXPR_P ((NODE)) ? (NODE)->exp.locus : UNKNOWN_LOCATION)
  #define SET_EXPR_LOCATION(NODE, LOCUS) EXPR_CHECK ((NODE))->exp.locus = (LOCUS)
+ /* COPY_EXPR_LOCATION duplicates any debuglocus that may be present. */
+ #define COPY_EXPR_LOCATION(NODE, LOCUS) \
+ 			  SET_EXPR_LOCATION (((NODE), copy_debuglocus (LOCUS))
  #define EXPR_HAS_LOCATION(NODE) (EXPR_LOCATION (NODE) != UNKNOWN_LOCATION)
  #define EXPR_LOCUS(NODE) (EXPR_P (NODE) \
  			  ? CONST_CAST (source_location *, &(NODE)->exp.locus) \
  			  : (source_location *) NULL)
  #define SET_EXPR_LOCUS(NODE, FROM) set_expr_locus ((NODE), (FROM))
+ /* COPY_EXPR_LOCUS duplicates any debuglocus that may be present. */
+ #define COPY_EXPR_LOCUS(NODE, FROM) 					       \
+ 			    set_expr_locus ((NODE), 			       \
+ 					    (FROM) ? copy_debuglocus (*(FROM)) \
+ 						   : (FROM))
  #define EXPR_FILENAME(NODE) LOCATION_FILE (EXPR_CHECK ((NODE))->exp.locus)
  #define EXPR_LINENO(NODE) LOCATION_LINE (EXPR_CHECK (NODE)->exp.locus)
  
Index: input.h
===================================================================
*** input.h	(revision 144935)
--- input.h	(working copy)
*************** typedef struct GTY (())
*** 44,49 ****
--- 44,52 ----
  
    /* In a system header?. */
    bool sysp;
+ 
+   /* If this is a debuglocus, set to index, otherwise  DEBUGLOCUS_NONE.  */
+   source_location debuglocus;
  } expanded_location;
  
  extern expanded_location expand_location (source_location);
Index: gimple-pretty-print.c
===================================================================
*** gimple-pretty-print.c	(revision 144970)
--- gimple-pretty-print.c	(working copy)
*************** along with GCC; see the file COPYING3.  
*** 32,37 ****
--- 32,38 ----
  #include "tree-pass.h"
  #include "gimple.h"
  #include "value-prof.h"
+ #include "debuglocus.h"
  
  #define INDENT(SPACE)							\
    do { int i; for (i = 0; i < SPACE; i++) pp_space (buffer); } while (0)
*************** dump_gimple_phi (pretty_printer *buffer,
*** 1194,1199 ****
--- 1195,1202 ----
  	      pp_string (buffer, " : ");
  	    }
  	  pp_decimal_int (buffer, xloc.line);
+ 	  if (xloc.debuglocus != DEBUGLOCUS_NONE)
+ 	    pp_character (buffer, '*');
  	  pp_string (buffer, "] ");
  	}
        if (i < gimple_phi_num_args (phi) - 1)
*************** dump_gimple_stmt (pretty_printer *buffer
*** 1495,1500 ****
--- 1498,1505 ----
  	  pp_string (buffer, " : ");
  	}
        pp_decimal_int (buffer, xloc.line);
+       if (xloc.debuglocus != DEBUGLOCUS_NONE)
+ 	pp_character (buffer, '*');
        pp_string (buffer, "] ");
      }
  
*************** dump_implicit_edges (pretty_printer *buf
*** 1844,1849 ****
--- 1849,1856 ----
  	      pp_string (buffer, " : ");
  	    }
  	  pp_decimal_int (buffer, goto_xloc.line);
+ 	  if (goto_xloc.debuglocus != DEBUGLOCUS_NONE)
+ 	    pp_character (buffer, '*');
  	  pp_string (buffer, "] ");
  	}
  
Index: function.h
===================================================================
*** function.h	(revision 144935)
--- function.h	(working copy)
*************** along with GCC; see the file COPYING3.  
*** 25,30 ****
--- 25,31 ----
  #include "tree.h"
  #include "hashtab.h"
  #include "varray.h"
+ #include "debuglocus.h"
  
  /* Stack of pending (incomplete) sequences saved by `start_sequence'.
     Each element describes one pending sequence.
*************** struct function GTY(())
*** 527,532 ****
--- 528,536 ----
    /* Line number of the end of the function.  */
    location_t function_end_locus;
  
+   /* Debuglocus table.  */
+   struct debuglocus_table_d * GTY ((skip)) debuglocus_table;
+ 
    /* Properties used by the pass manager.  */
    unsigned int curr_properties;
    unsigned int last_verified;
Index: print-rtl.c
===================================================================
*** print-rtl.c	(revision 144935)
--- print-rtl.c	(working copy)
*************** print_rtx (const_rtx in_rtx)
*** 395,401 ****
  		redundant with line number information and do not print anything
  		when there is no location information available.  */
  	    if (INSN_LOCATOR (in_rtx) && insn_file (in_rtx))
! 	      fprintf(outfile, " %s:%i", insn_file (in_rtx), insn_line (in_rtx));
  #endif
  	  }
  	else if (i == 6 && NOTE_P (in_rtx))
--- 395,401 ----
  		redundant with line number information and do not print anything
  		when there is no location information available.  */
  	    if (INSN_LOCATOR (in_rtx) && insn_file (in_rtx))
! 	      fprintf(outfile, " %s:%i%s", insn_file (in_rtx), insn_line (in_rtx), (insn_debuglocus (in_rtx) ? "*" : ""));
  #endif
  	  }
  	else if (i == 6 && NOTE_P (in_rtx))
Index: print-tree.c
===================================================================
*** print-tree.c	(revision 144935)
--- print-tree.c	(working copy)
*************** along with GCC; see the file COPYING3.  
*** 31,36 ****
--- 31,37 ----
  #include "tree-iterator.h"
  #include "diagnostic.h"
  #include "tree-flow.h"
+ #include "debuglocus.h"
  
  /* Define the hash table of nodes already seen.
     Such nodes are not repeated; brief cross-references are used.  */
*************** print_node (FILE *file, const char *pref
*** 455,460 ****
--- 456,463 ----
        xloc = expand_location (DECL_SOURCE_LOCATION (node));
        fprintf (file, " file %s line %d col %d", xloc.file, xloc.line,
  	       xloc.column);
+       if (xloc.debuglocus != DEBUGLOCUS_NONE)
+         fprintf (file, "* ");
  
        if (CODE_CONTAINS_STRUCT (code, TS_DECL_COMMON))
  	{	  
Index: cfglayout.c
===================================================================
*** cfglayout.c	(revision 144935)
--- cfglayout.c	(working copy)
*************** along with GCC; see the file COPYING3.  
*** 39,44 ****
--- 39,45 ----
  #include "tree-pass.h"
  #include "df.h"
  #include "vecprim.h"
+ #include "debuglocus.h"
  
  /* Holds the interesting trailing notes for the function.  */
  rtx cfg_layout_function_footer;
*************** insn_file (const_rtx insn)
*** 557,562 ****
--- 558,580 ----
    return locator_file (INSN_LOCATOR (insn));
  }
  
+ /* Return the debuglocus associated with INSN, else return NULL.  */
+ struct debuglocus_entry_d *
+ insn_debuglocus (const_rtx insn)
+ {
+   int loc = INSN_LOCATOR (insn);
+   debuglocus_p ptr = NULL;
+ 
+   if (loc)
+     {
+       expanded_location xloc;
+       xloc = expand_location (locator_location (loc));
+       if (xloc.debuglocus != DEBUGLOCUS_NONE)
+         ptr = GET_DEBUGLOCUS (xloc.debuglocus);
+     }
+   return ptr;
+ }
+ 
  /* Return true if LOC1 and LOC2 locators have the same location and scope.  */
  bool
  locator_eq (int loc1, int loc2)
Index: rtl.h
===================================================================
*** rtl.h	(revision 144935)
--- rtl.h	(working copy)
*************** extern rtx prev_cc0_setter (rtx);
*** 1637,1642 ****
--- 1637,1643 ----
  /* In cfglayout.c  */
  extern int insn_line (const_rtx);
  extern const char * insn_file (const_rtx);
+ extern struct debuglocus_entry_d *insn_debuglocus (const_rtx);
  extern location_t locator_location (int);
  extern int locator_line (int);
  extern const char * locator_file (int);
Index: Makefile.in
===================================================================
*** Makefile.in	(revision 144970)
--- Makefile.in	(working copy)
*************** RECOG_H = recog.h
*** 820,826 ****
  ALIAS_H = alias.h coretypes.h
  EMIT_RTL_H = emit-rtl.h
  FLAGS_H = flags.h options.h
! FUNCTION_H = function.h $(TREE_H) $(HASHTAB_H) varray.h
  EXPR_H = expr.h insn-config.h $(FUNCTION_H) $(RTL_H) $(FLAGS_H) $(TREE_H) $(MACHMODE_H) $(EMIT_RTL_H)
  OPTABS_H = optabs.h insn-codes.h
  REGS_H = regs.h varray.h $(MACHMODE_H) $(OBSTACK_H) $(BASIC_BLOCK_H) $(FUNCTION_H)
--- 820,826 ----
  ALIAS_H = alias.h coretypes.h
  EMIT_RTL_H = emit-rtl.h
  FLAGS_H = flags.h options.h
! FUNCTION_H = function.h $(TREE_H) $(HASHTAB_H) varray.h debuglocus.h
  EXPR_H = expr.h insn-config.h $(FUNCTION_H) $(RTL_H) $(FLAGS_H) $(TREE_H) $(MACHMODE_H) $(EMIT_RTL_H)
  OPTABS_H = optabs.h insn-codes.h
  REGS_H = regs.h varray.h $(MACHMODE_H) $(OBSTACK_H) $(BASIC_BLOCK_H) $(FUNCTION_H)
*************** OBJS-common = \
*** 1081,1086 ****
--- 1081,1087 ----
  	dce.o \
  	ddg.o \
  	debug.o \
+ 	debuglocus.o \
  	df-byte-scan.o \
  	df-core.o \
  	df-problems.o \
*************** tree-inline.o : tree-inline.c $(CONFIG_H
*** 2070,2076 ****
     $(IPA_PROP_H) value-prof.h tree-pass.h $(TARGET_H) $(INTEGRATE_H)
  print-tree.o : print-tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
     $(GGC_H) langhooks.h $(REAL_H) tree-iterator.h fixed-value.h \
!    $(DIAGNOSTIC_H) $(TREE_FLOW_H)
  stor-layout.o : stor-layout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
     $(TREE_H) $(PARAMS_H) $(FLAGS_H) $(FUNCTION_H) $(EXPR_H) output.h $(RTL_H) \
     $(GGC_H) $(TM_P_H) $(TARGET_H) langhooks.h $(REGS_H) gt-stor-layout.h \
--- 2071,2077 ----
     $(IPA_PROP_H) value-prof.h tree-pass.h $(TARGET_H) $(INTEGRATE_H)
  print-tree.o : print-tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
     $(GGC_H) langhooks.h $(REAL_H) tree-iterator.h fixed-value.h \
!    $(DIAGNOSTIC_H) $(TREE_FLOW_H) debuglocus.h
  stor-layout.o : stor-layout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
     $(TREE_H) $(PARAMS_H) $(FLAGS_H) $(FUNCTION_H) $(EXPR_H) output.h $(RTL_H) \
     $(GGC_H) $(TM_P_H) $(TARGET_H) langhooks.h $(REGS_H) gt-stor-layout.h \
*************** tree-stdarg.o: tree-stdarg.c $(CONFIG_H)
*** 2399,2411 ****
     tree-stdarg.h $(TARGET_H) langhooks.h
  tree-object-size.o: tree-object-size.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
     $(TM_H) $(TREE_H) $(TOPLEV_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) tree-pass.h \
!    tree-ssa-propagate.h
  gimple.o : gimple.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
     $(GGC_H) $(GIMPLE_H) $(GIMPLE_H) $(DIAGNOSTIC_H) gt-gimple.h \
     $(TREE_FLOW_H) value-prof.h $(FLAGS_H)
  gimple-pretty-print.o : gimple-pretty-print.c $(CONFIG_H) $(SYSTEM_H) \
     $(TREE_H) $(DIAGNOSTIC_H) $(REAL_H) $(HASHTAB_H) $(TREE_FLOW_H) \
!    $(TM_H) coretypes.h tree-pass.h $(GIMPLE_H) value-prof.h
  tree-mudflap.o : $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TREE_INLINE_H) \
     $(GIMPLE_H) $(DIAGNOSTIC_H) $(HASHTAB_H) langhooks.h tree-mudflap.h \
     $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(CGRAPH_H) $(GGC_H) \
--- 2400,2412 ----
     tree-stdarg.h $(TARGET_H) langhooks.h
  tree-object-size.o: tree-object-size.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
     $(TM_H) $(TREE_H) $(TOPLEV_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) tree-pass.h \
!    tree-ssa-propagate.h debuglocus.h
  gimple.o : gimple.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
     $(GGC_H) $(GIMPLE_H) $(GIMPLE_H) $(DIAGNOSTIC_H) gt-gimple.h \
     $(TREE_FLOW_H) value-prof.h $(FLAGS_H)
  gimple-pretty-print.o : gimple-pretty-print.c $(CONFIG_H) $(SYSTEM_H) \
     $(TREE_H) $(DIAGNOSTIC_H) $(REAL_H) $(HASHTAB_H) $(TREE_FLOW_H) \
!    $(TM_H) coretypes.h tree-pass.h $(GIMPLE_H) value-prof.h debuglocus.h
  tree-mudflap.o : $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TREE_INLINE_H) \
     $(GIMPLE_H) $(DIAGNOSTIC_H) $(HASHTAB_H) langhooks.h tree-mudflap.h \
     $(TM_H) coretypes.h $(TREE_DUMP_H) tree-pass.h $(CGRAPH_H) $(GGC_H) \
*************** tree-nomudflap.o : $(CONFIG_H) $(SYSTEM_
*** 2418,2424 ****
  tree-pretty-print.o : tree-pretty-print.c $(CONFIG_H) $(SYSTEM_H) \
     $(TREE_H) $(DIAGNOSTIC_H) $(REAL_H) $(HASHTAB_H) $(TREE_FLOW_H) \
     $(TM_H) coretypes.h tree-iterator.h tree-chrec.h langhooks.h tree-pass.h \
!    value-prof.h fixed-value.h output.h
  fold-const.o : fold-const.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
     $(TREE_H) $(FLAGS_H) $(REAL_H) $(TOPLEV_H) $(HASHTAB_H) $(EXPR_H) $(RTL_H) \
     $(GGC_H) $(TM_P_H) langhooks.h $(MD5_H) intl.h fixed-value.h $(TARGET_H) \
--- 2419,2425 ----
  tree-pretty-print.o : tree-pretty-print.c $(CONFIG_H) $(SYSTEM_H) \
     $(TREE_H) $(DIAGNOSTIC_H) $(REAL_H) $(HASHTAB_H) $(TREE_FLOW_H) \
     $(TM_H) coretypes.h tree-iterator.h tree-chrec.h langhooks.h tree-pass.h \
!    value-prof.h fixed-value.h output.h debuglocus.h
  fold-const.o : fold-const.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
     $(TREE_H) $(FLAGS_H) $(REAL_H) $(TOPLEV_H) $(HASHTAB_H) $(EXPR_H) $(RTL_H) \
     $(GGC_H) $(TM_P_H) langhooks.h $(MD5_H) intl.h fixed-value.h $(TARGET_H) \
*************** dbxout.o : dbxout.c $(CONFIG_H) $(SYSTEM
*** 2541,2546 ****
--- 2542,2549 ----
     langhooks.h insn-config.h reload.h $(GSTAB_H) xcoffout.h output.h dbxout.h \
     $(TOPLEV_H) $(GGC_H) $(OBSTACK_H) $(EXPR_H) gt-dbxout.h
  debug.o : debug.c debug.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H)
+ debuglocus.o : debuglocus.c debuglocus.h $(CONFIG_H) $(SYSTEM_H) coretypes.h \
+    $(TM_H)
  sdbout.o : sdbout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) debug.h \
     $(TREE_H) $(GGC_H) $(RTL_H) $(REGS_H) $(FLAGS_H) insn-config.h \
     output.h $(TOPLEV_H) $(TM_P_H) gsyms.h langhooks.h $(TARGET_H) sdbout.h \
*************** cfglayout.o : cfglayout.c $(CONFIG_H) $(
*** 3018,3024 ****
     $(RTL_H) $(TREE_H) insn-config.h $(BASIC_BLOCK_H) hard-reg-set.h output.h \
     $(FUNCTION_H) $(CFGLAYOUT_H) $(CFGLOOP_H) $(TARGET_H) gt-cfglayout.h \
     $(GGC_H) alloc-pool.h $(FLAGS_H) $(OBSTACK_H) tree-pass.h vecprim.h \
!    $(DF_H)
  timevar.o : timevar.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
     $(TIMEVAR_H) $(FLAGS_H) intl.h $(TOPLEV_H) $(RTL_H) timevar.def
  regrename.o : regrename.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
--- 3021,3027 ----
     $(RTL_H) $(TREE_H) insn-config.h $(BASIC_BLOCK_H) hard-reg-set.h output.h \
     $(FUNCTION_H) $(CFGLAYOUT_H) $(CFGLOOP_H) $(TARGET_H) gt-cfglayout.h \
     $(GGC_H) alloc-pool.h $(FLAGS_H) $(OBSTACK_H) tree-pass.h vecprim.h \
!    $(DF_H) debuglocus.h
  timevar.o : timevar.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
     $(TIMEVAR_H) $(FLAGS_H) intl.h $(TOPLEV_H) $(RTL_H) timevar.def
  regrename.o : regrename.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \

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