-
- Downloads
re PR c/18624 (GCC does not detect local variable set but never used)
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. From-SVN: r158086
Showing
- gcc/ChangeLog 35 additions, 0 deletionsgcc/ChangeLog
- gcc/c-common.c 8 additions, 1 deletiongcc/c-common.c
- gcc/c-decl.c 36 additions, 3 deletionsgcc/c-decl.c
- gcc/c-parser.c 47 additions, 30 deletionsgcc/c-parser.c
- gcc/c-tree.h 5 additions, 2 deletionsgcc/c-tree.h
- gcc/c-typeck.c 38 additions, 0 deletionsgcc/c-typeck.c
- gcc/common.opt 8 additions, 0 deletionsgcc/common.opt
- gcc/doc/invoke.texi 28 additions, 2 deletionsgcc/doc/invoke.texi
- gcc/objc/ChangeLog 7 additions, 0 deletionsgcc/objc/ChangeLog
- gcc/objc/objc-act.c 8 additions, 1 deletiongcc/objc/objc-act.c
- gcc/testsuite/ChangeLog 9 additions, 0 deletionsgcc/testsuite/ChangeLog
- gcc/testsuite/gcc.dg/Wunused-parm-1.c 29 additions, 0 deletionsgcc/testsuite/gcc.dg/Wunused-parm-1.c
- gcc/testsuite/gcc.dg/Wunused-var-1.c 179 additions, 0 deletionsgcc/testsuite/gcc.dg/Wunused-var-1.c
- gcc/testsuite/gcc.dg/Wunused-var-2.c 20 additions, 0 deletionsgcc/testsuite/gcc.dg/Wunused-var-2.c
- gcc/testsuite/gcc.dg/Wunused-var-3.c 37 additions, 0 deletionsgcc/testsuite/gcc.dg/Wunused-var-3.c
- gcc/testsuite/gcc.dg/Wunused-var-4.c 26 additions, 0 deletionsgcc/testsuite/gcc.dg/Wunused-var-4.c
- gcc/testsuite/gcc.dg/Wunused-var-5.c 33 additions, 0 deletionsgcc/testsuite/gcc.dg/Wunused-var-5.c
- gcc/testsuite/gcc.dg/Wunused-var-6.c 19 additions, 0 deletionsgcc/testsuite/gcc.dg/Wunused-var-6.c
- gcc/toplev.c 6 additions, 0 deletionsgcc/toplev.c
- gcc/tree.h 8 additions, 1 deletiongcc/tree.h
Loading
Please register or sign in to comment