Rafael Espindola 5179a4ea28 Use private linkage for globals we already name with \01L and \01l.
In llvm the only semantic difference between internal and private is that llvm
tries to hide private globals my mangling them with a private prefix. Since
the globals changed by this patch already had the magic don't mangle marker,
there should be no change in the generated assembly.

A followup patch should then be able to drop the \01L and \01l prefixes and let
llvm mangle as appropriate.

llvm-svn: 202419
2014-02-27 19:01:11 +00:00

56 lines
1.1 KiB
Objective-C

// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -o %t %s
// RUN: FileCheck < %t %s
// rdar://11777609
typedef struct {} Z;
@interface A
-(void)bar:(Z)a;
-(void)foo:(Z)a : (char*)b : (Z)c : (double) d;
@end
@implementation A
-(void)bar:(Z)a {}
-(void)foo:(Z)a: (char*)b : (Z)c : (double) d {}
@end
// CHECK: private global [14 x i8] c"v16@0:8{?=}16
// CHECK: private global [26 x i8] c"v32@0:8{?=}16*16{?=}24d24
// rdar://13190095
@interface NSObject @end
@class BABugExample;
typedef BABugExample BABugExampleRedefinition;
@interface BABugExample : NSObject {
BABugExampleRedefinition *_property; // .asciz "^{BABugExample=^{BABugExample}}"
}
@property (copy) BABugExampleRedefinition *property;
@end
@implementation BABugExample
@synthesize property = _property;
@end
// CHECK: private global [24 x i8] c"^{BABugExample=@}16
// rdar://14408244
@class SCNCamera;
typedef SCNCamera C3DCamera;
typedef struct
{
C3DCamera *presentationInstance;
} C3DCameraStorage;
@interface SCNCamera
@end
@implementation SCNCamera
{
C3DCameraStorage _storage;
}
@end
// CHECK: private global [39 x i8] c"{?=\22presentationInstance\22^{SCNCamera}}\00"