r260496 - [Objective-c] Stop attaching section "datacoal_nt" to global variables.

Akira Hatanaka via cfe-commits cfe-commits at lists.llvm.org
Mon Feb 15 16:51:58 PST 2016


Thanks for the catch! Those checks aren’t necessary at all. I’ve removed them in r260921.

> On Feb 14, 2016, at 1:08 PM, Duncan P. N. Exon Smith <dexonsmith at apple.com> wrote:
> 
> 
>> On 2016-Feb-10, at 22:36, Akira Hatanaka via cfe-commits <cfe-commits at lists.llvm.org> wrote:
>> 
>> Author: ahatanak
>> Date: Thu Feb 11 00:36:35 2016
>> New Revision: 260496
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=260496&view=rev
>> Log:
>> [Objective-c] Stop attaching section "datacoal_nt" to global variables.
>> 
>> The current macho linker just copies symbols in section datacoal_nt to
>> section data, so it doesn't really matter whether or not section
>> "datacoal_nt" is attached to the global variable.
>> 
>> This is a follow-up to r250370, which made changes in llvm to stop
>> putting functions and data in the *coal* sections.
>> 
>> rdar://problem/24528611
>> 
>> Modified:
>>   cfe/trunk/lib/CodeGen/CGObjCMac.cpp
>>   cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp
>>   cfe/trunk/test/CodeGenObjC/exceptions-asm-attribute.m
>>   cfe/trunk/test/CodeGenObjC/metadata-symbols-64.m
>>   cfe/trunk/test/CodeGenObjC/metadata_symbols.m
>> 
>> Modified: cfe/trunk/lib/CodeGen/CGObjCMac.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCMac.cpp?rev=260496&r1=260495&r2=260496&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/CodeGen/CGObjCMac.cpp (original)
>> +++ cfe/trunk/lib/CodeGen/CGObjCMac.cpp Thu Feb 11 00:36:35 2016
>> @@ -6409,7 +6409,7 @@ llvm::Constant *CGObjCNonFragileABIMac::
>>  const ObjCProtocolDecl *PD) {
>>  llvm::GlobalVariable *&Entry = Protocols[PD->getIdentifier()];
>> 
>> -  if (!Entry) {
>> +  if (!Entry)
>>    // We use the initializer as a marker of whether this is a forward
>>    // reference or not. At module finalization we add the empty
>>    // contents for protocols which were referenced but never defined.
>> @@ -6418,8 +6418,6 @@ llvm::Constant *CGObjCNonFragileABIMac::
>>                                 false, llvm::GlobalValue::ExternalLinkage,
>>                                 nullptr,
>>                                 "\01l_OBJC_PROTOCOL_$_" + PD->getObjCRuntimeNameAsString());
>> -    Entry->setSection("__DATA,__datacoal_nt,coalesced");
>> -  }
>> 
>>  return Entry;
>> }
>> @@ -6546,7 +6544,6 @@ llvm::Constant *CGObjCNonFragileABIMac::
>>                               "\01l_OBJC_PROTOCOL_$_" + PD->getObjCRuntimeNameAsString());
>>    Entry->setAlignment(
>>      CGM.getDataLayout().getABITypeAlignment(ObjCTypes.ProtocolnfABITy));
>> -    Entry->setSection("__DATA,__datacoal_nt,coalesced");
>> 
>>    Protocols[PD->getIdentifier()] = Entry;
>>  }
>> @@ -7271,8 +7268,6 @@ CGObjCNonFragileABIMac::GetInterfaceEHTy
>> 
>>  if (ForDefinition)
>>    Entry->setSection("__DATA,__objc_const");
>> -  else
>> -    Entry->setSection("__DATA,__datacoal_nt,coalesced");
>> 
>>  return Entry;
>> }
>> 
>> Modified: cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp?rev=260496&r1=260495&r2=260496&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp (original)
>> +++ cfe/trunk/lib/Frontend/Rewrite/RewriteModernObjC.cpp Thu Feb 11 00:36:35 2016
>> @@ -6981,7 +6981,7 @@ void RewriteModernObjC::RewriteObjCProto
>>    Result += "static ";
>>  Result += "struct _protocol_t _OBJC_PROTOCOL_";
>>  Result += PDecl->getNameAsString();
>> -  Result += " __attribute__ ((used, section (\"__DATA,__datacoal_nt,coalesced\"))) = {\n";
>> +  Result += " __attribute__ ((used)) = {\n";
>>  Result += "\t0,\n"; // id is; is null
>>  Result += "\t\""; Result += PDecl->getNameAsString(); Result += "\",\n";
>>  if (SuperProtocols.size() > 0) {
>> 
>> Modified: cfe/trunk/test/CodeGenObjC/exceptions-asm-attribute.m
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/exceptions-asm-attribute.m?rev=260496&r1=260495&r2=260496&view=diff
>> ==============================================================================
>> --- cfe/trunk/test/CodeGenObjC/exceptions-asm-attribute.m (original)
>> +++ cfe/trunk/test/CodeGenObjC/exceptions-asm-attribute.m Thu Feb 11 00:36:35 2016
>> @@ -12,7 +12,7 @@
>> // CHECK-X86_64: @"OBJC_CLASS_$_MySecretNamespace.A" = global {{.*}}, section "__DATA, __objc_data", align 8
>> // CHECK-X86_64: @"OBJC_METACLASS_$_MySecretNamespace.A" = global {{.*}}, section "__DATA, __objc_data", align 8
>> // CHECK-X86_64: @OBJC_CLASS_NAME_ = {{.*}}, section "__TEXT,__objc_classname,cstring_literals", align 1
>> -// CHECK-X86_64: @"OBJC_EHTYPE_$_MySecretNamespace.EH1" = weak global {{.*}}, section "__DATA,__datacoal_nt,coalesced", align 8
>> +// CHECK-X86_64: @"OBJC_EHTYPE_$_MySecretNamespace.EH1" = weak global {{.*}}, align 8
>> // CHECK-X86_64: @"OBJC_EHTYPE_$_MySecretNamespace.EH2" = external global
>> // CHECK-X86_64: @"OBJC_EHTYPE_$_MySecretNamespace.EH3" = global {{.*}}, section "__DATA,__objc_const", align 8
>> // CHECK-X86_64: @"OBJC_LABEL_CLASS_$" = private global {{.*}}, section "__DATA, __objc_classlist, regular, no_dead_strip", align 8
>> @@ -24,7 +24,7 @@
>> 
>> // CHECK-X86_64-HIDDEN: @"OBJC_CLASS_$_MySecretNamespace.A" = hidden global {{.*}}, section "__DATA, __objc_data", align 8
>> // CHECK-X86_64-HIDDEN: @"OBJC_METACLASS_$_MySecretNamespace.A" = hidden global {{.*}}, section "__DATA, __objc_data", align 8
>> -// CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_MySecretNamespace.EH1" = weak hidden global {{.*}}, section "__DATA,__datacoal_nt,coalesced"
>> +// CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_MySecretNamespace.EH1" = weak hidden global {{.*}}
> 
> The `{{.*}}` here isn't useful anymore; can you remove it?
> Or is there something else you should be checking for?
> 
>> // CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_MySecretNamespace.EH2" = external global
>> // CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_MySecretNamespace.EH3" = hidden global {{.*}}, section "__DATA,__objc_const", align 8
>> // CHECK-X86_64-HIDDEN: define internal void @"\01-[A im0]"
>> @@ -36,7 +36,7 @@
>> // CHECK-ARMV6: @"OBJC_CLASS_$_MySecretNamespace.A" = global {{.*}}, section "__DATA, __objc_data", align 4
>> // CHECK-ARMV6: @"OBJC_METACLASS_$_MySecretNamespace.A" = global {{.*}}, section "__DATA, __objc_data", align 4
>> // CHECK-ARMV6: @OBJC_CLASS_NAME_ = {{.*}}, section "__TEXT,__objc_classname,cstring_literals", align 1
>> -// CHECK-ARMV6: @"OBJC_EHTYPE_$_MySecretNamespace.EH1" = weak global {{.*}}, section "__DATA,__datacoal_nt,coalesced", align 4
>> +// CHECK-ARMV6: @"OBJC_EHTYPE_$_MySecretNamespace.EH1" = weak global {{.*}}, align 4
>> // CHECK-ARMV6: @"OBJC_EHTYPE_$_MySecretNamespace.EH2" = external global
>> // CHECK-ARMV6: @"OBJC_EHTYPE_$_MySecretNamespace.EH3" = global {{.*}}, section "__DATA,__objc_const", align 4
>> // CHECK-ARMV6: @"OBJC_LABEL_CLASS_$" = private global {{.*}}, section "__DATA, __objc_classlist, regular, no_dead_strip", align 4
>> 
>> Modified: cfe/trunk/test/CodeGenObjC/metadata-symbols-64.m
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/metadata-symbols-64.m?rev=260496&r1=260495&r2=260496&view=diff
>> ==============================================================================
>> --- cfe/trunk/test/CodeGenObjC/metadata-symbols-64.m (original)
>> +++ cfe/trunk/test/CodeGenObjC/metadata-symbols-64.m Thu Feb 11 00:36:35 2016
>> @@ -11,7 +11,7 @@
>> // CHECK: @"\01l_OBJC_$_CLASS_METHODS_A" = private global {{.*}} section "__DATA, __objc_const", align 8
>> // CHECK: @"\01l_OBJC_$_PROTOCOL_INSTANCE_METHODS_P" = private global {{.*}} section "__DATA, __objc_const", align 8
>> // CHECK: @"\01l_OBJC_$_PROTOCOL_CLASS_METHODS_P" = private global {{.*}} section "__DATA, __objc_const", align 8
>> -// CHECK: @"\01l_OBJC_PROTOCOL_$_P" = weak hidden global {{.*}} section "__DATA,__datacoal_nt,coalesced", align 8
>> +// CHECK: @"\01l_OBJC_PROTOCOL_$_P" = weak hidden global {{.*}}, align 8
>> // CHECK: @"\01l_OBJC_LABEL_PROTOCOL_$_P" = weak hidden global {{.*}} section "__DATA, __objc_protolist, coalesced, no_dead_strip", align 8
>> // CHECK: @"\01l_OBJC_CLASS_PROTOCOLS_$_A" = private global {{.*}} section "__DATA, __objc_const", align 8
>> // CHECK: @"\01l_OBJC_METACLASS_RO_$_A" = private global {{.*}} section "__DATA, __objc_const", align 8
>> 
>> Modified: cfe/trunk/test/CodeGenObjC/metadata_symbols.m
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/metadata_symbols.m?rev=260496&r1=260495&r2=260496&view=diff
>> ==============================================================================
>> --- cfe/trunk/test/CodeGenObjC/metadata_symbols.m (original)
>> +++ cfe/trunk/test/CodeGenObjC/metadata_symbols.m Thu Feb 11 00:36:35 2016
>> @@ -11,7 +11,7 @@
>> // CHECK-X86_64: @"OBJC_CLASS_$_A" = global {{.*}}, section "__DATA, __objc_data", align 8
>> // CHECK-X86_64: @"OBJC_METACLASS_$_A" = global {{.*}}, section "__DATA, __objc_data", align 8
>> // CHECK-X86_64: @OBJC_CLASS_NAME_ = {{.*}}, section "__TEXT,__objc_classname,cstring_literals", align 1
>> -// CHECK-X86_64: @"OBJC_EHTYPE_$_EH1" = weak global {{.*}}, section "__DATA,__datacoal_nt,coalesced", align 8
>> +// CHECK-X86_64: @"OBJC_EHTYPE_$_EH1" = weak global {{.*}}, align 8
>> // CHECK-X86_64: @"OBJC_EHTYPE_$_EH2" = external global
>> // CHECK-X86_64: @"OBJC_EHTYPE_$_EH3" = global {{.*}}, section "__DATA,__objc_const", align 8
>> // CHECK-X86_64: @"OBJC_LABEL_CLASS_$" = private global {{.*}}, section "__DATA, __objc_classlist, regular, no_dead_strip", align 8
>> @@ -23,7 +23,7 @@
>> 
>> // CHECK-X86_64-HIDDEN: @"OBJC_CLASS_$_A" = hidden global {{.*}}, section "__DATA, __objc_data", align 8
>> // CHECK-X86_64-HIDDEN: @"OBJC_METACLASS_$_A" = hidden global {{.*}}, section "__DATA, __objc_data", align 8
>> -// CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_EH1" = weak hidden global {{.*}}, section "__DATA,__datacoal_nt,coalesced"
>> +// CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_EH1" = weak hidden global {{.*}}
> 
> Same comment here as above.
> 
>> // CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_EH2" = external global
>> // CHECK-X86_64-HIDDEN: @"OBJC_EHTYPE_$_EH3" = hidden global {{.*}}, section "__DATA,__objc_const", align 8
>> // CHECK-X86_64-HIDDEN: define internal void @"\01-[A im0]"
>> @@ -35,7 +35,7 @@
>> // CHECK-ARMV6: @"OBJC_CLASS_$_A" = global {{.*}}, section "__DATA, __objc_data", align 4
>> // CHECK-ARMV6: @"OBJC_METACLASS_$_A" = global {{.*}}, section "__DATA, __objc_data", align 4
>> // CHECK-ARMV6: @OBJC_CLASS_NAME_ = {{.*}}, section "__TEXT,__objc_classname,cstring_literals", align 1
>> -// CHECK-ARMV6: @"OBJC_EHTYPE_$_EH1" = weak global {{.*}}, section "__DATA,__datacoal_nt,coalesced", align 4
>> +// CHECK-ARMV6: @"OBJC_EHTYPE_$_EH1" = weak global {{.*}}, align 4
>> // CHECK-ARMV6: @"OBJC_EHTYPE_$_EH2" = external global
>> // CHECK-ARMV6: @"OBJC_EHTYPE_$_EH3" = global {{.*}}, section "__DATA,__objc_const", align 4
>> // CHECK-ARMV6: @"OBJC_LABEL_CLASS_$" = private global {{.*}}, section "__DATA, __objc_classlist, regular, no_dead_strip", align 4
>> 
>> 
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
> 



More information about the cfe-commits mailing list