diff options
| author | Akira Hatanaka <ahatanaka@apple.com> | 2017-01-17 19:35:54 +0000 |
|---|---|---|
| committer | Akira Hatanaka <ahatanaka@apple.com> | 2017-01-17 19:35:54 +0000 |
| commit | 8eccb9bbb1e49823d59d2e85e40c6c793c2bb588 (patch) | |
| tree | 461686d4d2c0825042a8dba1ad48380b908a7ff4 /clang/lib | |
| parent | 270dd41f751e4052eb10cc7f637a4ba844dabe1f (diff) | |
| download | bcm5719-llvm-8eccb9bbb1e49823d59d2e85e40c6c793c2bb588.tar.gz bcm5719-llvm-8eccb9bbb1e49823d59d2e85e40c6c793c2bb588.zip | |
[Sema] Fix bug in handling of designated initializer.
CheckDesignatedInitializer wasn't taking into account the base classes
when computing the index for the field in the derived class, which
caused the test case to crash during IRGen because of a malformed AST.
rdar://problem/26795040
Differential Revision: https://reviews.llvm.org/D28705
llvm-svn: 292245
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Sema/SemaInit.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp index 45eff5ee6b6..c385689d4c3 100644 --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -2237,6 +2237,10 @@ InitListChecker::CheckDesignatedInitializer(const InitializedEntity &Entity, } unsigned FieldIndex = 0; + + if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RT->getDecl())) + FieldIndex = CXXRD->getNumBases(); + for (auto *FI : RT->getDecl()->fields()) { if (FI->isUnnamedBitfield()) continue; |

