summaryrefslogtreecommitdiffstats
path: root/clang/lib/Lex/ModuleMap.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2012-01-30 06:01:29 +0000
committerDouglas Gregor <dgregor@apple.com>2012-01-30 06:01:29 +0000
commit899292827456532bc66219f9d778595c57614f77 (patch)
treefa9971f4bad44e176c13d13bc80d68f4dce77e25 /clang/lib/Lex/ModuleMap.cpp
parent829400bb22fc72d291fd3e5057b0880d7b09aafa (diff)
downloadbcm5719-llvm-899292827456532bc66219f9d778595c57614f77.tar.gz
bcm5719-llvm-899292827456532bc66219f9d778595c57614f77.zip
Thread a TargetInfo through to the module map; we'll need it for
target-specific module requirements. llvm-svn: 149224
Diffstat (limited to 'clang/lib/Lex/ModuleMap.cpp')
-rw-r--r--clang/lib/Lex/ModuleMap.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/clang/lib/Lex/ModuleMap.cpp b/clang/lib/Lex/ModuleMap.cpp
index 708da945856..3583b034d53 100644
--- a/clang/lib/Lex/ModuleMap.cpp
+++ b/clang/lib/Lex/ModuleMap.cpp
@@ -70,8 +70,8 @@ ModuleMap::resolveExport(Module *Mod,
}
ModuleMap::ModuleMap(FileManager &FileMgr, const DiagnosticConsumer &DC,
- const LangOptions &LangOpts)
- : LangOpts(LangOpts)
+ const LangOptions &LangOpts, const TargetInfo *Target)
+ : LangOpts(LangOpts), Target(Target)
{
llvm::IntrusiveRefCntPtr<DiagnosticIDs> DiagIDs(new DiagnosticIDs);
Diags = llvm::IntrusiveRefCntPtr<DiagnosticsEngine>(
@@ -90,6 +90,12 @@ ModuleMap::~ModuleMap() {
delete SourceMgr;
}
+void ModuleMap::setTarget(const TargetInfo &Target) {
+ assert((!this->Target || this->Target == &Target) &&
+ "Improper target override");
+ this->Target = &Target;
+}
+
Module *ModuleMap::findModuleForHeader(const FileEntry *File) {
llvm::DenseMap<const FileEntry *, Module *>::iterator Known
= Headers.find(File);
@@ -992,7 +998,7 @@ void ModuleMapParser::parseRequiresDecl() {
consumeToken();
// Add this feature.
- ActiveModule->addRequirement(Feature, Map.LangOpts);
+ ActiveModule->addRequirement(Feature, Map.LangOpts, *Map.Target);
if (!Tok.is(MMToken::Comma))
break;
@@ -1360,6 +1366,7 @@ bool ModuleMapParser::parseModuleMapFile() {
}
bool ModuleMap::parseModuleMapFile(const FileEntry *File) {
+ assert(Target != 0 && "Missing target information");
FileID ID = SourceMgr->createFileID(File, SourceLocation(), SrcMgr::C_User);
const llvm::MemoryBuffer *Buffer = SourceMgr->getBuffer(ID);
if (!Buffer)
OpenPOWER on IntegriCloud