[cfe-commits] r139750 - in /cfe/trunk: lib/Frontend/CompilerInstance.cpp test/Modules/macros.c
Douglas Gregor
dgregor at apple.com
Wed Sep 14 16:13:09 PDT 2011
Author: dgregor
Date: Wed Sep 14 18:13:09 2011
New Revision: 139750
URL: http://llvm.org/viewvc/llvm-project?rev=139750&view=rev
Log:
Make -E work with module imports
Modified:
cfe/trunk/lib/Frontend/CompilerInstance.cpp
cfe/trunk/test/Modules/macros.c
Modified: cfe/trunk/lib/Frontend/CompilerInstance.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInstance.cpp?rev=139750&r1=139749&r2=139750&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/CompilerInstance.cpp (original)
+++ cfe/trunk/lib/Frontend/CompilerInstance.cpp Wed Sep 14 18:13:09 2011
@@ -736,20 +736,26 @@
// If we don't already have an ASTReader, create one now.
if (!ModuleManager) {
+ if (!hasASTContext())
+ createASTContext();
+
std::string Sysroot = getHeaderSearchOpts().Sysroot;
const PreprocessorOptions &PPOpts = getPreprocessorOpts();
ModuleManager = new ASTReader(getPreprocessor(), *Context,
Sysroot.empty() ? "" : Sysroot.c_str(),
PPOpts.DisablePCHValidation,
PPOpts.DisableStatCache);
- ModuleManager->setDeserializationListener(
- getASTConsumer().GetASTDeserializationListener());
- getASTContext().setASTMutationListener(
- getASTConsumer().GetASTMutationListener());
+ if (hasASTConsumer()) {
+ ModuleManager->setDeserializationListener(
+ getASTConsumer().GetASTDeserializationListener());
+ getASTContext().setASTMutationListener(
+ getASTConsumer().GetASTMutationListener());
+ }
llvm::OwningPtr<ExternalASTSource> Source;
Source.reset(ModuleManager);
getASTContext().setExternalSource(Source);
- ModuleManager->InitializeSema(getSema());
+ if (hasSema())
+ ModuleManager->InitializeSema(getSema());
}
// Try to load the module we found.
Modified: cfe/trunk/test/Modules/macros.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/macros.c?rev=139750&r1=139749&r2=139750&view=diff
==============================================================================
--- cfe/trunk/test/Modules/macros.c (original)
+++ cfe/trunk/test/Modules/macros.c Wed Sep 14 18:13:09 2011
@@ -1,5 +1,6 @@
// RUN: %clang_cc1 -emit-module -o %t/macros.pcm -DMODULE %s
// RUN: %clang_cc1 -verify -fmodule-cache-path %t -fdisable-module-hash %s
+// RUN: %clang_cc1 -E -fmodule-cache-path %t -fdisable-module-hash %s | FileCheck -check-prefix CHECK-PREPROCESSED %s
#if defined(MODULE)
#define INTEGER(X) int
@@ -27,12 +28,14 @@
# error MODULE macro should not be visible
#endif
+// CHECK-PREPROCESSED: double d
double d;
DOUBLE *dp = &d;
#__export_macro__ WIBBLE // expected-error{{no macro named 'WIBBLE' to export}}
void f() {
+ // CHECK-PREPROCESSED: int i = INTEGER;
int i = INTEGER; // the value was exported, the macro was not.
}
#endif
More information about the cfe-commits
mailing list