aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-04-10 23:10:45 +0000
committerDouglas Gregor <dgregor@apple.com>2009-04-10 23:10:45 +0000
commite1d918e9fe55e3b34401fd5d420c47ea0f9572c9 (patch)
tree6822c3f153c65c33f08ebfb5ee3e1915decacc2a /lib/Sema/SemaDecl.cpp
parentc0c0ef061f2aaf054c7a970f28961097e46661f3 (diff)
Compare the predefines buffer in the PCH file with the predefines
buffer generated for the current translation unit. If they are different, complain and then ignore the PCH file. This effectively checks for all compilation options that somehow would affect preprocessor state (-D, -U, -include, the dreaded -imacros, etc.). When we do accept the PCH file, throw away the contents of the predefines buffer rather than parsing them, since all of the results of that parsing are already stored in the PCH file. This eliminates the ugliness with the redefinition of __builtin_va_list, among other things. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68838 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaDecl.cpp')
-rw-r--r--lib/Sema/SemaDecl.cpp16
1 files changed, 0 insertions, 16 deletions
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp
index 4f87b48eff..474c1e490e 100644
--- a/lib/Sema/SemaDecl.cpp
+++ b/lib/Sema/SemaDecl.cpp
@@ -524,22 +524,6 @@ bool Sema::MergeTypeDefDecl(TypedefDecl *New, Decl *OldD) {
return false;
}
- // __builtin_va_list gets redeclared in the built-in definitions
- // buffer when using PCH. Don't complain about such redefinitions.
- //
- // FIXME: The problem here is that the __builtin_va_list declaration
- // comes in as target-specific text in the predefines buffer, both
- // in the generation of the PCH file and in the source file. Thus,
- // we end up with two typedefs for the same type, which is an error
- // in C. Our hackish solution is to allow redundant typedefs *to the
- // same type* if the types are defined in the predefined buffer. We
- // would like to eliminate this ugliness, perhaps by making
- // __builtin_va_list a real, Sema-supplied declaration rather than
- // putting its text into the predefines buffer.
- if (Context.getExternalSource() &&
- strcmp(SourceMgr.getBufferName(New->getLocation()), "<built-in>") == 0)
- return false;
-
Diag(New->getLocation(), diag::err_redefinition) << New->getDeclName();
Diag(Old->getLocation(), diag::note_previous_definition);
return true;