diff options
-rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 6 | ||||
-rw-r--r-- | clang/test/Modules/Inputs/builtin_sub.h | 1 | ||||
-rw-r--r-- | clang/test/Modules/Inputs/use-builtin.h | 2 | ||||
-rw-r--r-- | clang/test/Modules/builtins.m | 8 |
4 files changed, 15 insertions, 2 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index 4838a43e033..c54f659f09f 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -780,7 +780,8 @@ IdentifierInfo *ASTIdentifierLookupTrait::ReadData(const internal_key_type& k, } if (!II->isFromAST()) { II->setIsFromAST(); - if (isInterestingIdentifier(Reader, *II, F.isModule())) + bool IsModule = Reader.PP.getCurrentModule() != nullptr; + if (isInterestingIdentifier(Reader, *II, IsModule)) II->setChangedSinceDeserialization(); } Reader.markIdentifierUpToDate(II); @@ -3511,7 +3512,8 @@ ASTReader::ASTReadResult ASTReader::ReadAST(const std::string &FileName, // whether we need to serialize it. if (!II.isFromAST()) { II.setIsFromAST(); - if (isInterestingIdentifier(*this, II, F.isModule())) + bool IsModule = PP.getCurrentModule() != nullptr; + if (isInterestingIdentifier(*this, II, IsModule)) II.setChangedSinceDeserialization(); } diff --git a/clang/test/Modules/Inputs/builtin_sub.h b/clang/test/Modules/Inputs/builtin_sub.h index 79e3c033259..5752ef984e9 100644 --- a/clang/test/Modules/Inputs/builtin_sub.h +++ b/clang/test/Modules/Inputs/builtin_sub.h @@ -2,3 +2,4 @@ int getBos1(void) { return __builtin_object_size(p, 0); } +#define IS_CONST(x) __builtin_constant_p(x) diff --git a/clang/test/Modules/Inputs/use-builtin.h b/clang/test/Modules/Inputs/use-builtin.h new file mode 100644 index 00000000000..fd047419a6d --- /dev/null +++ b/clang/test/Modules/Inputs/use-builtin.h @@ -0,0 +1,2 @@ +@import builtin; +@import builtin.sub; diff --git a/clang/test/Modules/builtins.m b/clang/test/Modules/builtins.m index c095f4f0164..33d23979ce7 100644 --- a/clang/test/Modules/builtins.m +++ b/clang/test/Modules/builtins.m @@ -10,7 +10,15 @@ int bar() { return __builtin_object_size(p, 0); } +int baz() { + return IS_CONST(0); +} // RUN: rm -rf %t // RUN: %clang_cc1 -fmodules-cache-path=%t -fmodules -fimplicit-module-maps -I %S/Inputs %s -verify + +// RUN: rm -rf %t.pch.cache +// RUN: %clang_cc1 -fmodules-cache-path=%t.pch.cache -fmodules -fimplicit-module-maps -I %S/Inputs -emit-pch -o %t.pch -x objective-c-header %S/Inputs/use-builtin.h +// RUN: %clang_cc1 -fmodules-cache-path=%t.pch.cache -fmodules -fimplicit-module-maps -I %S/Inputs %s -include-pch %t.pch %s -verify + // expected-no-diagnostics |