mirror of https://github.com/microsoft/clang.git
Call setMustBuildLookupTable on TagDecls in ExternalASTMerger
Summary: setMustBuildLookupTable should be called on imported TagDecls otherwise we may fail to import their member decls (if they have any). Not calling the setMustBuildLookupTable method results in a failure in the attached test case when lookup for the 'x' member fails on struct S, which hasn't had its decls imported elsewhere. (By contrast the member-in-struct testcase hasn't run into this issue because the import of its decls is triggered when the struct instance is defined, and the member access follows this). Reviewers: spyffe, rsmith Reviewed By: spyffe, rsmith Differential Revision: https://reviews.llvm.org/D34253 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@305619 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0c8ec43378
commit
30060bff5b
|
@ -41,6 +41,7 @@ public:
|
|||
Decl *Imported(Decl *From, Decl *To) override {
|
||||
if (auto ToTag = dyn_cast<TagDecl>(To)) {
|
||||
ToTag->setHasExternalLexicalStorage();
|
||||
ToTag->setMustBuildLookupTable();
|
||||
} else if (auto ToNamespace = dyn_cast<NamespaceDecl>(To)) {
|
||||
ToNamespace->setHasExternalVisibleStorage();
|
||||
}
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
struct S {
|
||||
int a;
|
||||
};
|
|
@ -0,0 +1,4 @@
|
|||
// RUN: clang-import-test -import %S/Inputs/S.c -expression %s
|
||||
void expr(struct S *MyS) {
|
||||
MyS->a = 3;
|
||||
}
|
Loading…
Reference in New Issue