http://bugs.llvm.org/show_bug.cgi?id=32648

            Bug ID: 32648
           Summary: Incorrect clang syntax warning with -Wgcc-compat
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: -New Bugs
          Assignee: unassignedclangb...@nondot.org
          Reporter: cmt...@google.com
                CC: llvm-bugs@lists.llvm.org

When I compile the test file below (taken from a larger real program) clang
raises the following warning unless gcc-compat is disabled:

clang_gcc_compat.c:17:13: warning: 'break' is bound to current loop, GCC binds
      it to the enclosing loop [-Wgcc-compat]
    } while(__m(1));
            ^
clang_gcc_compat.c:8:3: note: expanded from macro '__m'
                break;                          \
                ^
1 warning generated.
/usr/x86_64-cros-linux-gnu/usr/lib/../lib64/Scrt1.o:function _start: error:
undefined reference to 'main'
clang-4.0: error: linker command failed with exit code 1 (use -v to see
invocation)


Since the break statement is clearly part of the switch construct and not in
any way, shape or form referring to the loop, this is an erroneous, confusing
warning.



The source code for clang_gcc_compat.c is below:

/* x86_64-cros-linux-gnu-clang tmp/clang_gcc_compat.c */

#define __m(x) \
({                                              \
        switch (x) {                            \
        case 1:                                 \
        {                                       \
                break;                          \
        }                                       \
        }                                       \
        42;                                     \
})

void f() {
  for (;;) {
    do {
    } while(__m(1));
  }

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to