forked from OSchip/llvm-project
Initialize Obj-C GC attributes when emitting BlockDeclRefExprs.
- Otherwise we may incorrectly miss generation of some write barriers. llvm-svn: 72313
This commit is contained in:
parent
eeac588471
commit
223db1c9e5
|
@ -723,7 +723,9 @@ LValue CodeGenFunction::EmitDeclRefLValue(const DeclRefExpr *E) {
|
|||
}
|
||||
|
||||
LValue CodeGenFunction::EmitBlockDeclRefLValue(const BlockDeclRefExpr *E) {
|
||||
return LValue::MakeAddr(GetAddrOfBlockDecl(E), 0);
|
||||
return LValue::MakeAddr(GetAddrOfBlockDecl(E),
|
||||
E->getType().getCVRQualifiers(),
|
||||
getContext().getObjCGCAttrKind(E->getType()));
|
||||
}
|
||||
|
||||
LValue CodeGenFunction::EmitUnaryOpLValue(const UnaryOperator *E) {
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
// RUN: clang-cc %s -emit-llvm -o %t -fobjc-gc -fblocks -triple i386-apple-darwin10 &&
|
||||
// RUN: grep "objc_assign_strongCast" %t | count 2 &&
|
||||
// RUN: true
|
||||
|
||||
// This should generate a strong cast.
|
||||
|
||||
id test3(id x) {
|
||||
__block id result;
|
||||
^{ result = x; }();
|
||||
return result;
|
||||
}
|
Loading…
Reference in New Issue