I've noticed the difference in gcc and llvm behaviour with the following code:
$ cat test.c
int main()
{
for(int i = 0;; ({break;}))
printf("Hello, worldn");
}
$ clang test.c -pedantic &; ({break;}))
1 warning generated.
Hello, world
$ gcc test.c -std=gnu11 -pedantic &; ({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?