diff options
| -rw-r--r-- | clang/lib/Serialization/ASTWriter.cpp | 3 | ||||
| -rw-r--r-- | clang/test/Modules/macros.c | 5 |
2 files changed, 7 insertions, 1 deletions
diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp index 28a69d4..e2e1d2b 100644 --- a/clang/lib/Serialization/ASTWriter.cpp +++ b/clang/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/clang/test/Modules/macros.c b/clang/test/Modules/macros.c index 578e09f..8fefe7a 100644 --- a/clang/test/Modules/macros.c +++ b/clang/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 |
