[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
glr.c: fix use of _Noreturn
From: |
Akim Demaille |
Subject: |
glr.c: fix use of _Noreturn |
Date: |
Fri, 16 Nov 2018 17:40:33 +0100 |
Hi Paul,
This is something worth noting.
commit 8474dbc09e1d8046e257a7c1204d72e5e8845b0a
Author: Akim Demaille <address@hidden>
Date: Wed Nov 14 21:23:11 2018 +0100
glr.c: fix use of _Noreturn
In C++, [[noreturn]] must not be between "static" and the rest of the
function signature, it must precede it. C's _Noreturn does not seem
to have such a constraint, but it is therefore compatible with the C++
constraint. Since we #define _Noreturn as [[noreturn]] is modern C++,
be sure to push the _Noreturn first.
Unfortunately this was not caught by the test suite, because it always
loads config.h first, and config.h contains another definition of
_Noreturn that does not use [[noreturn]], and hides ours. That's
probably a sign we should avoid always loading config.h.
* data/glr.c (yyFail, yyMemoryExhausted): here.
diff --git a/data/glr.c b/data/glr.c
index ed79cab6..8f71c527 100644
--- a/data/glr.c
+++ b/data/glr.c
@@ -708,7 +708,7 @@ struct yyGLRStack {
static void yyexpandGLRStack (yyGLRStack* yystackp);
#endif
-static _Noreturn void
+_Noreturn static void
yyFail (yyGLRStack* yystackp]b4_pure_formals[, const char* yymsg)
{
if (yymsg != YY_NULLPTR)
@@ -716,7 +716,7 @@ yyFail (yyGLRStack* yystackp]b4_pure_formals[, const char*
yymsg)
YYLONGJMP (yystackp->yyexception_buffer, 1);
}
-static _Noreturn void
+_Noreturn static void
yyMemoryExhausted (yyGLRStack* yystackp)
{
YYLONGJMP (yystackp->yyexception_buffer, 2);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- glr.c: fix use of _Noreturn,
Akim Demaille <=