summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaInit.cpp
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2014-11-12 21:30:23 +0000
committerReid Kleckner <reid@kleckner.net>2014-11-12 21:30:23 +0000
commit6d829bdbef0da4ebb626fa793652c599e9826ed8 (patch)
tree4a9c4d43fd77ec4b429d447d6c7cd9d6de3f914d /clang/lib/Sema/SemaInit.cpp
parent55a333d89bf09897cef7b3cf0b9c97c7498f76ce (diff)
downloadbcm5719-llvm-6d829bdbef0da4ebb626fa793652c599e9826ed8.tar.gz
bcm5719-llvm-6d829bdbef0da4ebb626fa793652c599e9826ed8.zip
Fix brace init of unions with unnamed struct members
The check for unnamed members was intended to skip unnamed bitfields, but it ended up skipping unnamed structs. This lead to an assertion in IRGen. llvm-svn: 221818
Diffstat (limited to 'clang/lib/Sema/SemaInit.cpp')
-rw-r--r--clang/lib/Sema/SemaInit.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp
index d1e51de6210..39d6a575aa2 100644
--- a/clang/lib/Sema/SemaInit.cpp
+++ b/clang/lib/Sema/SemaInit.cpp
@@ -1555,10 +1555,11 @@ void InitListChecker::CheckStructUnionTypes(const InitializedEntity &Entity,
}
}
- // Value-initialize the first named member of the union.
+ // Value-initialize the first member of the union that isn't an unnamed
+ // bitfield.
for (RecordDecl::field_iterator FieldEnd = RD->field_end();
Field != FieldEnd; ++Field) {
- if (Field->getDeclName()) {
+ if (!Field->isUnnamedBitfield()) {
if (VerifyOnly)
CheckEmptyInitializable(
InitializedEntity::InitializeMember(*Field, &Entity),
OpenPOWER on IntegriCloud