This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Break in loop expression-3
- From: Alex Markin <alexanius at gmail dot com>
- To: gcc-help at gcc dot gnu dot org
- Date: Fri, 12 Jul 2013 10:17:32 +0400
- Subject: Break in loop expression-3
Hello everyone.
I've noticed the difference in gcc and llvm behaviour with the following code:
$ cat test.c
#include <stdio.h>
int main()
{
for(int i = 0;; ({break;}))
printf("Hello, world\n");
}
$ clang test.c -pedantic && ./a.out
test.c:5:22: warning: use of GNU statement expression extension [-Wgnu]
for(int i = 0;; ({break;}))
^
1 warning generated.
Hello, world
$ gcc test.c -std=gnu11 -pedantic && ./a.out
test.c: In function 'main':
test.c:5:23: error: break statement not within loop or switch
for(int i = 0;; ({break;}))
^
test.c:5:21: warning: ISO C forbids braced-groups within expressions
[-Wpedantic]
for(int i = 0;; ({break;}))
So, llvm thinks that this is GNU extension (seems like it really is),
but compiles it, and gcc does not, even if the standard is specified
as gnu11. Is it a bug?
Kind regards,
Markin Alex