summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ASTStructuralEquivalence.cpp
diff options
context:
space:
mode:
authorAleksei Sidorin <a.sidorin@samsung.com>2018-04-05 15:31:49 +0000
committerAleksei Sidorin <a.sidorin@samsung.com>2018-04-05 15:31:49 +0000
commit499de6ccbe96aa8dbf0d777dbfc8127ad7ae8cda (patch)
treefb8bb562bb9c61665195c4f7ed828586b87bafc7 /clang/lib/AST/ASTStructuralEquivalence.cpp
parent4b3eefa5e84484da29cd95df8c7c0946a07bc98a (diff)
downloadbcm5719-llvm-499de6ccbe96aa8dbf0d777dbfc8127ad7ae8cda.tar.gz
bcm5719-llvm-499de6ccbe96aa8dbf0d777dbfc8127ad7ae8cda.zip
[ASTImporter] Fix for importing unnamed structs
Patch by Peter Szecsi! Differential Revision: https://reviews.llvm.org/D30876 llvm-svn: 329301
Diffstat (limited to 'clang/lib/AST/ASTStructuralEquivalence.cpp')
-rw-r--r--clang/lib/AST/ASTStructuralEquivalence.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/AST/ASTStructuralEquivalence.cpp b/clang/lib/AST/ASTStructuralEquivalence.cpp
index da0a26e40b1..d74042c8835 100644
--- a/clang/lib/AST/ASTStructuralEquivalence.cpp
+++ b/clang/lib/AST/ASTStructuralEquivalence.cpp
@@ -1256,6 +1256,10 @@ StructuralEquivalenceContext::findUntaggedStructOrUnionIndex(RecordDecl *Anon) {
// If the field looks like this:
// struct { ... } A;
QualType FieldType = F->getType();
+ // In case of nested structs.
+ while (const auto *ElabType = dyn_cast<ElaboratedType>(FieldType))
+ FieldType = ElabType->getNamedType();
+
if (const auto *RecType = dyn_cast<RecordType>(FieldType)) {
const RecordDecl *RecDecl = RecType->getDecl();
if (RecDecl->getDeclContext() == Owner && !RecDecl->getIdentifier()) {
OpenPOWER on IntegriCloud