[Bug c++/81692] Bogus noreturn warning
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Mar 16 17:52:37 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81692
Martin Sebor <msebor at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |msebor at gcc dot gnu.org
Known to fail| |10.0, 7.3.0, 8.2.0, 9.2.0
--- Comment #2 from Martin Sebor <msebor at gcc dot gnu.org> ---
Reconfirming with GCC 10. The attribute is accepted and has the expected
effect in the middle-end but not in the C++ front-end.
$ cat pr81692.C && gcc -O2 -S -Wall -Wextra -Wpedantic
-fdump-tree-optimized=/dev/stdout pr81692.C
template <class E>
__attribute__ ((noreturn))
void throw_exception (const char*);
template <class E>
int foo (int *p)
{
throw_exception<E>(__PRETTY_FUNCTION__);
*p = 0; // eliminated
}
template int foo<int>(int*);
pr81692.C: In function ‘int foo(int*)’:
pr81692.C:10:1: warning: no return statement in function returning non-void
[-Wreturn-type]
10 | }
| ^
;; Function foo<int> (_Z3fooIiEiPi, funcdef_no=1, decl_uid=2339, cgraph_uid=1,
symbol_order=0)
foo<int> (int * p)
{
<bb 2> [local count: 1073741824]:
throw_exception<int> ("int foo(int*) [with E = int]");
}
More information about the Gcc-bugs
mailing list