diff options
author | John McCall <rjmccall@apple.com> | 2010-01-13 22:07:44 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2010-01-13 22:07:44 +0000 |
commit | 64f7e258e9c43eefb7f82dfcd600abeed48dc395 (patch) | |
tree | 8e2f465bc47a650db3f71d1b3bebcfbf7eab9d61 /lib/Sema/Sema.cpp | |
parent | c38c3e1e726630458154534227d74eda833d26a0 (diff) |
Don't a.k.a. through the primary typedef of an anonymous tag decl.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93362 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/Sema.cpp')
-rw-r--r-- | lib/Sema/Sema.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Sema/Sema.cpp b/lib/Sema/Sema.cpp index fefe924bc4..171101bb96 100644 --- a/lib/Sema/Sema.cpp +++ b/lib/Sema/Sema.cpp @@ -110,6 +110,12 @@ static bool ShouldAKA(ASTContext &Context, QualType QT, if (isa<VectorType>(Underlying)) break; + // Don't desugar through the primary typedef of an anonymous type. + if (isa<TagType>(Underlying) && isa<TypedefType>(QT)) + if (cast<TagType>(Underlying)->getDecl()->getTypedefForAnonDecl() == + cast<TypedefType>(QT)->getDecl()) + break; + // Otherwise, we're tearing through something opaque; note that // we'll eventually need an a.k.a. clause and keep going. AKA = true; |