diff options
-rw-r--r-- | lib/Serialization/ASTWriter.cpp | 3 | ||||
-rw-r--r-- | test/Modules/macros.c | 5 |
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 |