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