[modules] Don't reject multiple modules providing contents for the same embedded file.

llvm-svn: 254365
This commit is contained in:
Richard Smith 2015-12-01 03:32:49 +00:00
parent 38518e9f53
commit 64daf7b1a5
2 changed files with 17 additions and 1 deletions

View File

@ -1963,7 +1963,8 @@ InputFile ASTReader::getInputFile(ModuleFile &F, unsigned ID, bool Complain) {
// can lead to problems when lexing using the source locations from the
// PCH.
SourceManager &SM = getSourceManager();
if (!Overridden && SM.isFileOverridden(File)) {
// FIXME: Reject if the overrides are different.
if ((!Overridden && !Transient) && SM.isFileOverridden(File)) {
if (Complain)
Error(diag::err_fe_pch_file_overridden, Filename);
// After emitting the diagnostic, recover by disabling the override so

View File

@ -0,0 +1,15 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: echo 'module a { header "a.h" } module b { header "b.h" }' > %t/modulemap
// RUN: echo 'extern int t;' > %t/t.h
// RUN: echo '#include "t.h"' > %t/a.h
// RUN: echo '#include "t.h"' > %t/b.h
// RUN: %clang_cc1 -fmodules -I%t -fmodules-cache-path=%t -fmodule-map-file=%t/modulemap -fmodules-embed-all-files %s -verify
#include "a.h"
char t; // expected-error {{different type}}
// expected-note@t.h:1 {{here}}
#include "t.h"
#include "b.h"
char t; // expected-error {{different type}}
// expected-note@t.h:1 {{here}}