mirror of
https://github.com/intel/llvm.git
synced 2026-02-02 02:00:03 +08:00
BuildCXXConstructExpr doesn't need to take an ASTContext.
llvm-svn: 79149
This commit is contained in:
@@ -1692,12 +1692,13 @@ public:
|
||||
|
||||
/// BuildCXXConstructExpr - Creates a complete call to a constructor,
|
||||
/// including handling of its default argument expressions.
|
||||
Expr * BuildCXXConstructExpr(ASTContext &C,
|
||||
QualType DeclInitType,
|
||||
CXXConstructorDecl *Constructor,
|
||||
bool Elidable,
|
||||
Expr **Exprs, unsigned NumExprs);
|
||||
Expr *BuildCXXConstructExpr(QualType DeclInitType,
|
||||
CXXConstructorDecl *Constructor,
|
||||
bool Elidable,
|
||||
Expr **Exprs, unsigned NumExprs);
|
||||
|
||||
Expr *BuildCXXCopyConstructExpr(Expr *Expr);
|
||||
|
||||
/// FinalizeVarWithDestructor - Prepare for calling destructor on the
|
||||
/// constructed variable.
|
||||
void FinalizeVarWithDestructor(VarDecl *VD, QualType DeclInitType);
|
||||
|
||||
@@ -2379,12 +2379,11 @@ void Sema::DefineImplicitCopyConstructor(SourceLocation CurrentLocation,
|
||||
|
||||
/// BuildCXXConstructExpr - Creates a complete call to a constructor,
|
||||
/// including handling of its default argument expressions.
|
||||
Expr *Sema::BuildCXXConstructExpr(ASTContext &C,
|
||||
QualType DeclInitType,
|
||||
Expr *Sema::BuildCXXConstructExpr(QualType DeclInitType,
|
||||
CXXConstructorDecl *Constructor,
|
||||
bool Elidable,
|
||||
Expr **Exprs, unsigned NumExprs) {
|
||||
CXXConstructExpr *Temp = CXXConstructExpr::Create(C, DeclInitType,
|
||||
CXXConstructExpr *Temp = CXXConstructExpr::Create(Context, DeclInitType,
|
||||
Constructor,
|
||||
Elidable, Exprs, NumExprs);
|
||||
// default arguments must be added to constructor call expression.
|
||||
@@ -2403,7 +2402,7 @@ Expr *Sema::BuildCXXConstructExpr(ASTContext &C,
|
||||
for (unsigned I = 0, N = E->getNumTemporaries(); I != N; ++I)
|
||||
ExprTemporaries.push_back(E->getTemporary(I));
|
||||
}
|
||||
Expr *Arg = CXXDefaultArgExpr::Create(C, FDecl->getParamDecl(j));
|
||||
Expr *Arg = CXXDefaultArgExpr::Create(Context, FDecl->getParamDecl(j));
|
||||
Temp->setArg(j, Arg);
|
||||
}
|
||||
return Temp;
|
||||
@@ -2413,8 +2412,7 @@ void Sema::InitializeVarWithConstructor(VarDecl *VD,
|
||||
CXXConstructorDecl *Constructor,
|
||||
QualType DeclInitType,
|
||||
Expr **Exprs, unsigned NumExprs) {
|
||||
Expr *Temp = BuildCXXConstructExpr(Context,
|
||||
DeclInitType, Constructor,
|
||||
Expr *Temp = BuildCXXConstructExpr(DeclInitType, Constructor,
|
||||
false, Exprs, NumExprs);
|
||||
MarkDeclarationReferenced(VD->getLocation(), Constructor);
|
||||
Temp = MaybeCreateCXXExprWithTemporaries(Temp, /*DestroyTemps=*/true);
|
||||
|
||||
@@ -905,8 +905,8 @@ Sema::PerformImplicitConversion(Expr *&From, QualType ToType,
|
||||
// FIXME: Keep track of whether the copy constructor is elidable or not.
|
||||
bool Elidable = (isa<CallExpr>(From) ||
|
||||
isa<CXXTemporaryObjectExpr>(From));
|
||||
From = BuildCXXConstructExpr(Context, ToType,
|
||||
SCS.CopyConstructor, Elidable, &From, 1);
|
||||
From = BuildCXXConstructExpr(ToType, SCS.CopyConstructor,
|
||||
Elidable, &From, 1);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1558,6 +1558,9 @@ QualType Sema::FindCompositePointerType(Expr *&E1, Expr *&E2) {
|
||||
}
|
||||
|
||||
Sema::OwningExprResult Sema::MaybeBindToTemporary(Expr *E) {
|
||||
if (!Context.getLangOptions().CPlusPlus)
|
||||
return Owned(E);
|
||||
|
||||
const RecordType *RT = E->getType()->getAs<RecordType>();
|
||||
if (!RT)
|
||||
return Owned(E);
|
||||
|
||||
@@ -178,8 +178,7 @@ bool Sema::CheckInitializerTypes(Expr *&Init, QualType &DeclType,
|
||||
return true;
|
||||
bool Elidable = (isa<CallExpr>(Init) ||
|
||||
isa<CXXTemporaryObjectExpr>(Init));
|
||||
Init = BuildCXXConstructExpr(Context,
|
||||
DeclType, Constructor, Elidable, &Init, 1);
|
||||
Init = BuildCXXConstructExpr(DeclType, Constructor, Elidable, &Init, 1);
|
||||
Init = MaybeCreateCXXExprWithTemporaries(Init, /*DestroyTemps=*/true);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1173,8 +1173,7 @@ public:
|
||||
MultiExprArg Args) {
|
||||
unsigned NumArgs = Args.size();
|
||||
Expr **ArgsExprs = (Expr **)Args.release();
|
||||
return getSema().Owned(SemaRef.BuildCXXConstructExpr(getSema().Context, T,
|
||||
Constructor,
|
||||
return getSema().Owned(SemaRef.BuildCXXConstructExpr(T, Constructor,
|
||||
IsElidable,
|
||||
ArgsExprs,
|
||||
NumArgs));
|
||||
|
||||
Reference in New Issue
Block a user