From 6b927b1297e66e26e62e722bf15c921dcbbd25b9 Mon Sep 17 00:00:00 2001 From: Marek Polacek <polacek@redhat.com> Date: Tue, 2 May 2023 15:48:40 -0400 Subject: [PATCH] c++: Move -Wdangling-reference to -Wextra [PR109642] Sadly, -Wdangling-reference generates false positives for std::span-like user classes, and it seems imprudent to attempt to improve the heuristic in GCC 13. Let's move the warning to -Wextra, that will hopefully reduce the number of false positives the users have been seeing with 13. I'm leaving the warning in -Wall in 14 where I think I can write code to detect std::span-like classes. PR c++/109642 PR c++/109640 PR c++/109671 gcc/c-family/ChangeLog: * c.opt (Wdangling-reference): Move from -Wall to -Wextra. gcc/ChangeLog: * doc/invoke.texi: Document that -Wdangling-reference is enabled by -Wextra. --- gcc/c-family/c.opt | 2 +- gcc/doc/invoke.texi | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt index 3333cddeece7..a75038930aef 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt @@ -560,7 +560,7 @@ C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_dangling_pointer) Warn Warn for uses of pointers to auto variables whose lifetime has ended. Wdangling-reference -C++ ObjC++ Var(warn_dangling_reference) Warning LangEnabledBy(C++ ObjC++, Wall) +C++ ObjC++ Var(warn_dangling_reference) Warning LangEnabledBy(C++ ObjC++, Wextra) Warn when a reference is bound to a temporary whose lifetime has ended. Wdate-time diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index a38547f53e53..36ed15914409 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -3781,7 +3781,7 @@ where @code{std::minmax} returns @code{std::pair<const int&, const int&>}, and both references dangle after the end of the full expression that contains the call to @code{std::minmax}. -This warning is enabled by @option{-Wall}. +This warning is enabled by @option{-Wextra}. @opindex Wdelete-non-virtual-dtor @opindex Wno-delete-non-virtual-dtor @@ -6126,6 +6126,7 @@ name is still supported, but the newer name is more descriptive.) @gccoptlist{-Wclobbered -Wcast-function-type +-Wdangling-reference @r{(C++ only)} -Wdeprecated-copy @r{(C++ only)} -Wempty-body -Wenum-conversion @r{(C only)} -- GitLab