public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
To: "Martin Liška" <mliska@suse.cz>
Cc: Jeff Law <law@redhat.com>,
	Richard Biener <richard.guenther@gmail.com>,
	GCC Patches <gcc-patches@gcc.gnu.org>
Subject: Re: [PATCH 2/4] Remove unused functions and fields.
Date: Thu, 27 Sep 2018 11:18:00 -0000	[thread overview]
Message-ID: <20180927131337.1104d328@nbbrfq.loc> (raw)
In-Reply-To: <139d57c2-c70b-3852-0e20-8d19e6ae6bce@suse.cz>

[-- Attachment #1: Type: text/plain, Size: 5523 bytes --]

On Wed, 26 Sep 2018 10:59:02 +0200
Martin Liška <mliska@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 <mliska@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  <mliska@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  <mliska@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  <mliska@suse.cz>
> >>>>>
> >>>>>      * trans.c (remove_suffix): Remove
> >>>>>      unused function.
> >>>>>
> >>>>> gcc/go/ChangeLog:
> >>>>>
> >>>>> 2018-09-24  Martin Liska  <mliska@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?

[-- Attachment #2: unused_functions.py --]
[-- Type: text/x-python, Size: 3933 bytes --]

#!/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.");


[-- Attachment #3: fortran.txt --]
[-- Type: text/plain, Size: 8785 bytes --]

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

[-- Attachment #4: c.txt --]
[-- Type: text/plain, Size: 6705 bytes --]

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

[-- Attachment #5: cp.txt --]
[-- Type: text/plain, Size: 6476 bytes --]

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

  reply	other threads:[~2018-09-27 11:13 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-24  7:37 [PATCH 0/4] Clean-up warnings spotted by Rtags marxin
2018-09-24  7:37 ` [PATCH 3/4] Fix small coding style issues (PR fortran/87394) marxin
2018-09-24 14:39   ` Jeff Law
2018-09-24  7:37 ` [PATCH 4/4] Fix scaling of a sreal number marxin
2018-09-24 14:42   ` Jeff Law
2018-09-24  7:37 ` [PATCH 1/4] Add filter-rtags-warnings.py script marxin
2018-09-24 14:45   ` Jeff Law
2018-09-24  7:39 ` [PATCH 2/4] Remove unused functions and fields marxin
2018-09-24 14:42   ` Jeff Law
2018-09-25  7:18     ` Martin Liška
2018-09-25 12:31       ` Richard Biener
2018-09-25 13:40         ` Jeff Law
2018-09-26  9:01           ` Martin Liška
2018-09-27 11:18             ` Bernhard Reutner-Fischer [this message]
2018-10-03 16:46               ` Jeff Law
2018-10-03 19:35                 ` Bernhard Reutner-Fischer
2018-10-05  2:19                   ` Bernhard Reutner-Fischer
2018-10-05 13:41                     ` Martin Liška
2018-10-09  8:52                       ` [PATCH] Remove dead functions and fix VMS target by moving back some functions Martin Liška
2018-10-09 22:53                         ` Martin Jambor
2018-10-10 11:13                           ` Martin Liška
2018-10-10 11:17                             ` Martin Jambor
2018-10-18 23:55   ` [PATCH 2/4] Remove unused functions and fields Ian Lance Taylor
2018-10-22 13:05     ` Martin Liška
2018-10-22 17:50       ` Ian Lance Taylor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180927131337.1104d328@nbbrfq.loc \
    --to=rep.dot.nop@gmail.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=law@redhat.com \
    --cc=mliska@suse.cz \
    --cc=richard.guenther@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).