-
- Downloads
Add -Wdangling-pointer [PR63272].
Resolves: PR c/63272 - GCC should warn when using pointer to dead scoped variable with in the same function gcc/c-family/ChangeLog: PR c/63272 * c.opt (-Wdangling-pointer): New option. gcc/ChangeLog: PR c/63272 * diagnostic-spec.c (nowarn_spec_t::nowarn_spec_t): Handle -Wdangling-pointer. * doc/invoke.texi (-Wdangling-pointer): Document new option. * gimple-ssa-warn-access.cc (pass_waccess::clone): Set new member. (pass_waccess::check_pointer_uses): New function. (pass_waccess::gimple_call_return_arg): New function. (pass_waccess::gimple_call_return_arg_ref): New function. (pass_waccess::check_call_dangling): New function. (pass_waccess::check_dangling_uses): New function overloads. (pass_waccess::check_dangling_stores): New function. (pass_waccess::check_dangling_stores): New function. (pass_waccess::m_clobbers): New data member. (pass_waccess::m_func): New data member. (pass_waccess::m_run_number): New data member. (pass_waccess::m_check_dangling_p): New data member. (pass_waccess::check_alloca): Check m_early_checks_p. (pass_waccess::check_alloc_size_call): Same. (pass_waccess::check_strcat): Same. (pass_waccess::check_strncat): Same. (pass_waccess::check_stxcpy): Same. (pass_waccess::check_stxncpy): Same. (pass_waccess::check_strncmp): Same. (pass_waccess::check_memop_access): Same. (pass_waccess::check_read_access): Same. (pass_waccess::check_builtin): Call check_pointer_uses. (pass_waccess::warn_invalid_pointer): Add arguments. (is_auto_decl): New function. (pass_waccess::check_stmt): New function. (pass_waccess::check_block): Call check_stmt. (pass_waccess::execute): Call check_dangling_uses, check_dangling_stores. Empty m_clobbers. * passes.def (pass_warn_access): Invoke pass two more times. gcc/testsuite/ChangeLog: PR c/63272 * g++.dg/warn/Wfree-nonheap-object-6.C: Disable valid warnings. * g++.dg/warn/ref-temp1.C: Prune expected warning. * gcc.dg/uninit-pr50476.c: Expect a new warning. * c-c++-common/Wdangling-pointer-2.c: New test. * c-c++-common/Wdangling-pointer-3.c: New test. * c-c++-common/Wdangling-pointer-4.c: New test. * c-c++-common/Wdangling-pointer-5.c: New test. * c-c++-common/Wdangling-pointer-6.c: New test. * c-c++-common/Wdangling-pointer.c: New test. * g++.dg/warn/Wdangling-pointer-2.C: New test. * g++.dg/warn/Wdangling-pointer.C: New test. * gcc.dg/Wdangling-pointer-2.c: New test. * gcc.dg/Wdangling-pointer.c: New test.
Showing
- gcc/c-family/c.opt 8 additions, 0 deletionsgcc/c-family/c.opt
- gcc/diagnostic-spec.c 1 addition, 0 deletionsgcc/diagnostic-spec.c
- gcc/doc/invoke.texi 61 additions, 1 deletiongcc/doc/invoke.texi
- gcc/gimple-ssa-warn-access.cc 578 additions, 57 deletionsgcc/gimple-ssa-warn-access.cc
- gcc/passes.def 4 additions, 1 deletiongcc/passes.def
- gcc/testsuite/c-c++-common/Wdangling-pointer-2.c 437 additions, 0 deletionsgcc/testsuite/c-c++-common/Wdangling-pointer-2.c
- gcc/testsuite/c-c++-common/Wdangling-pointer-3.c 64 additions, 0 deletionsgcc/testsuite/c-c++-common/Wdangling-pointer-3.c
- gcc/testsuite/c-c++-common/Wdangling-pointer-4.c 73 additions, 0 deletionsgcc/testsuite/c-c++-common/Wdangling-pointer-4.c
- gcc/testsuite/c-c++-common/Wdangling-pointer-5.c 90 additions, 0 deletionsgcc/testsuite/c-c++-common/Wdangling-pointer-5.c
- gcc/testsuite/c-c++-common/Wdangling-pointer-6.c 32 additions, 0 deletionsgcc/testsuite/c-c++-common/Wdangling-pointer-6.c
- gcc/testsuite/c-c++-common/Wdangling-pointer.c 434 additions, 0 deletionsgcc/testsuite/c-c++-common/Wdangling-pointer.c
- gcc/testsuite/g++.dg/warn/Wdangling-pointer-2.C 23 additions, 0 deletionsgcc/testsuite/g++.dg/warn/Wdangling-pointer-2.C
- gcc/testsuite/g++.dg/warn/Wdangling-pointer.C 74 additions, 0 deletionsgcc/testsuite/g++.dg/warn/Wdangling-pointer.C
- gcc/testsuite/g++.dg/warn/Wfree-nonheap-object-6.C 3 additions, 1 deletiongcc/testsuite/g++.dg/warn/Wfree-nonheap-object-6.C
- gcc/testsuite/g++.dg/warn/ref-temp1.C 3 additions, 0 deletionsgcc/testsuite/g++.dg/warn/ref-temp1.C
- gcc/testsuite/gcc.dg/Wdangling-pointer-2.c 82 additions, 0 deletionsgcc/testsuite/gcc.dg/Wdangling-pointer-2.c
- gcc/testsuite/gcc.dg/Wdangling-pointer.c 75 additions, 0 deletionsgcc/testsuite/gcc.dg/Wdangling-pointer.c
- gcc/testsuite/gcc.dg/uninit-pr50476.c 1 addition, 1 deletiongcc/testsuite/gcc.dg/uninit-pr50476.c
Loading
Please register or sign in to comment