summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r--clang/lib/Sema/SemaDecl.cpp19
1 files changed, 4 insertions, 15 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index c6f8c22b087..599f0ba61b2 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -264,21 +264,10 @@ TypedefDecl *Sema::MergeTypeDefDecl(TypedefDecl *New, Decl *OldD) {
// this adhoc compatibility rule. FIXME: The following code will not
// work properly when compiling ".i" files (containing preprocessed output).
SourceManager &SrcMgr = Context.getSourceManager();
- HeaderSearch &HdrInfo = PP.getHeaderSearchInfo();
- const FileEntry *OldDeclFile = SrcMgr.getFileEntryForLoc(Old->getLocation());
- if (OldDeclFile) {
- DirectoryLookup::DirType OldDirType = HdrInfo.getFileDirFlavor(OldDeclFile);
- // Allow reclarations in both SystemHeaderDir and ExternCSystemHeaderDir.
- if (OldDirType != DirectoryLookup::NormalHeaderDir)
- return New;
- }
- const FileEntry *NewDeclFile = SrcMgr.getFileEntryForLoc(New->getLocation());
- if (NewDeclFile) {
- DirectoryLookup::DirType NewDirType = HdrInfo.getFileDirFlavor(NewDeclFile);
- // Allow reclarations in both SystemHeaderDir and ExternCSystemHeaderDir.
- if (NewDirType != DirectoryLookup::NormalHeaderDir)
- return New;
- }
+ if (SrcMgr.isInSystemHeader(Old->getLocation()))
+ return New;
+ if (SrcMgr.isInSystemHeader(New->getLocation()))
+ return New;
Diag(New->getLocation(), diag::err_redefinition, New->getName());
Diag(Old->getLocation(), diag::err_previous_definition);
OpenPOWER on IntegriCloud