summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2017-11-15 03:03:56 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2017-11-15 03:03:56 +0000
commitefdb50375ff8ad9e48fd00eafda060d0c6f35ce1 (patch)
treec7739658a18a451914fbb4a54afe57fe91a6270b /clang/lib/AST
parent3a109f5121ae963f47ee3b0131fee50be7ffea7c (diff)
downloadbcm5719-llvm-efdb50375ff8ad9e48fd00eafda060d0c6f35ce1.tar.gz
bcm5719-llvm-efdb50375ff8ad9e48fd00eafda060d0c6f35ce1.zip
PR35214: don't crash if we see an array of unknown bound added to an empty but invalid designator.
llvm-svn: 318258
Diffstat (limited to 'clang/lib/AST')
-rw-r--r--clang/lib/AST/ExprConstant.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/clang/lib/AST/ExprConstant.cpp b/clang/lib/AST/ExprConstant.cpp
index c09c99386c3..e899b7ca164 100644
--- a/clang/lib/AST/ExprConstant.cpp
+++ b/clang/lib/AST/ExprConstant.cpp
@@ -1351,10 +1351,11 @@ namespace {
Designator.setInvalid();
return;
}
-
- assert(getType(Base)->isPointerType() || getType(Base)->isArrayType());
- Designator.FirstEntryIsAnUnsizedArray = true;
- Designator.addUnsizedArrayUnchecked(ElemTy);
+ if (checkSubobject(Info, E, CSK_ArrayToPointer)) {
+ assert(getType(Base)->isPointerType() || getType(Base)->isArrayType());
+ Designator.FirstEntryIsAnUnsizedArray = true;
+ Designator.addUnsizedArrayUnchecked(ElemTy);
+ }
}
void addArray(EvalInfo &Info, const Expr *E, const ConstantArrayType *CAT) {
if (checkSubobject(Info, E, CSK_ArrayToPointer))
OpenPOWER on IntegriCloud