summaryrefslogtreecommitdiffstats
path: root/lib/CodeGen/CGExprConstant.cpp
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2015-06-09 19:08:19 +0000
committerdim <dim@FreeBSD.org>2015-06-09 19:08:19 +0000
commitbb9760db9b86e93a638ed430d0a14785f7ff9064 (patch)
treea59f5569ef36d00388c0428426abef26aa9105b6 /lib/CodeGen/CGExprConstant.cpp
parent3191b2b32a96e1a6ee833fcca73e5c8e0c67ba65 (diff)
downloadFreeBSD-src-bb9760db9b86e93a638ed430d0a14785f7ff9064.zip
FreeBSD-src-bb9760db9b86e93a638ed430d0a14785f7ff9064.tar.gz
Vendor import of clang trunk r239412:
https://llvm.org/svn/llvm-project/cfe/trunk@239412
Diffstat (limited to 'lib/CodeGen/CGExprConstant.cpp')
-rw-r--r--lib/CodeGen/CGExprConstant.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/CodeGen/CGExprConstant.cpp b/lib/CodeGen/CGExprConstant.cpp
index 73ca0cc..b90b3ab 100644
--- a/lib/CodeGen/CGExprConstant.cpp
+++ b/lib/CodeGen/CGExprConstant.cpp
@@ -1349,8 +1349,14 @@ static llvm::Constant *EmitNullConstant(CodeGenModule &CGM,
}
// For unions, stop after the first named field.
- if (record->isUnion() && Field->getDeclName())
- break;
+ if (record->isUnion()) {
+ if (Field->getIdentifier())
+ break;
+ if (const auto *FieldRD =
+ dyn_cast_or_null<RecordDecl>(Field->getType()->getAsTagDecl()))
+ if (FieldRD->findFirstNamedDataMember())
+ break;
+ }
}
// Fill in the virtual bases, if we're working with the complete object.
OpenPOWER on IntegriCloud