]> granicus.if.org Git - clang/commitdiff
Fixes a typo which prevented proper code gen. for
authorFariborz Jahanian <fjahanian@apple.com>
Tue, 8 Jun 2010 17:52:11 +0000 (17:52 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Tue, 8 Jun 2010 17:52:11 +0000 (17:52 +0000)
copy-in of c++ class objects into blocks.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@105622 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaExpr.cpp
test/CodeGenCXX/copy-in-cplus-object.cpp

index 3473ef00902a62b209e41a0a5b9d7729ff42fe98..da7c6a2daec8e7fe9544d3f7f9dbb99412ea1707 100644 (file)
@@ -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);
index 819879806d0de4f143494a8fcb3d2c727740d6a4..cac6155f5cf1b7967ebab4a49a122ffa64e1f4a2 100644 (file)
@@ -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