]> granicus.if.org Git - clang/commit
Add pedantic warning -Wempty-translation-unit (C11 6.9p1).
authorJordan Rose <jordan_rose@apple.com>
Wed, 6 Jun 2012 17:25:21 +0000 (17:25 +0000)
committerJordan Rose <jordan_rose@apple.com>
Wed, 6 Jun 2012 17:25:21 +0000 (17:25 +0000)
commitd73ef135ba029db59c0b5649e6117845d9e39600
tree4e353271c446576ebfa70b18525f90ad68fa372c
parenta08e7bc74b5635995fc50009f240dd3feb1999e2
Add pedantic warning -Wempty-translation-unit (C11 6.9p1).

In standard C since C89, a 'translation-unit' is syntactically defined to have
at least one "external-declaration", which is either a decl or a function
definition. In Clang the latter gives us a declaration as well.

The tricky bit about this warning is that our predefines can contain external
declarations (__builtin_va_list and the 128-bit integer types). Therefore our
AST parser now makes sure we have at least one declaration that doesn't come
from the predefines buffer.

Also, remove bogus warning about empty source files. This doesn't catch source
files that only contain comments, and never fired anyway because of our
predefines.

PR12665 and <rdar://problem/9165548>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158085 91177308-0d34-0410-b5e6-96231b3b80d8
14 files changed:
include/clang/Basic/DiagnosticParseKinds.td
include/clang/Basic/SourceManager.h
include/clang/Parse/Parser.h
lib/Basic/SourceManager.cpp
lib/Lex/Preprocessor.cpp
lib/Parse/ParseAST.cpp
lib/Parse/Parser.cpp
test/Misc/warning-flags.c
test/PCH/empty-with-headers.c [new file with mode: 0644]
test/Parser/completely-empty-header-file.h [new file with mode: 0644]
test/Parser/empty-translation-unit.c [new file with mode: 0644]
test/Parser/opencl-pragma.cl
test/Preprocessor/undef-error.c
test/Sema/c89-2.c