copy/dispose helper functions We found out that these fake functions would cause clang to crash if the changes proposed in https://reviews.llvm.org/D98799 were made. The original patch was reverted in f681fd927e883301658dcac9a78109ee0aba12a8 because debug locations were missing in the body of the block byref helper functions. This patch fixes the bug by calling CreateArtificial after the calls to StartFunction. Differential Revision: https://reviews.llvm.org/D104082
31 lines
645 B
Objective-C
31 lines
645 B
Objective-C
// REQUIRES: x86-registered-target
|
|
// RUN: %clang_cc1 -emit-llvm -fblocks -debug-info-kind=limited -triple x86_64-apple-darwin10 -fobjc-runtime=macosx-fragile-10.5 %s -o - | FileCheck %s
|
|
extern void foo(void(^)(void));
|
|
|
|
// CHECK: !DISubprogram(linkageName: "__destroy_helper_block_8_32o40r48r"
|
|
|
|
@interface NSObject {
|
|
struct objc_object *isa;
|
|
}
|
|
@end
|
|
|
|
@interface A:NSObject @end
|
|
@implementation A
|
|
- (void) helper {
|
|
int master = 0;
|
|
__block int m2 = 0;
|
|
__block int dbTransaction = 0;
|
|
int (^x)(void) = ^(void) { (void) self;
|
|
(void) master;
|
|
(void) dbTransaction;
|
|
m2++;
|
|
return m2;
|
|
|
|
};
|
|
master = x();
|
|
}
|
|
@end
|
|
|
|
void foo(void(^x)(void)) {}
|
|
|