https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81873

            Bug ID: 81873
           Summary: spurious -Wreturn-type calling a locally declared
                    noreturn function
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: msebor at gcc dot gnu.org
  Target Milestone: ---

When a noreturn function first locally declared in another function and then
redeclared in another function without attribute noreturn is called the C front
end correctly avoids warning if the call isn't followed by a return statement
in a function expected to return a value.

The test case below shows that the C++ front end doesn't handle this case
correctly and issues a spurious warning.

$ cat t.C && gcc -S -Wall -Wextra -Wpedantic t.C
void f (void)
{
  int __attribute__ ((noreturn)) g ();
}

int h (void)
{
  int g ();

  g ();
}
t.C: In function ‘int h()’:
t.C:11:1: warning: no return statement in function returning non-void
[-Wreturn-type]
 }
 ^

Reply via email to