diff options
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Sema/Sema.h | 11 | ||||
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 10 | ||||
-rw-r--r-- | clang/lib/Sema/SemaExprCXX.cpp | 7 | ||||
-rw-r--r-- | clang/lib/Sema/SemaInit.cpp | 3 | ||||
-rw-r--r-- | clang/lib/Sema/TreeTransform.h | 3 |
5 files changed, 17 insertions, 17 deletions
diff --git a/clang/lib/Sema/Sema.h b/clang/lib/Sema/Sema.h index 943231811be..fab6bcf6040 100644 --- a/clang/lib/Sema/Sema.h +++ b/clang/lib/Sema/Sema.h @@ -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); diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 889d5c91caa..d460950824e 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -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); diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index 20f69069a5a..274893b99e9 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -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); diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp index 1e564ce45fb..f734d9347ac 100644 --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -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; } diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 3be044ca91b..51db2167d9e 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -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)); |