diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-03-27 01:37:43 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-03-27 01:37:43 +0000 |
commit | a523022b5384d7a0901beea7a5f36ee9c09ba339 (patch) | |
tree | 32093f3879b65f4fb8eddf0cc4d1c80942c4af51 /clang/lib/Serialization/ASTReaderDecl.cpp | |
parent | c9ee4de6ca41023b9231c234917d284ee8e87da9 (diff) | |
download | bcm5719-llvm-a523022b5384d7a0901beea7a5f36ee9c09ba339.tar.gz bcm5719-llvm-a523022b5384d7a0901beea7a5f36ee9c09ba339.zip |
[modules] Handle defining a tag with a typedef name for linkage purposes on top of an existing imported-but-not-visible definition.
llvm-svn: 233345
Diffstat (limited to 'clang/lib/Serialization/ASTReaderDecl.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTReaderDecl.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp index 3499c8ea488..de2c6253069 100644 --- a/clang/lib/Serialization/ASTReaderDecl.cpp +++ b/clang/lib/Serialization/ASTReaderDecl.cpp @@ -2652,12 +2652,11 @@ static NamedDecl *getDeclForMerging(NamedDecl *Found, // If we found a typedef declaration that gives a name to some other // declaration, then we want that inner declaration. Declarations from // AST files are handled via ImportedTypedefNamesForLinkage. - if (Found->isFromASTFile()) return 0; - if (auto *TND = dyn_cast<TypedefNameDecl>(Found)) { - if (auto *TT = TND->getTypeSourceInfo()->getType()->getAs<TagType>()) - if (TT->getDecl()->getTypedefNameForAnonDecl() == TND) - return TT->getDecl(); - } + if (Found->isFromASTFile()) + return 0; + + if (auto *TND = dyn_cast<TypedefNameDecl>(Found)) + return TND->getAnonDeclWithTypedefName(); return 0; } |