diff options
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 3 | ||||
| -rw-r--r-- | clang/test/CodeGenCXX/copy-in-cplus-object.cpp | 12 | 
2 files changed, 11 insertions, 4 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 3473ef00902..da7c6a2daec 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -1764,8 +1764,7 @@ Sema::BuildDeclarationNameExpr(const CXXScopeSpec &SS,        if (!Res.isInvalid()) {          Res = MaybeCreateCXXExprWithTemporaries(move(Res));          Expr *Init = Res.takeAs<Expr>(); -        if (isa<CXXConstructExpr>(Init)) -          BDRE->setCopyConstructorExpr(Init); +        BDRE->setCopyConstructorExpr(Init);        }      }      return Owned(BDRE); diff --git a/clang/test/CodeGenCXX/copy-in-cplus-object.cpp b/clang/test/CodeGenCXX/copy-in-cplus-object.cpp index 819879806d0..cac6155f5cf 100644 --- a/clang/test/CodeGenCXX/copy-in-cplus-object.cpp +++ b/clang/test/CodeGenCXX/copy-in-cplus-object.cpp @@ -1,8 +1,13 @@  // RUN: %clang_cc1 %s -fblocks -triple x86_64-apple-darwin -emit-llvm -o - | FileCheck %s +struct S { +  S(const char *); +  ~S(); +}; +  struct TestObject  { -	TestObject(const TestObject& inObj, int def = 100); +	TestObject(const TestObject& inObj, int def = 100,  const S &Silly = "silly");  	TestObject();  	TestObject& operator=(const TestObject& inObj);  	int version() const; @@ -14,5 +19,8 @@ void testRoutine() {      int (^V)() = ^{ return one.version(); };  } -// CHECK: call void @_ZN10TestObjectC1ERKS_i +// CHECK: call void @_ZN10TestObjectC1Ev +// CHECK: call void @_ZN1SC1EPKc +// CHECK: call void @_ZN10TestObjectC1ERKS_iRK1S +// CHECK: call void @_ZN1SD1Ev  | 

