On 07/17/2014 05:43 PM, Jan Hubicka wrote: >> Bootstrapped/regtested x86_64-linux >> >> Ready for trunk? >> >> gcc/ChangeLog: >> 2014-07-17 Martin Liska >> >> * cgraph.h (varpool_node): >> (availability get_availability (void)): >> created from cgraph_variable_initializer_availability >> (inline varpool_node *ultimate_alias_target (availability *availability = NULL) >> creted from: cgraph_variable_initializer_availability >> (inline varpool_node *get_alias_target (void)): created from varpool_alias_target >> (void finalize_named_section_flags (void)): >> created from varpool_finalize_named_section_flags >> (bool assemble_decl (void)): created from varpool_assemble_decl >> (void analyze (void)): created from varpool_analyze_node >> (bool call_for_node_and_aliases (bool (*callback) (varpool_node *, void *), >> void *data, bool include_overwritable)): created fromvarpool_for_node_and_aliases >> (void remove_initializer (void)): created from varpool_remove_initializer >> (tree get_constructor (void)): created from varpool_get_constructor >> (bool externally_visible_p (void)): created from varpool_externally_visible_p >> (bool ctor_useable_for_folding_p (void)): created from varpool_ctor_useable_for_folding_p >> (inline bool all_refs_explicit_p ()): created from varpool_all_refs_explicit_p >> (inline bool can_remove_if_no_refs_p (void)): created from varpool_can_remove_if_no_refs >> (static inline varpool_node *get (const_tree decl)): created from varpool_get_node >> (static void finalize_decl (tree decl)): created from varpool_finalize_decl >> (static bool output_variables (void)): created from varpool_output_variables >> (static varpool_node * extra_name_alias (tree alias, tree decl)): >> created from varpool_extra_name_alias >> (static varpool_node * create_alias (tree, tree)): created from varpool_create_variable_alias >> (static void dump_varpool (FILE *f)): created from dump_varpool >> (static void DEBUG_FUNCTION debug_varpool (void)): created from debug_varpool >> (static varpool_node *create_empty (void)): created from varpool_create_empty_node >> (static varpool_node *symbol_for_decl (tree decl)): created from varpool_node_for_decl >> (static varpool_node *symbol_for_asmname (tree asmname)): created from varpool_node_for_asm >> (void assemble_aliases (void)): created from assemble_aliases >> >> + /* Dump given varpool node to F. */ >> + void dump (FILE *f); >> + >> + /* Dump given varpool node to stderr. */ >> + void DEBUG_FUNCTION debug (void); >> + >> + /* Remove variable from symbol table. */ >> + void remove (void); >> + >> + /* Return variable availability. */ >> + availability get_availability (void); >> + >> + /* For given variable pool node, walk the alias chain to return the function >> + the variable is alias of. Do not walk through thunks. >> + When AVAILABILITY is non-NULL, get minimal availability in the chain. */ >> + inline varpool_node *ultimate_alias_target >> + (availability *availability = NULL); >> + >> + /* Return node that alias is aliasing. */ >> + inline varpool_node *get_alias_target (void); >> + >> + /* For variables in named sections make sure get_variable_section >> + is called before we switch to those sections. Then section >> + conflicts between read-only and read-only requiring relocations >> + sections can be resolved. */ >> + void finalize_named_section_flags (void); > Quite special, so it should go bellow the other declarations. >> + >> + /* Output one variable, if necessary. Return whether we output it. */ >> + bool assemble_decl (void); >> + >> + void analyze (void); >> + >> + /* Call calback on varpool symbol and aliases associated to varpool symbol. >> + When INCLUDE_OVERWRITABLE is false, overwritable aliases and thunks are >> + skipped. */ >> + bool call_for_node_and_aliases (bool (*callback) (varpool_node *, void *), >> + void *data, >> + bool include_overwritable); >> + >> + /* Remove node initializer when it is no longer needed. */ >> + void remove_initializer (void); >> + >> + /* When doing LTO, read variable's constructor from disk if >> + it is not already present. */ >> + tree get_constructor (void); >> + >> + /* Return true when variable should be considered externally visible. */ >> + bool externally_visible_p (void); > We have flag and this helper function to set it. Probably the comment should > mention that this is not to be used except for varpool maintenance code. What function do you mean please? >> + >> + /* Return true if variable has constructor that can be used for folding. */ >> + bool ctor_useable_for_folding_p (void); > Group it with get_constructor and move earlier in the list (probably basic manipulation > first, constructor next, aliases and random predicates last) >> + >> + /* Return true when all references to variable must be visible >> + in ipa_ref_list. >> + i.e. if the variable is not externally visible or not used in some magic >> + way (asm statement or such). >> + The magic uses are all summarized in force_output flag. */ >> + inline bool all_refs_explicit_p (); >> + >> + /* Return true when variable can be removed from variable pool >> + if all direct calls are eliminated. */ >> + inline bool can_remove_if_no_refs_p (void); >> + >> + /* Return varpool node for given symbol and check it is a function. */ >> + static inline varpool_node *get (const_tree decl); >> + >> + /* Mark DECL as finalized. By finalizing the declaration, frontend instruct >> + the middle end to output the variable to asm file, if needed or externally >> + visible. */ >> + static void finalize_decl (tree decl); >> + >> + /* Output all variables enqueued to be assembled. */ >> + static bool output_variables (void); >> + >> + /* Attempt to mark ALIAS as an alias to DECL. Return TRUE if successful. >> + Extra name aliases are output whenever DECL is output. */ >> + static varpool_node * extra_name_alias (tree alias, tree decl); > create_extra_name_alias Renamed. >> + >> + /* Attempt to mark ALIAS as an alias to DECL. Return TRUE if successful. >> + Extra name aliases are output whenever DECL is output. */ >> + static varpool_node * create_alias (tree, tree); >> + >> + /* Dump the variable pool to F. */ >> + static void dump_varpool (FILE *f); >> + >> + /* Dump the variable pool to stderr. */ >> + static void DEBUG_FUNCTION debug_varpool (void); >> + >> + /* Allocate new callgraph node and insert it into basic data structures. */ >> + static varpool_node *create_empty (void); >> + >> + /* Return varpool node assigned to DECL. Create new one when needed. */ >> + static varpool_node *symbol_for_decl (tree decl); > This is equivalent of get_create in cgraph, so lets call it the same way. You are right, I found one more member that I renamed: get_for_asmname. I hope reorganization of varpool_node looks fine? Martin >> + >> + /* Given an assembler name, lookup node. */ >> + static varpool_node *symbol_for_asmname (tree asmname); > Also please double heck it match the cgraph equivalent. > > OK with those changes. > Honza