diff options
Diffstat (limited to 'lib/CodeGen/CGExprScalar.cpp')
-rw-r--r-- | lib/CodeGen/CGExprScalar.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/CodeGen/CGExprScalar.cpp b/lib/CodeGen/CGExprScalar.cpp index 0c6e6c6854..77771bd937 100644 --- a/lib/CodeGen/CGExprScalar.cpp +++ b/lib/CodeGen/CGExprScalar.cpp @@ -213,7 +213,11 @@ public: return llvm::Constant::getNullValue(ConvertType(E->getType())); } Value *VisitImplicitCastExpr(const ImplicitCastExpr *E); - Value *VisitCastExpr(const CastExpr *E) { + Value *VisitCastExpr(const CastExpr *E) { + // Make sure to evaluate VLA bounds now so that we have them for later. + if (E->getType()->isVariablyModifiedType()) + CGF.EmitVLASize(E->getType()); + return EmitCastExpr(E->getSubExpr(), E->getType()); } Value *EmitCastExpr(const Expr *E, QualType T); |