private symbols in the __DATA segment internal. This prevents the linker from removing the symbol names. Keeping the symbols visible enables tools to collect various information about the symbols, for example, tools that discover whether or not a symbol gets dirtied. rdar://problem/48887111 Differential Revision: https://reviews.llvm.org/D61454 llvm-svn: 360359
29 lines
634 B
Objective-C
29 lines
634 B
Objective-C
// RUN: %clang -cc1 -triple thumbv7--windows-itanium -fobjc-runtime=ios -emit-llvm -o - %s -Wno-objc-root-class | FileCheck %s
|
|
|
|
@protocol P
|
|
- (void) method;
|
|
@end
|
|
|
|
@protocol Q @end
|
|
@protocol R @end
|
|
|
|
@interface I<P>
|
|
@end
|
|
|
|
@implementation I
|
|
- (void) method { }
|
|
@end
|
|
|
|
_Bool f(void) {
|
|
return @protocol(Q) == @protocol(R);
|
|
}
|
|
|
|
// CHECK: $"_OBJC_PROTOCOL_$_P" = comdat any
|
|
// CHECK: $"_OBJC_LABEL_PROTOCOL_$_P" = comdat any
|
|
// CHECK: $"_OBJC_PROTOCOL_REFERENCE_$_Q" = comdat any
|
|
// CHECK: $"_OBJC_PROTOCOL_REFERENCE_$_R" = comdat any
|
|
|
|
// CHECK: @"_OBJC_PROTOCOL_$_P" = {{.*}}, comdat
|
|
// CHECK: @"_OBJC_LABEL_PROTOCOL_$_P" = {{.*}}, comdat
|
|
|