BuildCXXConstructExpr doesn't need to take an ASTContext.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79149 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/Sema.h b/lib/Sema/Sema.h
index 9432318..fab6bcf 100644
--- a/lib/Sema/Sema.h
+++ b/lib/Sema/Sema.h
@@ -1692,12 +1692,13 @@
/// 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);
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp
index 889d5c9..d460950 100644
--- a/lib/Sema/SemaDeclCXX.cpp
+++ b/lib/Sema/SemaDeclCXX.cpp
@@ -2379,12 +2379,11 @@
/// 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 @@
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 @@
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);
diff --git a/lib/Sema/SemaExprCXX.cpp b/lib/Sema/SemaExprCXX.cpp
index 20f6906..274893b 100644
--- a/lib/Sema/SemaExprCXX.cpp
+++ b/lib/Sema/SemaExprCXX.cpp
@@ -905,8 +905,8 @@
// 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 @@
}
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);
diff --git a/lib/Sema/SemaInit.cpp b/lib/Sema/SemaInit.cpp
index 1e564ce..f734d93 100644
--- a/lib/Sema/SemaInit.cpp
+++ b/lib/Sema/SemaInit.cpp
@@ -178,8 +178,7 @@
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;
}
diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h
index 3be044c..51db216 100644
--- a/lib/Sema/TreeTransform.h
+++ b/lib/Sema/TreeTransform.h
@@ -1173,8 +1173,7 @@
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));