commit | e9a05b7fd6ece68310707d10bc747a702a9af4a8 | [log] [tgz] |
---|---|---|
author | Anders Carlsson <andersca@mac.com> | Thu Jun 03 15:36:07 2010 +0000 |
committer | Anders Carlsson <andersca@mac.com> | Thu Jun 03 15:36:07 2010 +0000 |
tree | 42c1ecf698feb7112821ee40400add0565919091 | |
parent | d6db976dd4c48b556862d093fb564b9cbc09aae3 [diff] |
Don't try to explicitly zero out bit-fields. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105391 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGExprConstant.cpp b/lib/CodeGen/CGExprConstant.cpp index 21a2a60..a145a66 100644 --- a/lib/CodeGen/CGExprConstant.cpp +++ b/lib/CodeGen/CGExprConstant.cpp
@@ -1117,6 +1117,11 @@ for (RecordDecl::field_iterator I = RD->field_begin(), E = RD->field_end(); I != E; ++I) { const FieldDecl *FD = *I; + + // Ignore bit fields. + if (FD->isBitField()) + continue; + unsigned FieldNo = Layout.getLLVMFieldNo(FD); Elements[FieldNo] = EmitNullConstant(FD->getType()); }
diff --git a/test/CodeGenCXX/pointers-to-data-members.cpp b/test/CodeGenCXX/pointers-to-data-members.cpp index e0e4e0c..e527c72 100644 --- a/test/CodeGenCXX/pointers-to-data-members.cpp +++ b/test/CodeGenCXX/pointers-to-data-members.cpp
@@ -172,3 +172,14 @@ D d; } + +namespace Test1 { + +// Don't crash when A contains a bit-field. +struct A { + int A::* a; + int b : 10; +}; +A a; + +}