A semicolon is expected after _GL_UNUSED_LABEL, at least in C++ mode. See: ================================ foo.c ================================ int foo (int x) { x += 2; if (x & 1) goto a; b: __attribute__ ((__unused__)) { x *= 3; } a: return x; } =======================================================================
$ gcc -Wall -S foo.c $ clang -Wall -S foo.c $ gcc -Wall -S -x c++ foo.c foo.c: In function 'int foo(int)': foo.c:8:3: error: expected primary-expression before '{' token 8 | { | ^ foo.c:6:1: warning: label 'b' defined but not used [-Wunused-label] 6 | b: | ^ $ clang -Wall -S -x c++ foo.c foo.c:8:3: error: expected ';' after __attribute__ { ^ 1 error generated. Therefore, don't set a bad precedent by writing _GL_UNUSED_LABEL without semicolon, even in C-only code. 2021-08-22 Bruno Haible <br...@clisp.org> mountlist: Use recommended syntax for _GL_UNUSED_LABEL. * lib/mountlist.c (read_file_system_list): Add semicolon after _GL_UNUSED_LABEL. diff --git a/lib/mountlist.c b/lib/mountlist.c index adc8740bf..352b35f35 100644 --- a/lib/mountlist.c +++ b/lib/mountlist.c @@ -1089,7 +1089,7 @@ read_file_system_list (bool need_fs_type) return mount_list; - free_then_fail: _GL_UNUSED_LABEL + free_then_fail: _GL_UNUSED_LABEL; { int saved_errno = errno; *mtail = NULL;