forked from OSchip/llvm-project
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:
parent
4038cf4b57
commit
8e73928f52
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue