Add lvalue irgen support for CXXBindTemporaryExpr.
llvm-svn: 72649
This commit is contained in:
parent
3be22e27b6
commit
fd2af0cf86
|
@ -191,8 +191,10 @@ LValue CodeGenFunction::EmitLValue(const Expr *E) {
|
||||||
return EmitCXXConditionDeclLValue(cast<CXXConditionDeclExpr>(E));
|
return EmitCXXConditionDeclLValue(cast<CXXConditionDeclExpr>(E));
|
||||||
case Expr::CXXTemporaryObjectExprClass:
|
case Expr::CXXTemporaryObjectExprClass:
|
||||||
case Expr::CXXConstructExprClass:
|
case Expr::CXXConstructExprClass:
|
||||||
return EmitCXXConstructLValue(cast<CXXConstructExpr>(E));
|
return EmitCXXConstructLValue(cast<CXXConstructExpr>(E));
|
||||||
|
case Expr::CXXBindTemporaryExprClass:
|
||||||
|
return EmitCXXBindTemporaryLValue(cast<CXXBindTemporaryExpr>(E));
|
||||||
|
|
||||||
case Expr::ObjCMessageExprClass:
|
case Expr::ObjCMessageExprClass:
|
||||||
return EmitObjCMessageExprLValue(cast<ObjCMessageExpr>(E));
|
return EmitObjCMessageExprLValue(cast<ObjCMessageExpr>(E));
|
||||||
case Expr::ObjCIvarRefExprClass:
|
case Expr::ObjCIvarRefExprClass:
|
||||||
|
@ -1207,6 +1209,15 @@ LValue CodeGenFunction::EmitCXXConstructLValue(const CXXConstructExpr *E) {
|
||||||
return LValue::MakeAddr(Temp, E->getType().getCVRQualifiers());
|
return LValue::MakeAddr(Temp, E->getType().getCVRQualifiers());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LValue
|
||||||
|
CodeGenFunction::EmitCXXBindTemporaryLValue(const CXXBindTemporaryExpr *E) {
|
||||||
|
LValue LV = EmitLValue(E->getSubExpr());
|
||||||
|
|
||||||
|
// FIXME: Record the value and dest ptr.
|
||||||
|
|
||||||
|
return LV;
|
||||||
|
}
|
||||||
|
|
||||||
LValue CodeGenFunction::EmitObjCMessageExprLValue(const ObjCMessageExpr *E) {
|
LValue CodeGenFunction::EmitObjCMessageExprLValue(const ObjCMessageExpr *E) {
|
||||||
// Can only get l-value for message expression returning aggregate type
|
// Can only get l-value for message expression returning aggregate type
|
||||||
RValue RV = EmitObjCMessageExpr(E);
|
RValue RV = EmitObjCMessageExpr(E);
|
||||||
|
|
|
@ -304,7 +304,6 @@ void AggExprEmitter::VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *E) {
|
||||||
Visit(E->getSubExpr());
|
Visit(E->getSubExpr());
|
||||||
|
|
||||||
// FIXME: Record the value and dest ptr.
|
// FIXME: Record the value and dest ptr.
|
||||||
Val->dump();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -654,6 +654,7 @@ public:
|
||||||
|
|
||||||
LValue EmitCXXConditionDeclLValue(const CXXConditionDeclExpr *E);
|
LValue EmitCXXConditionDeclLValue(const CXXConditionDeclExpr *E);
|
||||||
LValue EmitCXXConstructLValue(const CXXConstructExpr *E);
|
LValue EmitCXXConstructLValue(const CXXConstructExpr *E);
|
||||||
|
LValue EmitCXXBindTemporaryLValue(const CXXBindTemporaryExpr *E);
|
||||||
|
|
||||||
LValue EmitObjCMessageExprLValue(const ObjCMessageExpr *E);
|
LValue EmitObjCMessageExprLValue(const ObjCMessageExpr *E);
|
||||||
LValue EmitObjCIvarRefLValue(const ObjCIvarRefExpr *E);
|
LValue EmitObjCIvarRefLValue(const ObjCIvarRefExpr *E);
|
||||||
|
|
Loading…
Reference in New Issue