summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization/ASTReaderDecl.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-03-27 01:37:43 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-03-27 01:37:43 +0000
commita523022b5384d7a0901beea7a5f36ee9c09ba339 (patch)
tree32093f3879b65f4fb8eddf0cc4d1c80942c4af51 /clang/lib/Serialization/ASTReaderDecl.cpp
parentc9ee4de6ca41023b9231c234917d284ee8e87da9 (diff)
downloadbcm5719-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.cpp11
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;
}
OpenPOWER on IntegriCloud