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 f681fd927e
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)) {}
|
|
|