diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-11-15 03:03:56 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-11-15 03:03:56 +0000 |
| commit | efdb50375ff8ad9e48fd00eafda060d0c6f35ce1 (patch) | |
| tree | c7739658a18a451914fbb4a54afe57fe91a6270b /clang/lib/AST | |
| parent | 3a109f5121ae963f47ee3b0131fee50be7ffea7c (diff) | |
| download | bcm5719-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.cpp | 9 |
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)) |

