public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/107310] New: "warning: control reaches end of non-void function" with a throw under a trivially-true conditional
@ 2022-10-18 20:23 lvoege at gmail dot com
2022-10-19 0:38 ` [Bug c++/107310] [12/13 Regression] " pinskia at gcc dot gnu.org
` (9 more replies)
0 siblings, 10 replies; 11+ messages in thread
From: lvoege at gmail dot com @ 2022-10-18 20:23 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107310
Bug ID: 107310
Summary: "warning: control reaches end of non-void function"
with a throw under a trivially-true conditional
Product: gcc
Version: 12.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: lvoege at gmail dot com
Target Milestone: ---
Created attachment 53727
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=53727&action=edit
preprocessed test case
gcc 12 starting with revision a3e75c14 gives "warning: control reaches end of
non-void function" for the following contrived and I think minimal test case
when compiling without optimization. the preprocessed .ii file is attached for
completeness. remove any bit of it and it stops complaining.
#include <mutex>
std::mutex m;
int t;
int foo() {
std::lock_guard guard(m);
switch (t) {
case 1: return 1;
}
if (true) {
throw std::runtime_error("!");
}
}
this is on ubuntu, but a build from source does the same, as does yesterday's
trunk:
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 12.2.0-3ubuntu1'
--with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs
--enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr
--with-gcc-major-version-only --program-suffix=-12
--program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new
--enable-gnu-unique-object --disable-vtable-verify --enable-plugin
--enable-default-pie --with-system-zlib --enable-libphobos-checking=release
--with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch
--disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64
--with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic
--enable-offload-targets=nvptx-none=/build/gcc-12-U8K4Qv/gcc-12-12.2.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-12-U8K4Qv/gcc-12-12.2.0/debian/tmp-gcn/usr
--enable-offload-defaulted --without-cuda-driver --enable-checking=release
--build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.2.0 (Ubuntu 12.2.0-3ubuntu1)
$ gcc -c foo3.cpp
foo3.cpp: In function ‘int foo()’:
foo3.cpp:14:1: warning: control reaches end of non-void function
[-Wreturn-type]
14 | }
| ^
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c++/107310] [12/13 Regression] "warning: control reaches end of non-void function" with a throw under a trivially-true conditional
2022-10-18 20:23 [Bug c++/107310] New: "warning: control reaches end of non-void function" with a throw under a trivially-true conditional lvoege at gmail dot com
@ 2022-10-19 0:38 ` pinskia at gcc dot gnu.org
2022-10-19 0:39 ` pinskia at gcc dot gnu.org
` (8 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: pinskia at gcc dot gnu.org @ 2022-10-19 0:38 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107310
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Known to fail| |12.1.0
Status|UNCONFIRMED |NEW
Last reconfirmed| |2022-10-19
Known to work| |11.3.0
Target Milestone|--- |12.3
Keywords| |diagnostic
Ever confirmed|0 |1
Summary|"warning: control reaches |[12/13 Regression]
|end of non-void function" |"warning: control reaches
|with a throw under a |end of non-void function"
|trivially-true conditional |with a throw under a
| |trivially-true conditional
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed. reduced testcase:
struct f
{
~f();
};
int foo(int t) {
f g;
switch (t) {
case 1: return 1;
}
if (true)
throw 1;
}
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c++/107310] [12/13 Regression] "warning: control reaches end of non-void function" with a throw under a trivially-true conditional
2022-10-18 20:23 [Bug c++/107310] New: "warning: control reaches end of non-void function" with a throw under a trivially-true conditional lvoege at gmail dot com
2022-10-19 0:38 ` [Bug c++/107310] [12/13 Regression] " pinskia at gcc dot gnu.org
@ 2022-10-19 0:39 ` pinskia at gcc dot gnu.org
2022-10-19 6:53 ` [Bug c++/107310] [12/13 Regression] "warning: control reaches end of non-void function" with a throw under a trivially-true conditional since r12-5638-ga3e75c1491cd2d50 marxin at gcc dot gnu.org
` (7 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: pinskia at gcc dot gnu.org @ 2022-10-19 0:39 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107310
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Note the warning happens at -O0 only.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c++/107310] [12/13 Regression] "warning: control reaches end of non-void function" with a throw under a trivially-true conditional since r12-5638-ga3e75c1491cd2d50
2022-10-18 20:23 [Bug c++/107310] New: "warning: control reaches end of non-void function" with a throw under a trivially-true conditional lvoege at gmail dot com
2022-10-19 0:38 ` [Bug c++/107310] [12/13 Regression] " pinskia at gcc dot gnu.org
2022-10-19 0:39 ` pinskia at gcc dot gnu.org
@ 2022-10-19 6:53 ` marxin at gcc dot gnu.org
2022-10-19 7:23 ` rguenth at gcc dot gnu.org
` (6 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: marxin at gcc dot gnu.org @ 2022-10-19 6:53 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107310
Martin Liška <marxin at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jason at gcc dot gnu.org,
| |marxin at gcc dot gnu.org
Summary|[12/13 Regression] |[12/13 Regression]
|"warning: control reaches |"warning: control reaches
|end of non-void function" |end of non-void function"
|with a throw under a |with a throw under a
|trivially-true conditional |trivially-true conditional
| |since
| |r12-5638-ga3e75c1491cd2d50
--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> ---
Started with r12-5638-ga3e75c1491cd2d50.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c++/107310] [12/13 Regression] "warning: control reaches end of non-void function" with a throw under a trivially-true conditional since r12-5638-ga3e75c1491cd2d50
2022-10-18 20:23 [Bug c++/107310] New: "warning: control reaches end of non-void function" with a throw under a trivially-true conditional lvoege at gmail dot com
` (2 preceding siblings ...)
2022-10-19 6:53 ` [Bug c++/107310] [12/13 Regression] "warning: control reaches end of non-void function" with a throw under a trivially-true conditional since r12-5638-ga3e75c1491cd2d50 marxin at gcc dot gnu.org
@ 2022-10-19 7:23 ` rguenth at gcc dot gnu.org
2022-11-16 16:35 ` jakub at gcc dot gnu.org
` (5 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: rguenth at gcc dot gnu.org @ 2022-10-19 7:23 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107310
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P2
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c++/107310] [12/13 Regression] "warning: control reaches end of non-void function" with a throw under a trivially-true conditional since r12-5638-ga3e75c1491cd2d50
2022-10-18 20:23 [Bug c++/107310] New: "warning: control reaches end of non-void function" with a throw under a trivially-true conditional lvoege at gmail dot com
` (3 preceding siblings ...)
2022-10-19 7:23 ` rguenth at gcc dot gnu.org
@ 2022-11-16 16:35 ` jakub at gcc dot gnu.org
2023-03-14 16:16 ` jason at gcc dot gnu.org
` (4 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: jakub at gcc dot gnu.org @ 2022-11-16 16:35 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107310
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
This is similar to C:
void bar (int *x);
__attribute__((noreturn)) void baz (void);
int
foo (void)
{
int a __attribute__((cleanup (bar)));
if (1)
baz ();
}
on which we were at -O0 warning already in 4.7, haven't tried older compilers.
In C we optimizing the if (0) and if (1) conditions at genericization time,
only in C++ we were and now we no longer do.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c++/107310] [12/13 Regression] "warning: control reaches end of non-void function" with a throw under a trivially-true conditional since r12-5638-ga3e75c1491cd2d50
2022-10-18 20:23 [Bug c++/107310] New: "warning: control reaches end of non-void function" with a throw under a trivially-true conditional lvoege at gmail dot com
` (4 preceding siblings ...)
2022-11-16 16:35 ` jakub at gcc dot gnu.org
@ 2023-03-14 16:16 ` jason at gcc dot gnu.org
2023-03-14 18:46 ` cvs-commit at gcc dot gnu.org
` (3 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: jason at gcc dot gnu.org @ 2023-03-14 16:16 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107310
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|unassigned at gcc dot gnu.org |jason at gcc dot gnu.org
Status|NEW |ASSIGNED
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c++/107310] [12/13 Regression] "warning: control reaches end of non-void function" with a throw under a trivially-true conditional since r12-5638-ga3e75c1491cd2d50
2022-10-18 20:23 [Bug c++/107310] New: "warning: control reaches end of non-void function" with a throw under a trivially-true conditional lvoege at gmail dot com
` (5 preceding siblings ...)
2023-03-14 16:16 ` jason at gcc dot gnu.org
@ 2023-03-14 18:46 ` cvs-commit at gcc dot gnu.org
2023-03-14 18:50 ` [Bug c++/107310] [12 " jason at gcc dot gnu.org
` (2 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-03-14 18:46 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107310
--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Jason Merrill <jason@gcc.gnu.org>:
https://gcc.gnu.org/g:71b33f8fb8daa6a7a359f322b24365d9016438fc
commit r13-6670-g71b33f8fb8daa6a7a359f322b24365d9016438fc
Author: Jason Merrill <jason@redhat.com>
Date: Tue Mar 14 12:20:51 2023 -0400
c++: -Wreturn-type with if (true) throw [PR107310]
I removed this folding in GCC 12 because it was interfering with an
experiment of richi's, but that never went in and the change causes
regressions, so let's put it back.
This reverts commit r12-5638-ga3e75c1491cd2d.
PR c++/107310
gcc/cp/ChangeLog:
* cp-gimplify.cc (genericize_if_stmt): Restore folding
of constant conditions.
gcc/testsuite/ChangeLog:
* c-c++-common/Wimplicit-fallthrough-39.c: Adjust warning.
* g++.dg/warn/Wreturn-6.C: New test.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c++/107310] [12 Regression] "warning: control reaches end of non-void function" with a throw under a trivially-true conditional since r12-5638-ga3e75c1491cd2d50
2022-10-18 20:23 [Bug c++/107310] New: "warning: control reaches end of non-void function" with a throw under a trivially-true conditional lvoege at gmail dot com
` (6 preceding siblings ...)
2023-03-14 18:46 ` cvs-commit at gcc dot gnu.org
@ 2023-03-14 18:50 ` jason at gcc dot gnu.org
2023-04-18 20:45 ` cvs-commit at gcc dot gnu.org
2023-04-18 20:48 ` jason at gcc dot gnu.org
9 siblings, 0 replies; 11+ messages in thread
From: jason at gcc dot gnu.org @ 2023-03-14 18:50 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107310
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|[12/13 Regression] |[12 Regression] "warning:
|"warning: control reaches |control reaches end of
|end of non-void function" |non-void function" with a
|with a throw under a |throw under a
|trivially-true conditional |trivially-true conditional
|since |since
|r12-5638-ga3e75c1491cd2d50 |r12-5638-ga3e75c1491cd2d50
--- Comment #6 from Jason Merrill <jason at gcc dot gnu.org> ---
Fixed for 13 so far.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c++/107310] [12 Regression] "warning: control reaches end of non-void function" with a throw under a trivially-true conditional since r12-5638-ga3e75c1491cd2d50
2022-10-18 20:23 [Bug c++/107310] New: "warning: control reaches end of non-void function" with a throw under a trivially-true conditional lvoege at gmail dot com
` (7 preceding siblings ...)
2023-03-14 18:50 ` [Bug c++/107310] [12 " jason at gcc dot gnu.org
@ 2023-04-18 20:45 ` cvs-commit at gcc dot gnu.org
2023-04-18 20:48 ` jason at gcc dot gnu.org
9 siblings, 0 replies; 11+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-04-18 20:45 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107310
--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-12 branch has been updated by Jason Merrill
<jason@gcc.gnu.org>:
https://gcc.gnu.org/g:0f6d443f0d0dd8a6bab99ab1957df3cd82541b27
commit r12-9432-g0f6d443f0d0dd8a6bab99ab1957df3cd82541b27
Author: Jason Merrill <jason@redhat.com>
Date: Tue Mar 14 12:20:51 2023 -0400
c++: -Wreturn-type with if (true) throw [PR107310]
I removed this folding in GCC 12 because it was interfering with an
experiment of richi's, but that never went in and the change causes
regressions, so let's put it back.
This reverts commit r12-5638-ga3e75c1491cd2d.
PR c++/107310
gcc/cp/ChangeLog:
* cp-gimplify.cc (genericize_if_stmt): Restore folding
of constant conditions.
gcc/testsuite/ChangeLog:
* c-c++-common/Wimplicit-fallthrough-39.c: Adjust warning.
* g++.dg/warn/Wreturn-6.C: New test.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug c++/107310] [12 Regression] "warning: control reaches end of non-void function" with a throw under a trivially-true conditional since r12-5638-ga3e75c1491cd2d50
2022-10-18 20:23 [Bug c++/107310] New: "warning: control reaches end of non-void function" with a throw under a trivially-true conditional lvoege at gmail dot com
` (8 preceding siblings ...)
2023-04-18 20:45 ` cvs-commit at gcc dot gnu.org
@ 2023-04-18 20:48 ` jason at gcc dot gnu.org
9 siblings, 0 replies; 11+ messages in thread
From: jason at gcc dot gnu.org @ 2023-04-18 20:48 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107310
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
--- Comment #8 from Jason Merrill <jason at gcc dot gnu.org> ---
Fixed for 12.3/13.
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2023-04-18 20:48 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-18 20:23 [Bug c++/107310] New: "warning: control reaches end of non-void function" with a throw under a trivially-true conditional lvoege at gmail dot com
2022-10-19 0:38 ` [Bug c++/107310] [12/13 Regression] " pinskia at gcc dot gnu.org
2022-10-19 0:39 ` pinskia at gcc dot gnu.org
2022-10-19 6:53 ` [Bug c++/107310] [12/13 Regression] "warning: control reaches end of non-void function" with a throw under a trivially-true conditional since r12-5638-ga3e75c1491cd2d50 marxin at gcc dot gnu.org
2022-10-19 7:23 ` rguenth at gcc dot gnu.org
2022-11-16 16:35 ` jakub at gcc dot gnu.org
2023-03-14 16:16 ` jason at gcc dot gnu.org
2023-03-14 18:46 ` cvs-commit at gcc dot gnu.org
2023-03-14 18:50 ` [Bug c++/107310] [12 " jason at gcc dot gnu.org
2023-04-18 20:45 ` cvs-commit at gcc dot gnu.org
2023-04-18 20:48 ` jason at gcc dot gnu.org
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).