diff options
author | Anders Carlsson <andersca@mac.com> | 2009-09-15 21:14:33 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-09-15 21:14:33 +0000 |
commit | 71710113531a828679ce9b7deaca8d8df08c88da (patch) | |
tree | afa374600797f90ffff8d4f53766296b7f3fc217 | |
parent | c7e406b2ec8ae95ff2f65215330b127c437472b9 (diff) |
Add back the workaround since it lead to constructor conversion bugs :(
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81917 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Sema/SemaDeclCXX.cpp | 6 | ||||
-rw-r--r-- | test/CodeGenCXX/PR4983-constructor-conversion.cpp | 16 |
2 files changed, 22 insertions, 0 deletions
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp index 87c4e70101..9e49778250 100644 --- a/lib/Sema/SemaDeclCXX.cpp +++ b/lib/Sema/SemaDeclCXX.cpp @@ -3243,6 +3243,12 @@ Sema::CompleteConstructorCall(CXXConstructorDecl *Constructor, Expr *Arg; if (i < NumArgs) { Arg = Args[i]; + + // Pass the argument. + if (PerformCopyInitialization(Arg, ProtoArgType, "passing")) + return true; + + Args[i] = 0; } else { ParmVarDecl *Param = Constructor->getParamDecl(i); diff --git a/test/CodeGenCXX/PR4983-constructor-conversion.cpp b/test/CodeGenCXX/PR4983-constructor-conversion.cpp new file mode 100644 index 0000000000..31eae2e791 --- /dev/null +++ b/test/CodeGenCXX/PR4983-constructor-conversion.cpp @@ -0,0 +1,16 @@ +// RUN: clang-cc -emit-llvm-only %s + +struct A { + A(const char *s){} +}; + +struct B { + A a; + + B() : a("test") { } +}; + +void f() { + A a("test"); +} + |