diff options
| author | Fariborz Jahanian <fjahanian@apple.com> | 2012-06-07 17:07:15 +0000 |
|---|---|---|
| committer | Fariborz Jahanian <fjahanian@apple.com> | 2012-06-07 17:07:15 +0000 |
| commit | bbc5bbf4f1015a1aab068adb4dedc444586aaf21 (patch) | |
| tree | 613d8f880bf3945c865410a6b38863a54efbc3d5 /clang/lib/CodeGen | |
| parent | 5d4cff72b4c0e2c3cbb3f784c869d5b68427208f (diff) | |
| download | bcm5719-llvm-bbc5bbf4f1015a1aab068adb4dedc444586aaf21.tar.gz bcm5719-llvm-bbc5bbf4f1015a1aab068adb4dedc444586aaf21.zip | |
When emitting compund literal of vla pointer elements, make
sure to emit vla size to prevent an irgen crash.
// rdar://11485774
llvm-svn: 158153
Diffstat (limited to 'clang/lib/CodeGen')
| -rw-r--r-- | clang/lib/CodeGen/CGExpr.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp index 190855d3a0d..5d1890635e0 100644 --- a/clang/lib/CodeGen/CGExpr.cpp +++ b/clang/lib/CodeGen/CGExpr.cpp @@ -2114,7 +2114,11 @@ LValue CodeGenFunction::EmitCompoundLiteralLValue(const CompoundLiteralExpr *E){ llvm::Value *GlobalPtr = CGM.GetAddrOfConstantCompoundLiteral(E); return MakeAddrLValue(GlobalPtr, E->getType()); } - + if (const PointerType *pointerType = E->getType()->getAs<PointerType>()) + if (pointerType->getPointeeType()->isVariableArrayType()) + // make sure to emit the VLA size. + EmitVariablyModifiedType(pointerType->getPointeeType()); + llvm::Value *DeclPtr = CreateMemTemp(E->getType(), ".compoundliteral"); const Expr *InitExpr = E->getInitializer(); LValue Result = MakeAddrLValue(DeclPtr, E->getType()); |

