[LLVMdev] Break in loop expression-3
Alex Markin
alexanius at gmail.com
Fri Jul 12 12:08:06 PDT 2013
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;}))
I asked gcc developers about that fact, they answered that gcc is
correct here, because statement expressions don't inherit the
surrounding context. So, it seems to be an llvm bug.
Kind regards,
Markin Alex
More information about the llvm-dev
mailing list