annotate clang/test/ARCMT/nonobjc-to-objc-cast.m.result @ 165:597b3f1c2c93

fix call createTailCallEliminationPass
author anatofuz
date Tue, 24 Mar 2020 15:30:52 +0900
parents 1d019706d866
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
anatofuz
parents:
diff changeset
2 // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
anatofuz
parents:
diff changeset
3 // RUN: diff %t %s.result
anatofuz
parents:
diff changeset
4
anatofuz
parents:
diff changeset
5 #include "Common.h"
anatofuz
parents:
diff changeset
6
anatofuz
parents:
diff changeset
7 typedef const struct __CFString * CFStringRef;
anatofuz
parents:
diff changeset
8 extern const CFStringRef kUTTypePlainText;
anatofuz
parents:
diff changeset
9 extern const CFStringRef kUTTypeRTF;
anatofuz
parents:
diff changeset
10 extern CFStringRef kNonConst;
anatofuz
parents:
diff changeset
11
anatofuz
parents:
diff changeset
12 typedef const struct __CFAllocator * CFAllocatorRef;
anatofuz
parents:
diff changeset
13 typedef const struct __CFUUID * CFUUIDRef;
anatofuz
parents:
diff changeset
14
anatofuz
parents:
diff changeset
15 extern const CFAllocatorRef kCFAllocatorDefault;
anatofuz
parents:
diff changeset
16
anatofuz
parents:
diff changeset
17 extern CFStringRef CFUUIDCreateString(CFAllocatorRef alloc, CFUUIDRef uuid);
anatofuz
parents:
diff changeset
18
anatofuz
parents:
diff changeset
19 struct StrS {
anatofuz
parents:
diff changeset
20 CFStringRef sref_member;
anatofuz
parents:
diff changeset
21 };
anatofuz
parents:
diff changeset
22
anatofuz
parents:
diff changeset
23 @interface NSString : NSObject {
anatofuz
parents:
diff changeset
24 CFStringRef sref;
anatofuz
parents:
diff changeset
25 struct StrS *strS;
anatofuz
parents:
diff changeset
26 }
anatofuz
parents:
diff changeset
27 -(id)string;
anatofuz
parents:
diff changeset
28 -(id)newString;
anatofuz
parents:
diff changeset
29 @end
anatofuz
parents:
diff changeset
30
anatofuz
parents:
diff changeset
31 void f(BOOL b, id p) {
anatofuz
parents:
diff changeset
32 NSString *str = (NSString *)kUTTypePlainText; // no change
anatofuz
parents:
diff changeset
33 str = b ? kUTTypeRTF : kUTTypePlainText; // no change
anatofuz
parents:
diff changeset
34 str = (NSString *)(b ? kUTTypeRTF : kUTTypePlainText); // no change
anatofuz
parents:
diff changeset
35 str = (NSString *)p; // no change.
anatofuz
parents:
diff changeset
36
anatofuz
parents:
diff changeset
37 str = (__bridge NSString *)kNonConst;
anatofuz
parents:
diff changeset
38 str = (__bridge NSString *)(b ? kUTTypeRTF : kNonConst);
anatofuz
parents:
diff changeset
39 str = (__bridge NSString *)(b ? kUTTypeRTF : kNonConst);
anatofuz
parents:
diff changeset
40
anatofuz
parents:
diff changeset
41 CFUUIDRef _uuid;
anatofuz
parents:
diff changeset
42 NSString *_uuidString = (NSString *)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, _uuid));
anatofuz
parents:
diff changeset
43 _uuidString = (NSString *)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, _uuid));
anatofuz
parents:
diff changeset
44 _uuidString = CFBridgingRelease(CFRetain(_uuid));
anatofuz
parents:
diff changeset
45 }
anatofuz
parents:
diff changeset
46
anatofuz
parents:
diff changeset
47 @implementation NSString (StrExt)
anatofuz
parents:
diff changeset
48 - (NSString *)stringEscapedAsURI {
anatofuz
parents:
diff changeset
49 CFStringRef str = (__bridge CFStringRef)self;
anatofuz
parents:
diff changeset
50 CFStringRef str2 = (__bridge CFStringRef)(self);
anatofuz
parents:
diff changeset
51 return self;
anatofuz
parents:
diff changeset
52 }
anatofuz
parents:
diff changeset
53 @end
anatofuz
parents:
diff changeset
54
anatofuz
parents:
diff changeset
55 @implementation NSString
anatofuz
parents:
diff changeset
56 -(id)string {
anatofuz
parents:
diff changeset
57 if (0)
anatofuz
parents:
diff changeset
58 return (__bridge id)(sref);
anatofuz
parents:
diff changeset
59 else
anatofuz
parents:
diff changeset
60 return (__bridge id)(strS->sref_member);
anatofuz
parents:
diff changeset
61 }
anatofuz
parents:
diff changeset
62 -(id)newString { return 0; }
anatofuz
parents:
diff changeset
63 @end
anatofuz
parents:
diff changeset
64
anatofuz
parents:
diff changeset
65 extern void consumeParam(CFStringRef CF_CONSUMED p);
anatofuz
parents:
diff changeset
66
anatofuz
parents:
diff changeset
67 void f2(NSString *s) {
anatofuz
parents:
diff changeset
68 CFStringRef ref = (__bridge CFStringRef)([s string]);
anatofuz
parents:
diff changeset
69 ref = (__bridge CFStringRef)[s string];
anatofuz
parents:
diff changeset
70 ref = (__bridge CFStringRef)(s.string);
anatofuz
parents:
diff changeset
71 ref = CFBridgingRetain([NSString new]);
anatofuz
parents:
diff changeset
72 ref = CFBridgingRetain([s newString]);
anatofuz
parents:
diff changeset
73 ref = (CFStringRef)CFBridgingRetain([NSString new]);
anatofuz
parents:
diff changeset
74 ref = CFBridgingRetain([[NSString alloc] init]);
anatofuz
parents:
diff changeset
75 ref = CFBridgingRetain([s string]);
anatofuz
parents:
diff changeset
76 ref = (CFStringRef)CFBridgingRetain([s string]);
anatofuz
parents:
diff changeset
77 ref = CFBridgingRetain([s string]);
anatofuz
parents:
diff changeset
78 ref = CFBridgingRetain(s);
anatofuz
parents:
diff changeset
79 ref = CFBridgingRetain(s);
anatofuz
parents:
diff changeset
80
anatofuz
parents:
diff changeset
81 consumeParam((CFStringRef)CFBridgingRetain(s));
anatofuz
parents:
diff changeset
82 consumeParam(CFBridgingRetain(s));
anatofuz
parents:
diff changeset
83 }