http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51644
Bug #: 51644
Summary: [4.7 Regression] va_list vs. warning: ‘noreturn’
function does return is not fixable
Classification: Unclassified
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: [email protected]
ReportedBy: [email protected]
PASS: gcc (GCC) 4.6.3 20111220 (prerelease)
FAIL: gcc (GCC) 4.7.0 20111220 (experimental)
#include <stdarg.h>
extern __attribute__ ((__noreturn__)) void b (int s, va_list ap);
__attribute__ ((__noreturn__)) void a (int s, ...)
{
va_list args;
va_start (args, s);
b (s, args);
va_end (args);
}
-Wall -fexceptions
35.c:9:1: warning: ‘noreturn’ function does return [enabled by default]
It gets fixed by removing that "va_end" but I must not (suggested by Tom
Tromey):
ISO C99 7.15.1
Each invocation of the va_start and va_copy macros shall be matched by a
corresponding invocation of the va_end macro in the same function.