summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2015-04-03 18:38:37 +0000
committerdim <dim@FreeBSD.org>2015-04-03 18:38:37 +0000
commitac52330ec1fa3ebd5b06ecc5f6e03bc7bf50f965 (patch)
tree12c38d0b6463986e7df2012e2ea2dea451dca167
parent89080383fe8ba6c73ee24301a0691a7656b1bb5e (diff)
downloadFreeBSD-src-ac52330ec1fa3ebd5b06ecc5f6e03bc7bf50f965.zip
FreeBSD-src-ac52330ec1fa3ebd5b06ecc5f6e03bc7bf50f965.tar.gz
Pull in r227115 from upstream clang trunk (by Ben Langmuir):
Fix assert instantiating string init of static variable ... when the variable's type is a typedef of a ConstantArrayType. Just look through the typedef (and any other sugar). We only use the constant array type here to get the element count. This fixes an assertion failure when building the games/redeclipse port. Reported by: amdmi3
-rw-r--r--contrib/llvm/tools/clang/lib/Sema/SemaInit.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/contrib/llvm/tools/clang/lib/Sema/SemaInit.cpp b/contrib/llvm/tools/clang/lib/Sema/SemaInit.cpp
index 569ef30..2ad6754 100644
--- a/contrib/llvm/tools/clang/lib/Sema/SemaInit.cpp
+++ b/contrib/llvm/tools/clang/lib/Sema/SemaInit.cpp
@@ -149,9 +149,9 @@ static void updateStringLiteralType(Expr *E, QualType Ty) {
static void CheckStringInit(Expr *Str, QualType &DeclT, const ArrayType *AT,
Sema &S) {
// Get the length of the string as parsed.
- uint64_t StrLength =
- cast<ConstantArrayType>(Str->getType())->getSize().getZExtValue();
-
+ auto *ConstantArrayTy =
+ cast<ConstantArrayType>(Str->getType()->getUnqualifiedDesugaredType());
+ uint64_t StrLength = ConstantArrayTy->getSize().getZExtValue();
if (const IncompleteArrayType *IAT = dyn_cast<IncompleteArrayType>(AT)) {
// C99 6.7.8p14. We have an array of character type with unknown size
OpenPOWER on IntegriCloud