parent
e6bc6cb96f
commit
5bc1712940
|
@ -686,6 +686,8 @@ LValue CodeGenFunction::EmitLValue(const Expr *E) {
|
|||
return EmitCXXConstructLValue(cast<CXXConstructExpr>(E));
|
||||
case Expr::CXXBindTemporaryExprClass:
|
||||
return EmitCXXBindTemporaryLValue(cast<CXXBindTemporaryExpr>(E));
|
||||
case Expr::LambdaExprClass:
|
||||
return EmitLambdaLValue(cast<LambdaExpr>(E));
|
||||
|
||||
case Expr::ExprWithCleanupsClass: {
|
||||
const ExprWithCleanups *cleanups = cast<ExprWithCleanups>(E);
|
||||
|
@ -2359,6 +2361,15 @@ CodeGenFunction::EmitCXXBindTemporaryLValue(const CXXBindTemporaryExpr *E) {
|
|||
return MakeAddrLValue(Slot.getAddr(), E->getType());
|
||||
}
|
||||
|
||||
LValue
|
||||
CodeGenFunction::EmitLambdaLValue(const LambdaExpr *E) {
|
||||
if (E->capture_begin() != E->capture_end())
|
||||
return EmitUnsupportedLValue(E, "lambda expression");
|
||||
|
||||
AggValueSlot Slot = CreateAggTemp(E->getType(), "temp.lvalue");
|
||||
return MakeAddrLValue(Slot.getAddr(), E->getType());
|
||||
}
|
||||
|
||||
LValue CodeGenFunction::EmitObjCMessageExprLValue(const ObjCMessageExpr *E) {
|
||||
RValue RV = EmitObjCMessageExpr(E);
|
||||
|
||||
|
|
|
@ -2117,6 +2117,7 @@ public:
|
|||
|
||||
LValue EmitCXXConstructLValue(const CXXConstructExpr *E);
|
||||
LValue EmitCXXBindTemporaryLValue(const CXXBindTemporaryExpr *E);
|
||||
LValue EmitLambdaLValue(const LambdaExpr *E);
|
||||
LValue EmitCXXTypeidLValue(const CXXTypeidExpr *E);
|
||||
|
||||
LValue EmitObjCMessageExprLValue(const ObjCMessageExpr *E);
|
||||
|
|
Loading…
Reference in New Issue