aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Serialization/ASTWriter.cpp3
-rw-r--r--test/Modules/macros.c5
2 files changed, 7 insertions, 1 deletions
diff --git a/lib/Serialization/ASTWriter.cpp b/lib/Serialization/ASTWriter.cpp
index 28a69d4bdb..e2e1d2b2b5 100644
--- a/lib/Serialization/ASTWriter.cpp
+++ b/lib/Serialization/ASTWriter.cpp
@@ -2300,7 +2300,8 @@ public:
uint32_t Bits = 0;
bool hasMacroDefinition
= II->hasMacroDefinition() &&
- (Macro || (Macro = PP.getMacroInfo(II))) && !Macro->isBuiltinMacro();
+ (Macro || (Macro = PP.getMacroInfo(II))) && !Macro->isBuiltinMacro() &&
+ (!IsModule || Macro->isExported());
Bits = (uint32_t)II->getObjCOrBuiltinID();
Bits = (Bits << 1) | unsigned(hasMacroDefinition);
Bits = (Bits << 1) | unsigned(II->isExtensionToken());
diff --git a/test/Modules/macros.c b/test/Modules/macros.c
index 578e09fbda..8fefe7a9cf 100644
--- a/test/Modules/macros.c
+++ b/test/Modules/macros.c
@@ -9,6 +9,8 @@
#__export_macro__ INTEGER
#__export_macro__ DOUBLE
+int (INTEGER);
+
#else
__import_module__ macros;
@@ -30,4 +32,7 @@ DOUBLE *dp = &d;
#__export_macro__ WIBBLE // expected-error{{no macro named 'WIBBLE' to export}}
+void f() {
+ int i = INTEGER; // the value was exported, the macro was not.
+}
#endif