1*67e74705SXin Li// RUN: %clang_cc1 -fblocks -emit-llvm %s -fobjc-gc -o - | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li// CHECK: objc_assign_strongCast 4*67e74705SXin Li// rdar://5541393 5*67e74705SXin Li 6*67e74705SXin Litypedef __SIZE_TYPE__ size_t; 7*67e74705SXin Livoid * malloc(size_t size); 8*67e74705SXin Li 9*67e74705SXin Litypedef struct { 10*67e74705SXin Li void (^ivarBlock)(void); 11*67e74705SXin Li} StructWithBlock_t; 12*67e74705SXin Li 13*67e74705SXin Liint main(int argc, char *argv[]) { 14*67e74705SXin Li StructWithBlock_t *swbp = (StructWithBlock_t *)malloc(sizeof(StructWithBlock_t*)); 15*67e74705SXin Li __block int i = 10; 16*67e74705SXin Li // assigning a Block into an struct slot should elicit a write-barrier under GC 17*67e74705SXin Li swbp->ivarBlock = ^ { ++i; }; 18*67e74705SXin Li return 0; 19*67e74705SXin Li} 20