[cfe-commits] r82783 - in /cfe/trunk: lib/Sema/SemaExprCXX.cpp test/CodeGenCXX/PR5050-constructor-conversion.cpp
Anders Carlsson
andersca at mac.com
Fri Sep 25 11:18:03 PDT 2009
On Sep 25, 2009, at 11:11 AM, Fariborz Jahanian wrote:
> Author: fjahanian
> Date: Fri Sep 25 13:11:25 2009
> New Revision: 82783
>
> URL: http://llvm.org/viewvc/llvm-project?rev=82783&view=rev
> Log:
> Fix the AST tree so ir-gen can do the conversion via copy
> construction.
> Fixed pr5050.
>
Hi Fariborz,
this isn't quite the right fix - it'll miss a qualification conversion
if it's needed.
The right fix is to use CompleteConstructorCall. Something like
Index: lib/Sema/SemaExprCXX.cpp
===================================================================
--- lib/Sema/SemaExprCXX.cpp (revision 82773)
+++ lib/Sema/SemaExprCXX.cpp (working copy)
@@ -1114,11 +1114,20 @@
// FIXME: When can ToType be a reference type?
assert(!ToType->isReferenceType());
+ ASTOwningVector<&ActionBase::DeleteExpr> ConstructorArgs(*this);
+
+ SourceLocation ConstructLoc; /* FIXME */
+
+ if (CompleteConstructorCall(SCS.CopyConstructor,
+ MultiExprArg(*this, (void **)&From, 1),
+ ConstructLoc,
+ ConstructorArgs))
+ return true;
+
OwningExprResult FromResult =
- BuildCXXConstructExpr(/*FIXME:ConstructLoc*/SourceLocation(),
- ToType, SCS.CopyConstructor,
- MultiExprArg(*this, (void**)&From, 1));
-
+ BuildCXXConstructExpr(ConstructLoc, ToType, SCS.CopyConstructor,
+ move_arg(ConstructorArgs));
+
if (FromResult.isInvalid())
return true;
Anders
More information about the cfe-commits
mailing list