Fixes a typo which prevented proper code gen. for

copy-in of c++ class objects into blocks.

llvm-svn: 105622
This commit is contained in:
Fariborz Jahanian 2010-06-08 17:52:11 +00:00
parent 4038cf4b57
commit 8e73928f52
2 changed files with 11 additions and 4 deletions

View 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);

View 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