--- Comment #6 from jakub at gcc dot gnu dot org 2007-11-18 22:21 ---
Subject: Bug 30988
Author: jakub
Date: Sun Nov 18 22:20:54 2007
New Revision: 130280
URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=130280
Log:
PR c++/30988
semantics.c (finish_call_expr): Set
--- Comment #4 from jakub at gcc dot gnu dot org 2007-11-17 12:33 ---
IMNSHO this is not a regression.
void f (const char *)
#ifdef NORET
__attribute__ ((noreturn))
#endif
;
template class T struct A
{
int g ()
{
#ifdef TEST1
f (__FUNCTION__);
#elif defined TEST2
f ((const
--- Comment #5 from jakub at gcc dot gnu dot org 2007-11-17 12:35 ---
Oops, sorry for the typo (twice -DTEST3, never -DTEST2). But with -DTEST2 the
output is always identical to -DTEST3 with all compilers.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30988
--- Comment #3 from spark at gcc dot gnu dot org 2007-03-13 22:57 ---
This is somewhat complicated.
The extra type cast causes
different code paths to be taken.
In particular, in finish_call_expr() in cp/semantics.c:
if (processing_template_decl)
{
if
--
mmitchel at gcc dot gnu dot org changed:
What|Removed |Added
Priority|P3 |P2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30988
--- Comment #2 from pinskia at gcc dot gnu dot org 2007-03-03 21:50 ---
Confirmed, a regression from 3.3.3. I made sure in 3.3.3, we would warn about
the function if we removed the attribute noreturn so I know the warning works
for that case.
--
pinskia at gcc dot gnu dot org