On Wed, 26 Sep 2018 10:59:02 +0200 Martin Liška <mli...@suse.cz> wrote:
> On 9/25/18 3:34 PM, Jeff Law wrote: > > On 9/25/18 6:19 AM, Richard Biener wrote: > >> On Tue, Sep 25, 2018 at 9:09 AM Martin Liška <mli...@suse.cz> > >> wrote: > >>> > >>> On 9/24/18 4:42 PM, Jeff Law wrote: > >>>> On 9/22/18 1:08 PM, marxin wrote: > >>>>> > >>>>> gcc/ChangeLog: > >>>>> > >>>>> 2018-09-24 Martin Liska <mli...@suse.cz> > >>>>> > >>>>> * alias.c (set_dest_equal_p): Remove unused function. > >>>>> * config/i386/i386.c (def_builtin_pure2): Likewise. > >>>>> * diagnostic-show-locus.c (class layout): Remove > >>>>> unused field. > >>>>> (layout::layout): Likewise here. > >>>>> * dump-context.h (class temp_dump_context): Likewise. > >>>>> * dwarf2out.c (add_AT_fde_ref): Remove unused function. > >>>>> (add_AT_loclistsptr): Likewise. > >>>>> (add_AT_offset): Likewise. > >>>>> (get_AT_hi_pc): Likewise. > >>>>> (is_comdat_die): Likewise. > >>>>> (type_is_enum): Likewise. > >>>>> (ceiling): Likewise. > >>>>> (add_AT_vms_delta): Likewise. > >>>>> (is_class_die): Likewise. > >>>>> * edit-context.c (class line_event): Remove unused field. > >>>>> * graphite-sese-to-poly.c (tree_int_to_gmp): Remove > >>>>> unused function. > >>>>> * ipa-cp.c (ipa_get_vr_lat): Likewise. > >>>>> * lra-constraints.c (ok_for_index_p_nonstrict): Likewise. > >>>>> (ok_for_base_p_nonstrict): Likewise. > >>>>> * tree-chrec.c (is_not_constant_evolution): Likewise. > >>>>> (chrec_fold_poly_cst): Likewise. > >>>>> * tree-if-conv.c (has_pred_critical_p): Likewise. > >>>>> * tree-ssa-coalesce.c (print_exprs): Likewise. > >>>>> * tree-ssa-pre.c (bitmap_set_contains_expr): Likewise. > >>>>> * tree-ssa-uninit.c (is_and_or_or_p): Likewise. > >>>>> * tree-vrp.c (value_ranges_intersect_p): Likewise. > >>>>> (value_range_nonnegative_p): Likewise. > >>>>> > >>>>> gcc/cp/ChangeLog: > >>>>> > >>>>> 2018-09-24 Martin Liska <mli...@suse.cz> > >>>>> > >>>>> * name-lookup.c (namespace_scope_ht_size): Remove > >>>>> unused function. > >>>>> * parser.c (cp_lexer_next_token_is_not_keyword): Likewise. > >>>>> > >>>>> gcc/fortran/ChangeLog: > >>>>> > >>>>> 2018-09-24 Martin Liska <mli...@suse.cz> > >>>>> > >>>>> * trans.c (remove_suffix): Remove > >>>>> unused function. > >>>>> > >>>>> gcc/go/ChangeLog: > >>>>> > >>>>> 2018-09-24 Martin Liska <mli...@suse.cz> > >>>>> > >>>>> * gofrontend/escape.cc (Gogo::analyze_escape): Remove > >>>>> usage of a parameter. > >>>>> (Gogo::assign_connectivity): Likewise. > >>>>> (class Escape_analysis_tag): Likewise. > >>>>> (Gogo::tag_function): Likewise. > >>>>> * gofrontend/expressions.cc (Call_expression::do_type): > >>>>> Likewise. > >>>>> * gofrontend/gogo.h (class Gogo): Likewise. > >>>>> * gofrontend/types.cc (class Call_multiple_result_type): > >>>>> Likewise. (Type::make_call_multiple_result_type): Likewise. > >>>>> * gofrontend/types.h (class Type): Likewise. > >>>>> * gofrontend/wb.cc (class Check_escape): Likewise. > >>>>> (Gogo::add_write_barriers): Likewise. > >>>> Note that some of these may be used inside conditional code. For > >>>> example the add_AT_vms_delta is used by ia64-vms. You could > >>>> argue that ia64-vms is a zombie and should be removed, but the > >>>> general concern WRT conditionally compiled code holds. > >>> > >>> Well, please let me install the patch as is and if somebody will > >>> need the functionality, I would be happy to put it back. > >> > >> You could use contrib/config-list.mk to build all supported target > >> configs. You shouldn't break builds for valid configs > >> deliberately > > Right. On a suitably large box it only takes a few hours. Fire > > it off at the end of the day and you've got results in the morning. > > > > So how about this, if it passes config-list.mk then it's OK. > > Obviously it's OK to retain any functions that are flagged as > > necessary by config-list.mk. > > > > Alternately find + grep is your friend, but I find config-list.mk > > is better. > > > > jeff > > > > Ok, next time I would be more careful about testing of other targets. > > Thanks, > Martin Although not perfect, but may i suggest to consider putting the attached contrib/unused_functions.py into our tree? Just for fun i'm attaching output for fortran, c, cp as per the "Examples" comment in the header of the script. sample line for cp: gcc/cp/cvt.o: Symbol 'cp_get_callee_fndecl(tree_node*)' declared extern but never referenced externally sample for c: gcc/c/c-decl.o: Symbol 'pending_invalid_xref_location' declared extern but never referenced externally gcc/c/c-decl.o: Symbol 'pending_invalid_xref' declared extern but never referenced externally I may find time to take care of the fortran spots later on, fwiw. As per the comment inline, one could add support for extracting archive-members. This would allow to optionally put the script near the actual linking of e.g the compilers to see unwarranted extern symbols quickly. But OTOH maybe that's a bit too much. :) HTH PS: I have to admit that flagging unused fields is a nice thing. Does somebody know of an existing gcc plugin that does that? Or a secret LTO knob to track or flag these?
#!/usr/bin/env python # # Copyright (c) 2018 Bernhard Reutner-Fischer # Inspired by bloat-o-meter from busybox. # This software may be used and distributed according to the terms and # conditions of the GNU General Public License as published by the Free # Software Foundation. # Examples: # unused_functions.py ./gcc/fortran # unused_functions.py gcc/c gcc/c-family/ gcc/*-c.o | egrep -v "'gt_" # unused_functions.py gcc/cp gcc/c-family/ gcc/*-c.o | egrep -v "'gt_" import sys, os def usage(): sys.stderr.write("usage: %s [dirs | files] [-- <readelf options>]\n" % sys.argv[0]) sys.exit(1) (odir, sym_args) = (set(), "") for i in range(1, len(sys.argv)): f = sys.argv[i] if f == "--": # sym_args sym_args = " ".join(sys.argv[i + 1:]) break if not os.path.exists(f): sys.stderr.write("Error: No such file or directory '%s'\n" % f) usage() else: odir.add(f) def get_symbols(file): syms = {} for l in os.popen("readelf -W -s %s %s | c++filt" % (sym_args, file)).readlines(): l = l.strip() if not (len(l) and l[0].isdigit() and len(l.split()) == 8): continue num, value, size, typ, bind, vis, ndx, name = l.split() if typ == 'SECTION' or typ == 'FILE': continue # I don't think we have many aliases in gcc, re-instate the addr # lut otherwise. if vis != "DEFAULT": continue #value = int(value, 16) #size = int(size, 16) if size.startswith('0x') else int(size) defined = ndx != "UND" globl = bind == "GLOBAL" # c++ RID_FUNCTION_NAME dance. FORNOW: Handled as local use # Is that correct? if name.endswith("::__FUNCTION__") and typ == "OBJECT": name = name[0:(len(name) - len("::__FUNCTION__"))] if defined: defined = False # that can't be right... if defined and not globl: continue syms.setdefault(name, {}) syms[name][["use","def"][defined]] = True syms[name][["local","global"][globl]] = True # Note: we could filter out e.g. debug_* symbols by looking for # value in the debug_macro sections. return syms (oprog, nprog) = ({}, {}) def walker(paths): prog = {} for path in paths: if os.path.isdir(path): for r, dirs, files in os.walk(path): for f in files: # TODO: maybe extract .a if not f.endswith(".o"): continue p = os.path.join(r, f) prog[os.path.normpath(p)] = get_symbols(p) for d in dirs: tem = prog.copy() tem.update(walker([os.path.join(r, d)])) prog = tem else: prog[os.path.normpath(path)] = get_symbols(path) return prog def resolve(prog): x = prog.keys() use = set() # for each unique pair of different files for (f, g) in ((f,g) for f in x for g in x if f != g): refs = set() # for each defined symbol #for s in (s for s in prog[f] if prog[f][s] and s not in use # and s in prog[g]): for s in (s for s in prog[f] if prog[f][s].get("def") and s in prog[g]): #if prog[g][s].get("def") and prog[g][s].get("global"): # print("Error: Duplicate global %s in %s and %s" % (s, f, g)) #elif prog[g][s].get("use"): if prog[g][s].get("use"): refs.add(s) for s in refs: for i in (i for i in x if s in prog[i]): del prog[i][s] use |= refs return use oprog = walker(odir) oused = resolve(oprog) for (i,s) in ((i,s) for i in oprog.keys() for s in oprog[i] if oprog[i][s]): if oprog[i][s].get("def") and not oprog[i][s].get("use"): print("%s: Symbol '%s' declared extern but never referenced externally" % (i,s)) #print("Done.");
gcc/fortran/resolve.o: Symbol 'gfc_elemental(gfc_symbol*)' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_pch_nx_lang_type(void*)' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_ggc_r_gtype_fortran_h' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_pch_nx_binding_level(void*)' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_ggc_mx(module_htab_entry&)' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_pch_nx_hash_table_module_decl_hasher_(void*)' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_ggc_mx_module_htab_entry(void*)' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_pch_nx_lang_decl(void*)' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_pch_rs_gtype_fortran_h' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_pch_nx(module_htab_entry&)' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_ggc_mx_hash_table_module_decl_hasher_(void*)' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_ggc_mx(module_decl_hasher&)' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_ggc_r_gt_fortran_f95_lang_h' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_ggc_deletable_rtab' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_ggc_mx_language_function(void*)' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_pch_nx(module_decl_hasher&)' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_pch_scalar_rtab' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_ggc_rtab' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_pch_nx_language_function(void*)' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_ggc_mx_binding_level(void*)' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_ggc_mx_lang_decl(void*)' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_clear_caches()' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_ggc_mx_lang_type(void*)' declared extern but never referenced externally gcc/fortran/f95-lang.o: Symbol 'gt_pch_nx_module_htab_entry(void*)' declared extern but never referenced externally gcc/fortran/module.o: Symbol 'mio_symbol_ref(gfc_symbol**)' declared extern but never referenced externally gcc/fortran/module.o: Symbol 'mio_interface_rest(gfc_interface**)' declared extern but never referenced externally gcc/fortran/class.o: Symbol 'gfc_intrinsic_hash_value(gfc_typespec*)' declared extern but never referenced externally gcc/fortran/decl.o: Symbol 'gfc_insert_kind_parameter_exprs(gfc_expr*)' declared extern but never referenced externally gcc/fortran/decl.o: Symbol 'gfc_match_old_kind_spec(gfc_typespec*)' declared extern but never referenced externally gcc/fortran/decl.o: Symbol 'gfc_mod_pointee_as(gfc_array_spec*)' declared extern but never referenced externally gcc/fortran/decl.o: Symbol 'get_bind_c_idents()' declared extern but never referenced externally gcc/fortran/decl.o: Symbol 'gfc_match_null(gfc_expr**)' declared extern but never referenced externally gcc/fortran/expr.o: Symbol 'is_non_empty_structure_constructor(gfc_expr*)' declared extern but never referenced externally gcc/fortran/gfortranspec.o: Symbol 'lang_specific_pre_link()' declared extern but never referenced externally gcc/fortran/gfortranspec.o: Symbol 'lang_specific_extra_outfiles' declared extern but never referenced externally gcc/fortran/trans.o: Symbol 'gfc_msg_wrong_return' declared extern but never referenced externally gcc/fortran/symbol.o: Symbol 'gfc_get_ultimate_derived_super_type(gfc_symbol*)' declared extern but never referenced externally gcc/fortran/primary.o: Symbol 'matching_actual_arglist' declared extern but never referenced externally gcc/fortran/simplify.o: Symbol 'simplify_ieee_support(gfc_expr*)' declared extern but never referenced externally gcc/fortran/simplify.o: Symbol 'simplify_ieee_selected_real_kind(gfc_expr*)' declared extern but never referenced externally gcc/fortran/simplify.o: Symbol 'gfc_simplify_get_team(gfc_expr*)' declared extern but never referenced externally gcc/fortran/trans-types.o: Symbol 'gfc_check_any_c_kind(gfc_typespec*)' declared extern but never referenced externally gcc/fortran/trans-types.o: Symbol 'gfc_get_ppc_type(gfc_component*)' declared extern but never referenced externally gcc/fortran/trans-types.o: Symbol 'dtype_type_node' declared extern but never referenced externally gcc/fortran/trans-types.o: Symbol 'pfunc_type_node' declared extern but never referenced externally gcc/fortran/dump-parse-tree.o: Symbol 'gfc_debug_code(gfc_code*)' declared extern but never referenced externally gcc/fortran/dump-parse-tree.o: Symbol 'gfc_debug_expr(gfc_expr*)' declared extern but never referenced externally gcc/fortran/trans-decl.o: Symbol 'gt_ggc_mx_hash_table_module_hasher_(void*)' declared extern but never referenced externally gcc/fortran/trans-decl.o: Symbol 'gfor_fndecl_set_args' declared extern but never referenced externally gcc/fortran/trans-decl.o: Symbol 'gt_pch_nx_hash_table_module_hasher_(void*)' declared extern but never referenced externally gcc/fortran/trans-decl.o: Symbol 'gfor_fndecl_set_max_subrecord_length' declared extern but never referenced externally gcc/fortran/trans-decl.o: Symbol 'gfor_fndecl_set_convert' declared extern but never referenced externally gcc/fortran/trans-decl.o: Symbol 'gt_pch_nx(module_hasher&)' declared extern but never referenced externally gcc/fortran/trans-decl.o: Symbol 'gfor_fndecl_set_record_marker' declared extern but never referenced externally gcc/fortran/trans-decl.o: Symbol 'gt_ggc_mx(module_hasher&)' declared extern but never referenced externally gcc/fortran/match.o: Symbol 'type_param_spec_list' declared extern but never referenced externally gcc/fortran/match.o: Symbol 'gfc_match_label()' declared extern but never referenced externally gcc/fortran/trans-expr.o: Symbol 'gfc_class_vtab_hash_get(tree_node*)' declared extern but never referenced externally gcc/fortran/trans-expr.o: Symbol 'gfc_class_vtab_extends_get(tree_node*)' declared extern but never referenced externally gcc/fortran/trans-expr.o: Symbol 'gfc_class_vtab_deallocate_get(tree_node*)' declared extern but never referenced externally gcc/fortran/trans-expr.o: Symbol 'gfc_vptr_def_init_get(tree_node*)' declared extern but never referenced externally gcc/fortran/trans-expr.o: Symbol 'gfc_vptr_hash_get(tree_node*)' declared extern but never referenced externally gcc/fortran/trans-expr.o: Symbol 'gfc_vptr_final_get(tree_node*)' declared extern but never referenced externally gcc/fortran/trans-expr.o: Symbol 'gfc_class_vtab_def_init_get(tree_node*)' declared extern but never referenced externally gcc/fortran/trans-expr.o: Symbol 'gfc_vptr_copy_get(tree_node*)' declared extern but never referenced externally gcc/fortran/trans-expr.o: Symbol 'gfc_class_vtab_copy_get(tree_node*)' declared extern but never referenced externally gcc/fortran/trans-expr.o: Symbol 'gfc_vptr_extends_get(tree_node*)' declared extern but never referenced externally gcc/fortran/constructor.o: Symbol 'gfc_constructor_get_base()' declared extern but never referenced externally gcc/fortran/scanner.o: Symbol 'file_changes_count' declared extern but never referenced externally gcc/fortran/scanner.o: Symbol 'file_changes_allocated' declared extern but never referenced externally gcc/fortran/scanner.o: Symbol 'file_changes_cur' declared extern but never referenced externally gcc/fortran/frontend-passes.o: Symbol 'evec' declared extern but never referenced externally gcc/fortran/frontend-passes.o: Symbol 'stack_top' declared extern but never referenced externally gcc/fortran/frontend-passes.o: Symbol 'n_vars' declared extern but never referenced externally gcc/fortran/trans-openmp.o: Symbol 'gfc_trans_oacc_declare(gfc_code*)' declared extern but never referenced externally gcc/fortran/cpp.o: Symbol 'gfc_cpp_register_include_paths()' declared extern but never referenced externally gcc/fortran/cpp.o: Symbol 'gfc_cpp_option' declared extern but never referenced externally gcc/fortran/openmp.o: Symbol 'gfc_free_omp_declare_simd(gfc_omp_declare_simd*)' declared extern but never referenced externally gcc/fortran/openmp.o: Symbol 'gfc_free_expr_list(gfc_expr_list*)' declared extern but never referenced externally
gcc/c-family/c-format.o: Symbol 'argument_parser::read_any_length_modifier()' declared extern but never referenced externally gcc/c-family/c-format.o: Symbol 'flag_chars_t::flag_chars_t()' declared extern but never referenced externally gcc/c-family/c-format.o: Symbol 'flag_chars_t::add_char(char)' declared extern but never referenced externally gcc/c-family/c-format.o: Symbol 'argument_parser::read_any_format_left_precision()' declared extern but never referenced externally gcc/c-family/c-format.o: Symbol 'argument_parser::find_format_char_info(char)' declared extern but never referenced externally gcc/c-family/c-format.o: Symbol 'argument_parser::read_any_other_modifier()' declared extern but never referenced externally gcc/c-family/c-format.o: Symbol 'argument_parser::read_any_dollar()' declared extern but never referenced externally gcc/c-family/c-format.o: Symbol 'argument_parser::handle_alloc_chars()' declared extern but never referenced externally gcc/c-family/c-format.o: Symbol 'argument_parser::read_format_flags()' declared extern but never referenced externally gcc/c-family/c-lex.o: Symbol 'c_header_level' declared extern but never referenced externally gcc/c-family/c-lex.o: Symbol 'dump_time_statistics()' declared extern but never referenced externally gcc/c-family/c-pch.o: Symbol 'lang_post_pch_load' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'debug_c_tree(tree_node*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'pp_c_complement(c_pretty_printer*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'pp_c_left_brace(c_pretty_printer*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'pp_c_exclamation(c_pretty_printer*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'c_pretty_printer::initializer(tree_node*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'pp_c_right_brace(c_pretty_printer*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'pp_c_star(c_pretty_printer*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'pp_c_left_paren(c_pretty_printer*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'pp_c_ampersand(c_pretty_printer*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'c_pretty_printer::declaration(tree_node*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'pp_c_right_bracket(c_pretty_printer*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'c_pretty_printer::statement(tree_node*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'pp_c_dot(c_pretty_printer*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'pp_c_left_bracket(c_pretty_printer*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'pp_c_arrow(c_pretty_printer*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'pp_c_semicolon(c_pretty_printer*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'pp_c_right_paren(c_pretty_printer*)' declared extern but never referenced externally gcc/c-family/known-headers.o: Symbol 'suggest_missing_header::~suggest_missing_header()' declared extern but never referenced externally gcc/c-family/stub-objc.o: Symbol 'objc_generate_static_init_call(tree_node*)' declared extern but never referenced externally gcc/c-family/stub-objc.o: Symbol 'objc_static_init_needed_p()' declared extern but never referenced externally gcc/c-family/stub-objc.o: Symbol 'objc_is_id(tree_node*)' declared extern but never referenced externally gcc/c-family/c-common.o: Symbol 'keyword_is_decl_specifier(rid)' declared extern but never referenced externally gcc/c-family/c-common.o: Symbol 'keyword_is_type_qualifier(rid)' declared extern but never referenced externally gcc/c-family/c-common.o: Symbol 'registered_builtin_types' declared extern but never referenced externally gcc/c-family/c-common.o: Symbol 'done_lexing' declared extern but never referenced externally gcc/c-family/c-common.o: Symbol 'keyword_is_storage_class_specifier(rid)' declared extern but never referenced externally gcc/c-family/c-common.o: Symbol 'keyword_begins_type_specifier(rid)' declared extern but never referenced externally gcc/c-family/c-common.o: Symbol 'make_tree_vector_single(tree_node*)' declared extern but never referenced externally gcc/c/c-decl.o: Symbol 'objc_mark_locals_volatile(void*)' declared extern but never referenced externally gcc/c/c-decl.o: Symbol 'pending_invalid_xref_location' declared extern but never referenced externally gcc/c/c-decl.o: Symbol 'pending_invalid_xref' declared extern but never referenced externally gcc/c/c-decl.o: Symbol 'objc_get_current_scope()' declared extern but never referenced externally gcc/c/c-decl.o: Symbol 'store_parm_decls_from(c_arg_info*)' declared extern but never referenced externally gcc/c/c-decl.o: Symbol 'c_binding_oracle' declared extern but never referenced externally gcc/c/gccspec.o: Symbol 'lang_specific_pre_link()' declared extern but never referenced externally gcc/c/gccspec.o: Symbol 'lang_specific_extra_outfiles' declared extern but never referenced externally gcc/c/c-lang.o: Symbol 'selftest::run_c_tests()' declared extern but never referenced externally gcc/c-family/c-attribs.o: Symbol 'tm_attr_to_mask(tree_node*)' declared extern but never referenced externally gcc/c-family/c-pragma.o: Symbol 'pop_visibility(int)' declared extern but never referenced externally gcc/c-family/c-pragma.o: Symbol 'pragma_extern_prefix' declared extern but never referenced externally gcc/c/c-parser.o: Symbol 'matching_paren_traits::open_gmsgid' declared extern but never referenced externally gcc/c/c-parser.o: Symbol 'matching_paren_traits::close_gmsgid' declared extern but never referenced externally gcc/c/c-parser.o: Symbol 'matching_brace_traits::close_gmsgid' declared extern but never referenced externally gcc/c/c-parser.o: Symbol 'matching_brace_traits::open_gmsgid' declared extern but never referenced externally gcc/c-family/c-opts.o: Symbol 'c_family_lang_mask' declared extern but never referenced externally gcc/c-family/cppspec.o: Symbol 'lang_specific_pre_link()' declared extern but never referenced externally gcc/c-family/cppspec.o: Symbol 'lang_specific_extra_outfiles' declared extern but never referenced externally
gcc/c-family/c-format.o: Symbol 'argument_parser::read_any_length_modifier()' declared extern but never referenced externally gcc/c-family/c-format.o: Symbol 'flag_chars_t::flag_chars_t()' declared extern but never referenced externally gcc/c-family/c-format.o: Symbol 'flag_chars_t::add_char(char)' declared extern but never referenced externally gcc/c-family/c-format.o: Symbol 'argument_parser::read_any_format_left_precision()' declared extern but never referenced externally gcc/c-family/c-format.o: Symbol 'argument_parser::find_format_char_info(char)' declared extern but never referenced externally gcc/c-family/c-format.o: Symbol 'argument_parser::read_any_other_modifier()' declared extern but never referenced externally gcc/c-family/c-format.o: Symbol 'argument_parser::read_any_dollar()' declared extern but never referenced externally gcc/c-family/c-format.o: Symbol 'argument_parser::handle_alloc_chars()' declared extern but never referenced externally gcc/c-family/c-format.o: Symbol 'argument_parser::read_format_flags()' declared extern but never referenced externally gcc/cp/constraint.o: Symbol 'constraint_thresh' declared extern but never referenced externally gcc/cp/constraint.o: Symbol 'constraint_errors' declared extern but never referenced externally gcc/c-family/c-lex.o: Symbol 'c_header_level' declared extern but never referenced externally gcc/cp/g++spec.o: Symbol 'lang_specific_extra_outfiles' declared extern but never referenced externally gcc/cp/g++spec.o: Symbol 'lang_specific_pre_link()' declared extern but never referenced externally gcc/cp/ptree.o: Symbol 'debug_tree(cp_expr)' declared extern but never referenced externally gcc/cp/cvt.o: Symbol 'cp_get_callee_fndecl(tree_node*)' declared extern but never referenced externally gcc/cp/lex.o: Symbol 'init_reswords()' declared extern but never referenced externally gcc/c-family/known-headers.o: Symbol 'suggest_missing_header::~suggest_missing_header()' declared extern but never referenced externally gcc/c-family/stub-objc.o: Symbol 'objc_check_global_decl(tree_node*)' declared extern but never referenced externally gcc/c-family/stub-objc.o: Symbol 'objc_detect_field_duplicates(bool)' declared extern but never referenced externally gcc/c-family/stub-objc.o: Symbol 'objc_check_decl(tree_node*)' declared extern but never referenced externally gcc/cp/except.o: Symbol 'eh_type_info(tree_node*)' declared extern but never referenced externally gcc/cp/parser.o: Symbol 'debug(cp_token&)' declared extern but never referenced externally gcc/cp/parser.o: Symbol 'debug(cp_token*)' declared extern but never referenced externally gcc/cp/parser.o: Symbol 'debug(cp_parser*)' declared extern but never referenced externally gcc/cp/parser.o: Symbol 'no_parameters' declared extern but never referenced externally gcc/cp/parser.o: Symbol 'debug(cp_parser&)' declared extern but never referenced externally gcc/c-family/c-common.o: Symbol 'c_default_pointer_mode' declared extern but never referenced externally gcc/c-family/c-common.o: Symbol 'c_common_init_ts()' declared extern but never referenced externally gcc/c-family/c-common.o: Symbol 'keyword_is_type_qualifier(rid)' declared extern but never referenced externally gcc/c-family/c-common.o: Symbol 'keyword_is_storage_class_specifier(rid)' declared extern but never referenced externally gcc/cp/decl.o: Symbol 'objc_get_current_scope()' declared extern but never referenced externally gcc/c-family/c-pragma.o: Symbol 'pragma_extern_prefix' declared extern but never referenced externally gcc/c-family/c-pragma.o: Symbol 'valid_location_for_stdc_pragma_p()' declared extern but never referenced externally gcc/c-family/c-pragma.o: Symbol 'mark_valid_location_for_stdc_pragma(bool)' declared extern but never referenced externally gcc/cp/tree.o: Symbol 'verify_stmt_tree(tree_node*)' declared extern but never referenced externally gcc/cp/tree.o: Symbol 'count_trees(tree_node*)' declared extern but never referenced externally gcc/cp/vtable-class-hierarchy.o: Symbol 'vtv_register_class_hierarchy_information(tree_node*)' declared extern but never referenced externally gcc/cp/pt.o: Symbol 'tinst_level::refcount_infinity' declared extern but never referenced externally gcc/cp/pt.o: Symbol 'spec_hasher::hash(spec_entry*)' declared extern but never referenced externally gcc/cp/pt.o: Symbol 'depth_reached' declared extern but never referenced externally gcc/cp/pt.o: Symbol 'tinst_level::free(tinst_level*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'debug_c_tree(tree_node*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'pp_c_exclamation(c_pretty_printer*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'pp_c_ampersand(c_pretty_printer*)' declared extern but never referenced externally gcc/c-family/c-pretty-print.o: Symbol 'c_pretty_printer::declaration(tree_node*)' declared extern but never referenced externally gcc/c-family/c-opts.o: Symbol 'c_family_lang_mask' declared extern but never referenced externally gcc/cp/constexpr.o: Symbol 'is_static_init_expression(tree_node*)' declared extern but never referenced externally gcc/cp/constexpr.o: Symbol 'is_constant_expression(tree_node*)' declared extern but never referenced externally gcc/cp/cxx-pretty-print.o: Symbol 'cxx_pretty_printer::declarator(tree_node*)' declared extern but never referenced externally gcc/cp/class.o: Symbol 'debug_thunks(tree_node*)' declared extern but never referenced externally gcc/cp/class.o: Symbol 'debug_class(tree_node*)' declared extern but never referenced externally gcc/cp/class.o: Symbol 'declared_access(tree_node*)' declared extern but never referenced externally gcc/c-family/cppspec.o: Symbol 'lang_specific_pre_link()' declared extern but never referenced externally gcc/c-family/cppspec.o: Symbol 'lang_specific_extra_outfiles' declared extern but never referenced externally gcc/cp/name-lookup.o: Symbol 'name_lookup::shared_scopes' declared extern but never referenced externally gcc/cp/name-lookup.o: Symbol 'debug(cp_binding_level&)' declared extern but never referenced externally gcc/cp/name-lookup.o: Symbol 'name_lookup::active' declared extern but never referenced externally gcc/cp/name-lookup.o: Symbol 'debug(cp_binding_level*)' declared extern but never referenced externally gcc/cp/cp-lang.o: Symbol 'selftest::run_cp_tests()' declared extern but never referenced externally