[CodeGen] Fix an assert in EmitNullConstant.
authorAkira Hatanaka <ahatanaka@apple.com>
Tue, 13 Sep 2016 22:13:02 +0000 (22:13 +0000)
committerAkira Hatanaka <ahatanaka@apple.com>
Tue, 13 Sep 2016 22:13:02 +0000 (22:13 +0000)
commit255abad9b1264da0ee2399012d073c424a31b2f9
treee47e56cb238b429111a122549cc5f3c65cb2d882
parentd33b4a6292a4227bba53a73e33ba553e1cc67fb9
[CodeGen] Fix an assert in EmitNullConstant.

r235815 changed CGRecordLowering::accumulateBases to ignore non-virtual
bases of size 0, which prevented adding those non-virtual bases to
CGRecordLayout's NonVirtualBases. This caused clang to assert when
CGRecordLayout::getNonVirtualBaseLLVMFieldNo was called in
EmitNullConstant. This commit fixes the bug by ignoring zero-sized
non-virtual bases in EmitNullConstant.

rdar://problem/28100139

Differential Revision: https://reviews.llvm.org/D24312

llvm-svn: 281405
clang/lib/CodeGen/CGExprConstant.cpp
clang/test/CodeGenCXX/empty-classes.cpp