xref: /aosp_15_r20/external/clang/test/CodeGenObjC/arc-linetable-autorelease.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -emit-llvm -fobjc-arc -debug-info-kind=limited -triple x86_64-apple-darwin10 %s -o - | FileCheck %s
2*67e74705SXin Li// Ensure that the line info is making sense:
3*67e74705SXin Li// ARC cleanups should be at the closing '}'.
4*67e74705SXin Li@protocol NSObject
5*67e74705SXin Li@end
6*67e74705SXin Li
7*67e74705SXin Li@interface NSObject <NSObject> {}
8*67e74705SXin Li@end
9*67e74705SXin Li
10*67e74705SXin Li@protocol NSCopying
11*67e74705SXin Li@end
12*67e74705SXin Li
13*67e74705SXin Li@protocol NSCoding
14*67e74705SXin Li@end
15*67e74705SXin Li
16*67e74705SXin Litypedef double CGFloat;
17*67e74705SXin Listruct CGRect {};
18*67e74705SXin Litypedef struct CGRect CGRect;
19*67e74705SXin Litypedef CGRect NSRect;
20*67e74705SXin LiNSRect NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h);
21*67e74705SXin Li@interface NSBezierPath : NSObject <NSCopying, NSCoding>
22*67e74705SXin Li+ (NSBezierPath *)bezierPathWithRoundedRect:(NSRect)rect xRadius:(CGFloat)xRadius yRadius:(CGFloat)yRadius;
23*67e74705SXin Li@end
24*67e74705SXin Li@implementation AppDelegate : NSObject {}
25*67e74705SXin Li- (NSBezierPath *)_createBezierPathWithWidth:(CGFloat)width height:(CGFloat)height radius:(CGFloat)radius lineWidth:(CGFloat)lineWidth
26*67e74705SXin Li{
27*67e74705SXin Li  NSRect rect = NSMakeRect(0, 0, width, height);
28*67e74705SXin Li  NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:rect xRadius:radius yRadius:radius];
29*67e74705SXin Li  CGFloat pattern[2];
30*67e74705SXin Li  // CHECK: define {{.*}}_createBezierPathWithWidth
31*67e74705SXin Li  // CHECK: load {{.*}} %path, align {{.*}}, !dbg ![[RET:[0-9]+]]
32*67e74705SXin Li  // CHECK: call void @objc_storeStrong{{.*}} !dbg ![[ARC:[0-9]+]]
33*67e74705SXin Li  // CHECK: call {{.*}} @objc_autoreleaseReturnValue{{.*}} !dbg ![[ARC]]
34*67e74705SXin Li  // CHECK: ret {{.*}} !dbg ![[ARC]]
35*67e74705SXin Li  // CHECK: ![[RET]] = !DILocation(line: [[@LINE+1]], scope: !{{.*}})
36*67e74705SXin Li  return path;
37*67e74705SXin Li  // CHECK: ![[ARC]] = !DILocation(line: [[@LINE+1]], scope: !{{.*}})
38*67e74705SXin Li}
39*67e74705SXin Li@end
40