OSDN Git Service

* lto-symtab.c (lto_symtab_entry_def) Add vnode.
[pf3gnuchains/gcc-fork.git] / gcc / lto-streamer.h
index cc1922a..c33feb6 100644 (file)
@@ -467,10 +467,10 @@ struct lto_cgraph_encoder_d
 typedef struct lto_cgraph_encoder_d *lto_cgraph_encoder_t;
 
 /* Mapping from indices to trees.  */
 typedef struct lto_cgraph_encoder_d *lto_cgraph_encoder_t;
 
 /* Mapping from indices to trees.  */
-struct GTY(()) lto_tree_ref_table
+struct lto_tree_ref_table
 {
   /* Array of referenced trees . */
 {
   /* Array of referenced trees . */
-  tree * GTY((length ("%h.size"))) trees;
+  tree *trees;
 
   /* Size of array. */
   unsigned int size;
 
   /* Size of array. */
   unsigned int size;
@@ -496,7 +496,7 @@ struct lto_tree_ref_encoder
 
 
 /* Structure to hold states of input scope.  */
 
 
 /* Structure to hold states of input scope.  */
-struct GTY(()) lto_in_decl_state
+struct lto_in_decl_state
 {
   /* Array of lto_in_decl_buffers to store type and decls streams. */
   struct lto_tree_ref_table streams[LTO_N_DECL_STREAMS];
 {
   /* Array of lto_in_decl_buffers to store type and decls streams. */
   struct lto_tree_ref_table streams[LTO_N_DECL_STREAMS];
@@ -534,7 +534,7 @@ DEF_VEC_ALLOC_P(lto_out_decl_state_ptr, heap);
    by lto.  This structure contains the tables that are needed by the
    serialized functions and ipa passes to connect themselves to the
    global types and decls as they are reconstituted.  */
    by lto.  This structure contains the tables that are needed by the
    serialized functions and ipa passes to connect themselves to the
    global types and decls as they are reconstituted.  */
-struct GTY(()) lto_file_decl_data
+struct lto_file_decl_data
 {
   /* Decl state currently used. */
   struct lto_in_decl_state *current_decl_state;
 {
   /* Decl state currently used. */
   struct lto_in_decl_state *current_decl_state;
@@ -544,19 +544,22 @@ struct GTY(()) lto_file_decl_data
   struct lto_in_decl_state *global_decl_state;
 
   /* Table of cgraph nodes present in this file.  */
   struct lto_in_decl_state *global_decl_state;
 
   /* Table of cgraph nodes present in this file.  */
-  lto_cgraph_encoder_t GTY((skip)) cgraph_node_encoder;
+  lto_cgraph_encoder_t cgraph_node_encoder;
 
   /* Hash table maps lto-related section names to location in file.  */
 
   /* Hash table maps lto-related section names to location in file.  */
-  htab_t GTY((param_is (struct lto_in_decl_state))) function_decl_states;
+  htab_t function_decl_states;
 
   /* The .o file that these offsets relate to.  */
 
   /* The .o file that these offsets relate to.  */
-  const char *GTY((skip)) file_name;
+  const char *file_name;
+
+  /* Nonzero if this file should be recompiled with LTRANS.  */
+  unsigned needs_ltrans_p : 1;
 
   /* Hash table maps lto-related section names to location in file.  */
 
   /* Hash table maps lto-related section names to location in file.  */
-  htab_t GTY((skip)) section_hash_table;
+  htab_t section_hash_table;
 
   /* Hash new name of renamed global declaration to its original name.  */
 
   /* Hash new name of renamed global declaration to its original name.  */
-  htab_t GTY((skip)) renaming_hash_table;
+  htab_t renaming_hash_table;
 };
 
 struct lto_char_ptr_base
 };
 
 struct lto_char_ptr_base
@@ -919,6 +922,38 @@ lto_tag_to_tree_code (enum LTO_tags tag)
   return (enum tree_code) ((unsigned) tag - 1);
 }
 
   return (enum tree_code) ((unsigned) tag - 1);
 }
 
+
+/* Return true if FILE needs to be compiled with LTRANS.  */
+static inline bool
+lto_file_needs_ltrans_p (struct lto_file_decl_data *file)
+{
+  return file->needs_ltrans_p != 0;
+}
+
+
+/* Mark FILE to be compiled with LTRANS.  */
+static inline void
+lto_mark_file_for_ltrans (struct lto_file_decl_data *file)
+{
+  file->needs_ltrans_p = 1;
+}
+
+
+/* Return true if any files in node set SET need to be compiled
+   with LTRANS.  */
+static inline bool
+cgraph_node_set_needs_ltrans_p (cgraph_node_set set)
+{
+  cgraph_node_set_iterator csi;
+
+  for (csi = csi_start (set); !csi_end_p (csi); csi_next (&csi))
+    if (lto_file_needs_ltrans_p (csi_node (csi)->local.lto_file_data))
+      return true;
+
+  return false;
+}
+
+
 /* Initialize an lto_out_decl_buffer ENCODER.  */
 static inline void
 lto_init_tree_ref_encoder (struct lto_tree_ref_encoder *encoder,
 /* Initialize an lto_out_decl_buffer ENCODER.  */
 static inline void
 lto_init_tree_ref_encoder (struct lto_tree_ref_encoder *encoder,