diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-10-20 18:29:25 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-10-20 18:29:25 +0000 |
| commit | f70a906a11d68f716a7337341b4dddb418081a3f (patch) | |
| tree | 1ae83b4abab111a4213192cae7b9f8df5f022761 /clang/lib/Sema | |
| parent | 521e5ef4ceb2f2cf67e44b2dc0442a6c9ca880fb (diff) | |
| download | bcm5719-llvm-f70a906a11d68f716a7337341b4dddb418081a3f.tar.gz bcm5719-llvm-f70a906a11d68f716a7337341b4dddb418081a3f.zip | |
[c++1z] Fix assertion failure when using the wrong number of bindings for a
struct with unnamed bitfields.
llvm-svn: 284761
Diffstat (limited to 'clang/lib/Sema')
| -rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index f86b793df57..c1938d5e8e6 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -1279,7 +1279,9 @@ static bool checkMemberDecomposition(Sema &S, ArrayRef<BindingDecl*> Bindings, DecompType.getQualifiers()); auto DiagnoseBadNumberOfBindings = [&]() -> bool { - unsigned NumFields = std::distance(RD->field_begin(), RD->field_end()); + unsigned NumFields = + std::count_if(RD->field_begin(), RD->field_end(), + [](FieldDecl *FD) { return !FD->isUnnamedBitfield(); }); assert(Bindings.size() != NumFields); S.Diag(Src->getLocation(), diag::err_decomp_decl_wrong_number_bindings) << DecompType << (unsigned)Bindings.size() << NumFields |

