File tree Expand file tree Collapse file tree 2 files changed +11
-4
lines changed Expand file tree Collapse file tree 2 files changed +11
-4
lines changed Original file line number Diff line number Diff line change @@ -1699,11 +1699,18 @@ class CGObjCGNUstep2 : public CGObjCGNUstep {
1699
1699
llvm::Value *EmitIvarOffset (CodeGenFunction &CGF,
1700
1700
const ObjCInterfaceDecl *Interface,
1701
1701
const ObjCIvarDecl *Ivar) override {
1702
- const std::string Name = GetIVarOffsetVariableName (Ivar->getContainingInterface (), Ivar);
1702
+ const ObjCInterfaceDecl *ContainingInterface =
1703
+ Ivar->getContainingInterface ();
1704
+ const std::string Name =
1705
+ GetIVarOffsetVariableName (ContainingInterface, Ivar);
1703
1706
llvm::GlobalVariable *IvarOffsetPointer = TheModule.getNamedGlobal (Name);
1704
- if (!IvarOffsetPointer)
1707
+ if (!IvarOffsetPointer) {
1705
1708
IvarOffsetPointer = new llvm::GlobalVariable (TheModule, IntTy, false ,
1706
1709
llvm::GlobalValue::ExternalLinkage, nullptr , Name);
1710
+ if (Ivar->getAccessControl () != ObjCIvarDecl::Private &&
1711
+ Ivar->getAccessControl () != ObjCIvarDecl::Package)
1712
+ CGM.setGVProperties (IvarOffsetPointer, ContainingInterface);
1713
+ }
1707
1714
CharUnits Align = CGM.getIntAlign ();
1708
1715
llvm::Value *Offset =
1709
1716
CGF.Builder .CreateAlignedLoad (IntTy, IvarOffsetPointer, Align);
Original file line number Diff line number Diff line change @@ -112,7 +112,7 @@ @interface M : I {
112
112
// CHECK-IR-DAG: @"OBJC_IVAR_$_M._ivar" = external dllimport global i32
113
113
114
114
// CHECK-NF-DAG: @"$_OBJC_REF_CLASS_M" = external dllimport global ptr
115
- // CHECK-NF-DAG: @"__objc_ivar_offset_M._ivar.@" = external global i32
115
+ // CHECK-NF-DAG: @"__objc_ivar_offset_M._ivar.@" = external dllimport global i32
116
116
117
117
__declspec (dllexport)
118
118
__attribute__((__objc_exception__))
@@ -151,7 +151,7 @@ id f(Q *q) {
151
151
152
152
// CHECK-IR-DAG: @"OBJC_IVAR_$_M._ivar" = external dllimport global i32
153
153
154
- // CHECK-NF-DAG: @"__objc_ivar_offset_M._ivar.@" = external global i32
154
+ // CHECK-NF-DAG: @"__objc_ivar_offset_M._ivar.@" = external dllimport global i32
155
155
156
156
int g (void ) {
157
157
@autoreleasepool {
You can’t perform that action at this time.
0 commit comments