This is the mail archive of the gcc-bugs@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]

[Bug c/18624] GCC does not detect local variable set but never used



------- Comment #23 from jakub at gcc dot gnu dot org  2010-04-07 20:34 -------
Subject: Bug 18624

Author: jakub
Date: Wed Apr  7 20:33:36 2010
New Revision: 158086

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=158086
Log:
        PR c/18624
        * tree.h (DECL_READ_P): Define.
        (struct tree_decl_common): Add decl_read_flag.
        * c-decl.c (pop_scope): If TREE_USED but !DECL_READ_P, issue
        a set but not used warning.
        (merge_decls): Merge DECL_READ_P flag.
        (finish_decl, build_compound_literal): Set DECL_READ_P flag.
        (finish_function): Issue -Wunused-but-set-parameter diagnostics.
        * c-common.c (handle_used_attribute, handle_unused_attribute):
        Likewise.
        * c-tree.h (default_function_array_read_conversion, mark_exp_read):
        New prototypes.
        * c-typeck.c (default_function_array_read_conversion, mark_exp_read):
        New functions.
        (default_conversion, c_process_expr_stmt): Call mark_exp_read.
        * c-parser.c (c_parser_initializer, c_parser_expr_no_commas,
        c_parser_binary_expression, c_parser_cast_expression,
        c_parser_expr_list, c_parser_omp_atomic, c_parser_omp_for_loop):
        Call default_function_array_read_conversion instead of
        default_function_array_conversion where needed.
        (c_parser_unary_expression, c_parser_conditional_expression,
        c_parser_postfix_expression_after_primary, c_parser_initelt):
        Likewise.  Call mark_exp_read where needed.
        (c_parser_statement_after_labels, c_parser_asm_operands,
        c_parser_typeof_specifier, c_parser_sizeof_expression,
        c_parser_alignof_expression, c_parser_initval): Call mark_exp_read
        where needed.
        * common.opt (Wunused-but-set-variable, Wunused-but-set-parameter):
        New.
        * toplev.c (warn_unused_but_set_variable): Default to warn_unused.
        (warn_unused_but_set_parameter): Default to warn_unused
        && extra_warnings.
        * doc/invoke.texi: Document -Wunused-but-set-variable and
        -Wunused-but-set-parameter.

        * objc-act.c (finish_var_decl, objc_begin_catch_clause,
        really_start_method, get_super_receiver, handle_class_ref): Set
        DECL_READ_P in addition to TREE_USED.

        * gcc.dg/Wunused-var-1.c: New test.
        * gcc.dg/Wunused-var-2.c: New test.
        * gcc.dg/Wunused-var-3.c: New test.
        * gcc.dg/Wunused-var-4.c: New test.
        * gcc.dg/Wunused-var-5.c: New test.
        * gcc.dg/Wunused-var-6.c: New test.
        * gcc.dg/Wunused-parm-1.c: New test.

Added:
    trunk/gcc/testsuite/gcc.dg/Wunused-parm-1.c
    trunk/gcc/testsuite/gcc.dg/Wunused-var-1.c
    trunk/gcc/testsuite/gcc.dg/Wunused-var-2.c
    trunk/gcc/testsuite/gcc.dg/Wunused-var-3.c
    trunk/gcc/testsuite/gcc.dg/Wunused-var-4.c
    trunk/gcc/testsuite/gcc.dg/Wunused-var-5.c
    trunk/gcc/testsuite/gcc.dg/Wunused-var-6.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/c-common.c
    trunk/gcc/c-decl.c
    trunk/gcc/c-parser.c
    trunk/gcc/c-tree.h
    trunk/gcc/c-typeck.c
    trunk/gcc/common.opt
    trunk/gcc/doc/invoke.texi
    trunk/gcc/objc/ChangeLog
    trunk/gcc/objc/objc-act.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/toplev.c
    trunk/gcc/tree.h


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18624


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