summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-02-01 16:36:12 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-02-01 16:36:12 +0000
commit125df0589b95ad297242dbdc7239f4421ea19b9b (patch)
tree6864b40ac18c412b91f894513439275be57d271e
parent22c22f5f9a0fa0db6cb0fae9c9ced4756cd52701 (diff)
downloadbcm5719-llvm-125df0589b95ad297242dbdc7239f4421ea19b9b.tar.gz
bcm5719-llvm-125df0589b95ad297242dbdc7239f4421ea19b9b.zip
For ModuleLoader::makeModuleVisible() also pass the source location where the
module import occurred. llvm-svn: 174191
-rw-r--r--clang/include/clang/Frontend/ASTUnit.h3
-rw-r--r--clang/include/clang/Frontend/CompilerInstance.h3
-rw-r--r--clang/include/clang/Lex/ModuleLoader.h3
-rw-r--r--clang/include/clang/Serialization/ASTReader.h3
-rw-r--r--clang/lib/Frontend/CompilerInstance.cpp10
-rw-r--r--clang/lib/Sema/SemaDecl.cpp2
-rw-r--r--clang/lib/Serialization/ASTReader.cpp6
-rw-r--r--clang/unittests/Basic/SourceManagerTest.cpp3
-rw-r--r--clang/unittests/Lex/LexerTest.cpp3
-rw-r--r--clang/unittests/Lex/PPCallbacksTest.cpp3
-rw-r--r--clang/unittests/Lex/PPConditionalDirectiveRecordTest.cpp3
11 files changed, 27 insertions, 15 deletions
diff --git a/clang/include/clang/Frontend/ASTUnit.h b/clang/include/clang/Frontend/ASTUnit.h
index 3701cdc2e44..9a02c0c2b86 100644
--- a/clang/include/clang/Frontend/ASTUnit.h
+++ b/clang/include/clang/Frontend/ASTUnit.h
@@ -839,7 +839,8 @@ public:
}
virtual void makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind Visibility) { }
+ Module::NameVisibilityKind Visibility,
+ SourceLocation ImportLoc) { }
};
diff --git a/clang/include/clang/Frontend/CompilerInstance.h b/clang/include/clang/Frontend/CompilerInstance.h
index a17e1c8f5bc..273fcc10827 100644
--- a/clang/include/clang/Frontend/CompilerInstance.h
+++ b/clang/include/clang/Frontend/CompilerInstance.h
@@ -662,7 +662,8 @@ public:
bool IsInclusionDirective);
virtual void makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind Visibility);
+ Module::NameVisibilityKind Visibility,
+ SourceLocation ImportLoc);
};
diff --git a/clang/include/clang/Lex/ModuleLoader.h b/clang/include/clang/Lex/ModuleLoader.h
index 933cfd36e5b..93e69a6eed3 100644
--- a/clang/include/clang/Lex/ModuleLoader.h
+++ b/clang/include/clang/Lex/ModuleLoader.h
@@ -82,7 +82,8 @@ public:
/// \brief Make the given module visible.
virtual void makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind Visibility) = 0;
+ Module::NameVisibilityKind Visibility,
+ SourceLocation ImportLoc) = 0;
};
}
diff --git a/clang/include/clang/Serialization/ASTReader.h b/clang/include/clang/Serialization/ASTReader.h
index d3f3466c338..bfa3994ec3e 100644
--- a/clang/include/clang/Serialization/ASTReader.h
+++ b/clang/include/clang/Serialization/ASTReader.h
@@ -1164,7 +1164,8 @@ public:
/// \param NameVisibility The level of visibility to give the names in the
/// module. Visibility can only be increased over time.
void makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind NameVisibility);
+ Module::NameVisibilityKind NameVisibility,
+ SourceLocation ImportLoc);
/// \brief Make the names within this set of hidden names visible.
void makeNamesVisible(const HiddenNames &Names);
diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp
index 27f96b0974d..d4a351394a2 100644
--- a/clang/lib/Frontend/CompilerInstance.cpp
+++ b/clang/lib/Frontend/CompilerInstance.cpp
@@ -890,7 +890,8 @@ CompilerInstance::loadModule(SourceLocation ImportLoc,
if (!ImportLoc.isInvalid() && LastModuleImportLoc == ImportLoc) {
// Make the named module visible.
if (LastModuleImportResult)
- ModuleManager->makeModuleVisible(LastModuleImportResult, Visibility);
+ ModuleManager->makeModuleVisible(LastModuleImportResult, Visibility,
+ ImportLoc);
return LastModuleImportResult;
}
@@ -1178,7 +1179,7 @@ CompilerInstance::loadModule(SourceLocation ImportLoc,
return ModuleLoadResult();
}
- ModuleManager->makeModuleVisible(Module, Visibility);
+ ModuleManager->makeModuleVisible(Module, Visibility, ImportLoc);
}
// If this module import was due to an inclusion directive, create an
@@ -1199,7 +1200,8 @@ CompilerInstance::loadModule(SourceLocation ImportLoc,
}
void CompilerInstance::makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind Visibility){
- ModuleManager->makeModuleVisible(Mod, Visibility);
+ Module::NameVisibilityKind Visibility,
+ SourceLocation ImportLoc){
+ ModuleManager->makeModuleVisible(Mod, Visibility, ImportLoc);
}
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index 0d549fcc18e..45f7cae960a 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -11514,7 +11514,7 @@ void Sema::createImplicitModuleImport(SourceLocation Loc, Module *Mod) {
Consumer.HandleImplicitImportDecl(ImportD);
// Make the module visible.
- PP.getModuleLoader().makeModuleVisible(Mod, Module::AllVisible);
+ PP.getModuleLoader().makeModuleVisible(Mod, Module::AllVisible, Loc);
}
void Sema::ActOnPragmaRedefineExtname(IdentifierInfo* Name,
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index 1524da9bd66..37db83e594a 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -2591,7 +2591,8 @@ void ASTReader::makeNamesVisible(const HiddenNames &Names) {
}
void ASTReader::makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind NameVisibility) {
+ Module::NameVisibilityKind NameVisibility,
+ SourceLocation ImportLoc) {
llvm::SmallPtrSet<Module *, 4> Visited;
SmallVector<Module *, 4> Stack;
Stack.push_back(Mod);
@@ -3082,7 +3083,8 @@ void ASTReader::InitializeContext() {
// Re-export any modules that were imported by a non-module AST file.
for (unsigned I = 0, N = ImportedModules.size(); I != N; ++I) {
if (Module *Imported = getSubmodule(ImportedModules[I]))
- makeModuleVisible(Imported, Module::AllVisible);
+ makeModuleVisible(Imported, Module::AllVisible,
+ /*ImportLoc=*/SourceLocation());
}
ImportedModules.clear();
}
diff --git a/clang/unittests/Basic/SourceManagerTest.cpp b/clang/unittests/Basic/SourceManagerTest.cpp
index 443d0771452..a7beb8f090c 100644
--- a/clang/unittests/Basic/SourceManagerTest.cpp
+++ b/clang/unittests/Basic/SourceManagerTest.cpp
@@ -60,7 +60,8 @@ class VoidModuleLoader : public ModuleLoader {
}
virtual void makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind Visibility) { }
+ Module::NameVisibilityKind Visibility,
+ SourceLocation ImportLoc) { }
};
TEST_F(SourceManagerTest, isBeforeInTranslationUnit) {
diff --git a/clang/unittests/Lex/LexerTest.cpp b/clang/unittests/Lex/LexerTest.cpp
index a7c62849513..505be75ab44 100644
--- a/clang/unittests/Lex/LexerTest.cpp
+++ b/clang/unittests/Lex/LexerTest.cpp
@@ -61,7 +61,8 @@ class VoidModuleLoader : public ModuleLoader {
}
virtual void makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind Visibility) { }
+ Module::NameVisibilityKind Visibility,
+ SourceLocation ImportLoc) { }
};
TEST_F(LexerTest, LexAPI) {
diff --git a/clang/unittests/Lex/PPCallbacksTest.cpp b/clang/unittests/Lex/PPCallbacksTest.cpp
index 073e07cbb4f..13104cbc039 100644
--- a/clang/unittests/Lex/PPCallbacksTest.cpp
+++ b/clang/unittests/Lex/PPCallbacksTest.cpp
@@ -38,7 +38,8 @@ class VoidModuleLoader : public ModuleLoader {
}
virtual void makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind Visibility) { }
+ Module::NameVisibilityKind Visibility,
+ SourceLocation ImportLoc) { }
};
// Stub to collect data from InclusionDirective callbacks.
diff --git a/clang/unittests/Lex/PPConditionalDirectiveRecordTest.cpp b/clang/unittests/Lex/PPConditionalDirectiveRecordTest.cpp
index 80c352d66ae..856a8ff26d9 100644
--- a/clang/unittests/Lex/PPConditionalDirectiveRecordTest.cpp
+++ b/clang/unittests/Lex/PPConditionalDirectiveRecordTest.cpp
@@ -61,7 +61,8 @@ class VoidModuleLoader : public ModuleLoader {
}
virtual void makeModuleVisible(Module *Mod,
- Module::NameVisibilityKind Visibility) { }
+ Module::NameVisibilityKind Visibility,
+ SourceLocation ImportLoc) { }
};
TEST_F(PPConditionalDirectiveRecordTest, PPRecAPI) {
OpenPOWER on IntegriCloud