aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Driver/ASTConsumers.cpp14
-rw-r--r--Driver/DiagChecker.cpp16
-rw-r--r--Driver/PrintPreprocessedOutput.cpp4
-rw-r--r--Driver/RewriteTest.cpp6
-rw-r--r--Driver/SerializationTest.cpp2
-rw-r--r--Driver/clang.cpp22
-rw-r--r--Driver/clang.h7
-rw-r--r--Lex/Preprocessor.cpp5
-rw-r--r--Sema/ASTStreamer.cpp12
-rw-r--r--include/clang/AST/ASTConsumer.h4
-rw-r--r--include/clang/Lex/Preprocessor.h3
-rw-r--r--include/clang/Sema/ASTStreamer.h3
12 files changed, 48 insertions, 50 deletions
diff --git a/Driver/ASTConsumers.cpp b/Driver/ASTConsumers.cpp
index 02e30d31b1..add349ce82 100644
--- a/Driver/ASTConsumers.cpp
+++ b/Driver/ASTConsumers.cpp
@@ -356,7 +356,7 @@ namespace {
public:
ASTDumper() : DeclPrinter() {}
- void Initialize(ASTContext &Context, unsigned MainFileID) {
+ void Initialize(ASTContext &Context) {
SM = &Context.getSourceManager();
}
@@ -400,7 +400,7 @@ namespace {
class ASTViewer : public ASTConsumer {
SourceManager *SM;
public:
- void Initialize(ASTContext &Context, unsigned MainFileID) {
+ void Initialize(ASTContext &Context) {
SM = &Context.getSourceManager();
}
@@ -482,7 +482,7 @@ namespace {
class LivenessVisitor : public CFGVisitor {
SourceManager *SM;
public:
- virtual void Initialize(ASTContext &Context, unsigned MainFileID) {
+ virtual void Initialize(ASTContext &Context) {
SM = &Context.getSourceManager();
}
@@ -507,7 +507,7 @@ namespace {
ASTContext *Ctx;
public:
DeadStoreVisitor(Diagnostic &diags) : Diags(diags) {}
- virtual void Initialize(ASTContext &Context, unsigned MainFileID) {
+ virtual void Initialize(ASTContext &Context) {
Ctx = &Context;
}
@@ -530,7 +530,7 @@ namespace {
ASTContext *Ctx;
public:
UninitValsVisitor(Diagnostic &diags) : Diags(diags) {}
- virtual void Initialize(ASTContext &Context, unsigned MainFileID) {
+ virtual void Initialize(ASTContext &Context) {
Ctx = &Context;
}
@@ -565,7 +565,7 @@ namespace {
LLVMEmitter(Diagnostic &diags, const LangOptions &LO)
: Diags(diags)
, Features(LO) {}
- virtual void Initialize(ASTContext &Context, unsigned MainFileID) {
+ virtual void Initialize(ASTContext &Context) {
Ctx = &Context;
M = new llvm::Module("foo");
M->setTargetTriple(Ctx->Target.getTargetTriple());
@@ -618,7 +618,7 @@ namespace {
const LangOptions &LO)
: Diags(diags), TU(LO), FName(F) {}
- virtual void Initialize(ASTContext &Context, unsigned MainFileID) {
+ virtual void Initialize(ASTContext &Context) {
TU.setContext(&Context);
}
diff --git a/Driver/DiagChecker.cpp b/Driver/DiagChecker.cpp
index 53eed43c2c..cc5dd7512e 100644
--- a/Driver/DiagChecker.cpp
+++ b/Driver/DiagChecker.cpp
@@ -82,16 +82,16 @@ static void FindDiagnostics(const std::string &Comment,
}
}
-/// FindExpectedDiags - Lex the file to finds all of the expected errors and
-/// warnings.
-static void FindExpectedDiags(Preprocessor &PP, unsigned MainFileID,
+/// FindExpectedDiags - Lex the main source file to find all of the
+// expected errors and warnings.
+static void FindExpectedDiags(Preprocessor &PP,
DiagList &ExpectedErrors,
DiagList &ExpectedWarnings) {
// Return comments as tokens, this is how we find expected diagnostics.
PP.SetCommentRetentionState(true, true);
// Enter the cave.
- PP.EnterMainSourceFile(MainFileID);
+ PP.EnterMainSourceFile();
// Turn off all warnings from relexing or preprocessing.
PP.getDiagnostics().setWarnOnExtensions(false);
@@ -225,14 +225,14 @@ static bool CheckResults(Preprocessor &PP,
/// CheckASTConsumer - Implement diagnostic checking for AST consumers.
-bool clang::CheckASTConsumer(Preprocessor &PP, unsigned MainFileID,
- ASTConsumer* C) {
+bool clang::CheckASTConsumer(Preprocessor &PP, ASTConsumer* C) {
+
// Parse the AST and run the consumer, ultimately deleting C.
- ParseAST(PP, MainFileID, C);
+ ParseAST(PP, C);
// Gather the set of expected diagnostics.
DiagList ExpectedErrors, ExpectedWarnings;
- FindExpectedDiags(PP, MainFileID, ExpectedErrors, ExpectedWarnings);
+ FindExpectedDiags(PP, ExpectedErrors, ExpectedWarnings);
// Check that the expected diagnostics occurred.
return CheckResults(PP, ExpectedErrors, ExpectedWarnings);
diff --git a/Driver/PrintPreprocessedOutput.cpp b/Driver/PrintPreprocessedOutput.cpp
index 109664b8cc..0c8a62ee66 100644
--- a/Driver/PrintPreprocessedOutput.cpp
+++ b/Driver/PrintPreprocessedOutput.cpp
@@ -531,7 +531,7 @@ bool PrintPPOutputPPCallbacks::AvoidConcat(const Token &PrevTok,
/// DoPrintPreprocessedInput - This implements -E mode.
///
-void clang::DoPrintPreprocessedInput(unsigned MainFileID, Preprocessor &PP) {
+void clang::DoPrintPreprocessedInput(Preprocessor &PP) {
// Inform the preprocessor whether we want it to retain comments or not, due
// to -C or -CC.
PP.SetCommentRetentionState(EnableCommentOutput, EnableMacroCommentOutput);
@@ -550,7 +550,7 @@ void clang::DoPrintPreprocessedInput(unsigned MainFileID, Preprocessor &PP) {
// After we have configured the preprocessor, enter the main file.
// Start parsing the specified input file.
- PP.EnterMainSourceFile(MainFileID);
+ PP.EnterMainSourceFile();
// Consume all of the tokens that come from the predefines buffer. Those
// should not be emitted into the output and are guaranteed to be at the
diff --git a/Driver/RewriteTest.cpp b/Driver/RewriteTest.cpp
index c5de070021..c9dd0f731c 100644
--- a/Driver/RewriteTest.cpp
+++ b/Driver/RewriteTest.cpp
@@ -62,7 +62,7 @@ namespace {
static const int OBJC_ABI_VERSION =7 ;
public:
- void Initialize(ASTContext &context, unsigned mainFileID) {
+ void Initialize(ASTContext &context) {
Context = &context;
SM = &Context->getSourceManager();
MsgSendFunctionDecl = 0;
@@ -81,7 +81,7 @@ namespace {
SuperStructDecl = 0;
// Get the ID and start/end of the main file.
- MainFileID = mainFileID;
+ MainFileID = SM->getMainFileID();
const llvm::MemoryBuffer *MainBuf = SM->getBuffer(MainFileID);
MainFileStart = MainBuf->getBufferStart();
MainFileEnd = MainBuf->getBufferEnd();
@@ -123,7 +123,7 @@ namespace {
"extern Protocol *objc_getProtocol(const char *);\n"
"#include <objc/objc.h>\n";
- Rewrite.InsertText(SourceLocation::getFileLoc(mainFileID, 0),
+ Rewrite.InsertText(SourceLocation::getFileLoc(MainFileID, 0),
s, strlen(s));
}
diff --git a/Driver/SerializationTest.cpp b/Driver/SerializationTest.cpp
index d43b570345..a668c7466b 100644
--- a/Driver/SerializationTest.cpp
+++ b/Driver/SerializationTest.cpp
@@ -42,7 +42,7 @@ public:
~SerializationTest();
- virtual void Initialize(ASTContext& context, unsigned) {
+ virtual void Initialize(ASTContext& context) {
TU.setContext(&context);
}
diff --git a/Driver/clang.cpp b/Driver/clang.cpp
index 1bb4a1aa04..f38c83a6f8 100644
--- a/Driver/clang.cpp
+++ b/Driver/clang.cpp
@@ -878,9 +878,9 @@ static void InitializeIncludePaths(HeaderSearch &Headers, FileManager &FM,
// Basic Parser driver
//===----------------------------------------------------------------------===//
-static void ParseFile(Preprocessor &PP, MinimalAction *PA, unsigned MainFileID){
+static void ParseFile(Preprocessor &PP, MinimalAction *PA){
Parser P(PP, *PA);
- PP.EnterMainSourceFile(MainFileID);
+ PP.EnterMainSourceFile();
// Parsing the specified input file.
P.ParseTranslationUnit();
@@ -963,7 +963,7 @@ static void ProcessInputFile(Preprocessor &PP, const std::string &InFile,
case DumpTokens: { // Token dump mode.
Token Tok;
// Start parsing the specified input file.
- PP.EnterMainSourceFile(MainFileID);
+ PP.EnterMainSourceFile();
do {
PP.Lex(Tok);
PP.DumpToken(Tok, true);
@@ -975,7 +975,7 @@ static void ProcessInputFile(Preprocessor &PP, const std::string &InFile,
case RunPreprocessorOnly: { // Just lex as fast as we can, no output.
Token Tok;
// Start parsing the specified input file.
- PP.EnterMainSourceFile(MainFileID);
+ PP.EnterMainSourceFile();
do {
PP.Lex(Tok);
} while (Tok.isNot(tok::eof));
@@ -984,18 +984,17 @@ static void ProcessInputFile(Preprocessor &PP, const std::string &InFile,
}
case PrintPreprocessedInput: // -E mode.
- DoPrintPreprocessedInput(MainFileID, PP);
+ DoPrintPreprocessedInput(PP);
ClearSourceMgr = true;
break;
case ParseNoop: // -parse-noop
- ParseFile(PP, new MinimalAction(PP.getIdentifierTable()), MainFileID);
+ ParseFile(PP, new MinimalAction(PP.getIdentifierTable()));
ClearSourceMgr = true;
break;
case ParsePrintCallbacks:
- ParseFile(PP, CreatePrintParserActionsAction(PP.getIdentifierTable()),
- MainFileID);
+ ParseFile(PP, CreatePrintParserActionsAction(PP.getIdentifierTable()));
ClearSourceMgr = true;
break;
@@ -1006,10 +1005,10 @@ static void ProcessInputFile(Preprocessor &PP, const std::string &InFile,
if (Consumer) {
if (VerifyDiagnostics)
- exit(CheckASTConsumer(PP, MainFileID, Consumer));
+ exit(CheckASTConsumer(PP, Consumer));
// This deletes Consumer.
- ParseAST(PP, MainFileID, Consumer, Stats);
+ ParseAST(PP, Consumer, Stats);
}
if (Stats) {
@@ -1062,8 +1061,7 @@ static void ProcessSerializedFile(const std::string& InFile, Diagnostic& Diag,
exit (1);
}
- // FIXME: only work on consumers that do not require MainFileID.
- Consumer->Initialize(*TU->getContext(), 0);
+ Consumer->Initialize(*TU->getContext());
for (TranslationUnit::iterator I=TU->begin(), E=TU->end(); I!=E; ++I)
Consumer->HandleTopLevelDecl(*I);
diff --git a/Driver/clang.h b/Driver/clang.h
index 77ce59ed1c..d6b7179b12 100644
--- a/Driver/clang.h
+++ b/Driver/clang.h
@@ -27,18 +27,17 @@ class IdentifierTable;
class SourceManager;
/// DoPrintPreprocessedInput - Implement -E mode.
-void DoPrintPreprocessedInput(unsigned MainFileID, Preprocessor &PP);
+void DoPrintPreprocessedInput(Preprocessor &PP);
/// CreatePrintParserActionsAction - Return the actions implementation that
/// implements the -parse-print-callbacks option.
MinimalAction *CreatePrintParserActionsAction(IdentifierTable &);
/// EmitLLVMFromASTs - Implement -emit-llvm, which generates llvm IR from C.
-void EmitLLVMFromASTs(Preprocessor &PP, unsigned MainFileID,
- bool PrintStats);
+void EmitLLVMFromASTs(Preprocessor &PP, bool PrintStats);
/// CheckASTConsumer - Implement diagnostic checking for AST consumers.
-bool CheckASTConsumer(Preprocessor &PP, unsigned MainFileID, ASTConsumer* C);
+bool CheckASTConsumer(Preprocessor &PP, ASTConsumer* C);
} // end namespace clang
diff --git a/Lex/Preprocessor.cpp b/Lex/Preprocessor.cpp
index fb4628be71..a7880fa7fc 100644
--- a/Lex/Preprocessor.cpp
+++ b/Lex/Preprocessor.cpp
@@ -431,7 +431,10 @@ static void InitializePredefinedMacros(Preprocessor &PP,
/// EnterMainSourceFile - Enter the specified FileID as the main source file,
/// which implicitly adds the builting defines etc.
-void Preprocessor::EnterMainSourceFile(unsigned MainFileID) {
+void Preprocessor::EnterMainSourceFile() {
+
+ unsigned MainFileID = SourceMgr.getMainFileID();
+
// Enter the main file source buffer.
EnterSourceFile(MainFileID, 0);
diff --git a/Sema/ASTStreamer.cpp b/Sema/ASTStreamer.cpp
index b51874ca35..b6b6300413 100644
--- a/Sema/ASTStreamer.cpp
+++ b/Sema/ASTStreamer.cpp
@@ -25,9 +25,10 @@ namespace {
class ASTStreamer {
Parser P;
public:
- ASTStreamer(Preprocessor &pp, ASTContext &ctxt, unsigned MainFileID)
+ ASTStreamer(Preprocessor &pp, ASTContext &ctxt)
: P(pp, *new Sema(pp, ctxt)) {
- pp.EnterMainSourceFile(MainFileID);
+
+ pp.EnterMainSourceFile();
// Initialize the parser.
P.Initialize();
@@ -73,8 +74,7 @@ void ASTStreamer::PrintStats() const {
/// ParseAST - Parse the entire file specified, notifying the ASTConsumer as
/// the file is parsed. This takes ownership of the ASTConsumer and
/// ultimately deletes it.
-void clang::ParseAST(Preprocessor &PP, unsigned MainFileID,
- ASTConsumer *Consumer, bool PrintStats) {
+void clang::ParseAST(Preprocessor &PP, ASTConsumer *Consumer, bool PrintStats) {
// Collect global stats on Decls/Stmts (until we have a module streamer).
if (PrintStats) {
Decl::CollectingStats(true);
@@ -84,9 +84,9 @@ void clang::ParseAST(Preprocessor &PP, unsigned MainFileID,
ASTContext Context(PP.getSourceManager(), PP.getTargetInfo(),
PP.getIdentifierTable(), PP.getSelectorTable());
- ASTStreamer Streamer(PP, Context, MainFileID);
+ ASTStreamer Streamer(PP, Context);
- Consumer->Initialize(Context, MainFileID);
+ Consumer->Initialize(Context);
while (Decl *D = Streamer.ReadTopLevelDecl())
Consumer->HandleTopLevelDecl(D);
diff --git a/include/clang/AST/ASTConsumer.h b/include/clang/AST/ASTConsumer.h
index 7221ab789b..f0bc07dd34 100644
--- a/include/clang/AST/ASTConsumer.h
+++ b/include/clang/AST/ASTConsumer.h
@@ -26,8 +26,8 @@ public:
virtual ~ASTConsumer();
/// Initialize - This is called to initialize the consumer, providing the
- /// ASTContext and the file ID of the primary file.
- virtual void Initialize(ASTContext &Context, unsigned MainFileID) {}
+ /// ASTContext.
+ virtual void Initialize(ASTContext &Context) {}
/// HandleTopLevelDecl - Handle the specified top-level declaration. This is
/// called by HandleTopLevelDeclaration to process every top-level Decl*.
diff --git a/include/clang/Lex/Preprocessor.h b/include/clang/Lex/Preprocessor.h
index 0ad83f71f6..59e88716df 100644
--- a/include/clang/Lex/Preprocessor.h
+++ b/include/clang/Lex/Preprocessor.h
@@ -217,8 +217,7 @@ public:
/// EnterMainSourceFile - Enter the specified FileID as the main source file,
/// which implicitly adds the builtin defines etc.
- void EnterMainSourceFile(unsigned CurFileID);
-
+ void EnterMainSourceFile();
/// EnterSourceFile - Add a source file to the top of the include stack and
/// start lexing tokens from it instead of the current buffer. If isMainFile
diff --git a/include/clang/Sema/ASTStreamer.h b/include/clang/Sema/ASTStreamer.h
index bffc4db993..5e9b65996f 100644
--- a/include/clang/Sema/ASTStreamer.h
+++ b/include/clang/Sema/ASTStreamer.h
@@ -23,8 +23,7 @@ namespace clang {
/// ParseAST - Parse the entire file specified, notifying the ASTConsumer as
/// the file is parsed. This takes ownership of the ASTConsumer and
/// ultimately deletes it.
- void ParseAST(Preprocessor &pp, unsigned MainFileID,
- ASTConsumer *C, bool PrintStats = false);
+ void ParseAST(Preprocessor &pp, ASTConsumer *C, bool PrintStats = false);
} // end namespace clang
#endif