This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]