[cfe-commits] r70259 - in /cfe/trunk: lib/Frontend/PCHReader.cpp tools/clang-cc/clang-cc.cpp
Chris Lattner
sabre at nondot.org
Mon Apr 27 15:02:30 PDT 2009
Author: lattner
Date: Mon Apr 27 17:02:30 2009
New Revision: 70259
URL: http://llvm.org/viewvc/llvm-project?rev=70259&view=rev
Log:
-E, -Eonly and -parse-noop now work with PCH!
Modified:
cfe/trunk/lib/Frontend/PCHReader.cpp
cfe/trunk/tools/clang-cc/clang-cc.cpp
Modified: cfe/trunk/lib/Frontend/PCHReader.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/PCHReader.cpp?rev=70259&r1=70258&r2=70259&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/PCHReader.cpp (original)
+++ cfe/trunk/lib/Frontend/PCHReader.cpp Mon Apr 27 17:02:30 2009
@@ -270,6 +270,8 @@
// Read all of the declarations visible at global scope with this
// name.
Sema *SemaObj = Reader.getSema();
+ if (!SemaObj) return II;
+
while (DataLen > 0) {
NamedDecl *D = cast<NamedDecl>(Reader.GetDecl(ReadUnalignedLE32(d)));
if (SemaObj) {
Modified: cfe/trunk/tools/clang-cc/clang-cc.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-cc/clang-cc.cpp?rev=70259&r1=70258&r2=70259&view=diff
==============================================================================
--- cfe/trunk/tools/clang-cc/clang-cc.cpp (original)
+++ cfe/trunk/tools/clang-cc/clang-cc.cpp Mon Apr 27 17:02:30 2009
@@ -1667,12 +1667,8 @@
break;
}
- case PrintPreprocessedInput: { // -E mode.
- llvm::TimeRegion Timer(ClangFrontendTimer);
- DoPrintPreprocessedInput(PP, OutputFile);
- ClearSourceMgr = true;
+ case PrintPreprocessedInput:
break;
- }
case ParseNoop:
break;
@@ -1750,19 +1746,23 @@
/* FreeMemory = */ !DisableFree,
/* size_reserve = */0,
/* InitializeBuiltins = */ImplicitIncludePCH.empty()));
-
+ llvm::OwningPtr<PCHReader> Reader;
+ llvm::OwningPtr<ExternalASTSource> Source;
+
if (!ImplicitIncludePCH.empty()) {
+ Reader.reset(new PCHReader(PP, ContextOwner.get()));
+
// The user has asked us to include a precompiled header. Load
// the precompiled header into the AST context.
- llvm::OwningPtr<PCHReader> Reader(new PCHReader(PP, ContextOwner.get()));
switch (Reader->ReadPCH(ImplicitIncludePCH)) {
case PCHReader::Success: {
// Attach the PCH reader to the AST context as an external AST
// source, so that declarations will be deserialized from the
// PCH file as needed.
- llvm::OwningPtr<ExternalASTSource> Source(Reader.take());
- if (ContextOwner)
+ if (ContextOwner) {
+ Source.reset(Reader.take());
ContextOwner->setExternalSource(Source);
+ }
// Clear out the predefines buffer, because all of the
// predefines are already in the PCH file.
@@ -1814,6 +1814,10 @@
llvm::TimeRegion Timer(ClangFrontendTimer);
ParseFile(PP, new MinimalAction(PP));
ClearSourceMgr = true;
+ } else if (PA == PrintPreprocessedInput){ // -E mode.
+ llvm::TimeRegion Timer(ClangFrontendTimer);
+ DoPrintPreprocessedInput(PP, OutputFile);
+ ClearSourceMgr = true;
}
if (FixItRewrite)
More information about the cfe-commits
mailing list