[PATCH] D61454: [CodeGen][ObjC] Remove the leading 'l_' from ObjC symbols and make private symbols in the __DATA segment internal.
This revision was automatically updated to reflect the committed changes. Closed by commit rC360359: [CodeGen][ObjC] Remove the leading `l_` from ObjC symbols and make (authored by ahatanak, committed by ). Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61454/new/ https://reviews.llvm.org/D61454 Files: lib/CodeGen/CGObjCMac.cpp test/CodeGenObjC/arc.m test/CodeGenObjC/boxing.m test/CodeGenObjC/exceptions-asm-attribute.m test/CodeGenObjC/externally-initialized-selectors.m test/CodeGenObjC/forward-protocol-metadata-symbols.m test/CodeGenObjC/instance-method-metadata.m test/CodeGenObjC/interface-layout-64.m test/CodeGenObjC/metadata-class-properties.m test/CodeGenObjC/metadata-symbols-32.m test/CodeGenObjC/metadata-symbols-64.m test/CodeGenObjC/metadata_symbols.m test/CodeGenObjC/mrc-weak.m test/CodeGenObjC/non-lazy-classes.m test/CodeGenObjC/private-extern-selector-reference.m test/CodeGenObjC/property-category-impl.m test/CodeGenObjC/property-list-in-class.m test/CodeGenObjC/property-list-in-extension.m test/CodeGenObjC/protocol-comdat.m test/CodeGenObjC/protocols.m test/CodeGenObjC/section-name.m test/CodeGenObjC/sections.m test/CodeGenObjCXX/externally-initialized-selectors.mm test/CodeGenObjCXX/mrc-weak.mm Index: test/CodeGenObjC/externally-initialized-selectors.m === --- test/CodeGenObjC/externally-initialized-selectors.m +++ test/CodeGenObjC/externally-initialized-selectors.m @@ -1,7 +1,8 @@ -// RUN: %clang_cc1 -fobjc-runtime=macosx-fragile-10.5 -o - -emit-llvm %s | FileCheck %s -// RUN: %clang_cc1 -o - -emit-llvm %s | FileCheck %s +// RUN: %clang_cc1 -fobjc-runtime=macosx-fragile-10.5 -o - -emit-llvm %s | FileCheck -check-prefix=FRAGILE %s +// RUN: %clang_cc1 -o - -emit-llvm %s | FileCheck -check-prefix=NONFRAGILE %s -// CHECK: @OBJC_SELECTOR_REFERENCES_ = private externally_initialized global +// NONFRAGILE: @OBJC_SELECTOR_REFERENCES_ = internal externally_initialized global +// FRAGILE: @OBJC_SELECTOR_REFERENCES_ = private externally_initialized global void test(id x) { [x doSomething]; Index: test/CodeGenObjC/instance-method-metadata.m === --- test/CodeGenObjC/instance-method-metadata.m +++ test/CodeGenObjC/instance-method-metadata.m @@ -27,7 +27,7 @@ @synthesize prop; @end -// CHECK: l_OBJC_$_INSTANCE_METHODS_Bar: +// CHECK: _OBJC_$_INSTANCE_METHODS_Bar: // CHECK-NEXT:.long 24 // CHECK-NEXT:.long 2 // CHECK-NEXT:.quad L_OBJC_METH_VAR_NAME_ Index: test/CodeGenObjC/protocol-comdat.m === --- test/CodeGenObjC/protocol-comdat.m +++ test/CodeGenObjC/protocol-comdat.m @@ -20,8 +20,8 @@ // CHECK: $"_OBJC_PROTOCOL_$_P" = comdat any // CHECK: $"_OBJC_LABEL_PROTOCOL_$_P" = comdat any -// CHECK: $"\01l_OBJC_PROTOCOL_REFERENCE_$_Q" = comdat any -// CHECK: $"\01l_OBJC_PROTOCOL_REFERENCE_$_R" = 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 Index: test/CodeGenObjC/non-lazy-classes.m === --- test/CodeGenObjC/non-lazy-classes.m +++ test/CodeGenObjC/non-lazy-classes.m @@ -1,7 +1,7 @@ // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -Wno-objc-root-class -emit-llvm -o - %s | FileCheck %s -// CHECK: @"OBJC_LABEL_NONLAZY_CLASS_$" = private global [3 x {{.*}}]{{.*}}@"OBJC_CLASS_$_A"{{.*}},{{.*}}@"OBJC_CLASS_$_D"{{.*}},{{.*}}"OBJC_CLASS_$_E"{{.*}} section "__DATA,__objc_nlclslist,regular,no_dead_strip", align 8 -// CHECK: @"OBJC_LABEL_NONLAZY_CATEGORY_$" = private global [2 x {{.*}}] {{.*}}@"\01l_OBJC_$_CATEGORY_A_$_Cat"{{.*}},{{.*}}@"\01l_OBJC_$_CATEGORY_E_$_MyCat"{{.*}}, section "__DATA,__objc_nlcatlist,regular,no_dead_strip", align 8 +// CHECK: @"OBJC_LABEL_NONLAZY_CLASS_$" = internal global [3 x {{.*}}]{{.*}}@"OBJC_CLASS_$_A"{{.*}},{{.*}}@"OBJC_CLASS_$_D"{{.*}},{{.*}}"OBJC_CLASS_$_E"{{.*}} section "__DATA,__objc_nlclslist,regular,no_dead_strip", align 8 +// CHECK: @"OBJC_LABEL_NONLAZY_CATEGORY_$" = internal global [2 x {{.*}}] {{.*}}@"_OBJC_$_CATEGORY_A_$_Cat"{{.*}},{{.*}}@"_OBJC_$_CATEGORY_E_$_MyCat"{{.*}}, section "__DATA,__objc_nlcatlist,regular,no_dead_strip", align 8 @interface A @end @implementation A Index: test/CodeGenObjC/metadata-symbols-64.m === --- test/CodeGenObjC/metadata-symbols-64.m +++ test/CodeGenObjC/metadata-symbols-64.m @@ -8,29 +8,29 @@ // CHECK: @OBJC_CLASS_NAME_{{[0-9]*}} = private unnamed_addr constant {{.*}} section "__TEXT,__objc_classname,cstring_literals", align 1 // CHECK: @OBJC_METH_VAR_NAME_{{[0-9]*}} = private unnamed_addr constant {{.*}} section
[PATCH] D61454: [CodeGen][ObjC] Remove the leading 'l_' from ObjC symbols and make private symbols in the __DATA segment internal.
vsk accepted this revision. vsk added a comment. This revision is now accepted and ready to land. Lgtm, thanks! Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61454/new/ https://reviews.llvm.org/D61454 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D61454: [CodeGen][ObjC] Remove the leading 'l_' from ObjC symbols and make private symbols in the __DATA segment internal.
ahatanak updated this revision to Diff 198581. ahatanak marked an inline comment as done. ahatanak added a comment. Define helper function `getLinkageTypeForObjCMetadata`. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61454/new/ https://reviews.llvm.org/D61454 Files: lib/CodeGen/CGObjCMac.cpp test/CodeGenObjC/arc.m test/CodeGenObjC/boxing.m test/CodeGenObjC/exceptions-asm-attribute.m test/CodeGenObjC/externally-initialized-selectors.m test/CodeGenObjC/forward-protocol-metadata-symbols.m test/CodeGenObjC/instance-method-metadata.m test/CodeGenObjC/interface-layout-64.m test/CodeGenObjC/metadata-class-properties.m test/CodeGenObjC/metadata-symbols-32.m test/CodeGenObjC/metadata-symbols-64.m test/CodeGenObjC/metadata_symbols.m test/CodeGenObjC/mrc-weak.m test/CodeGenObjC/non-lazy-classes.m test/CodeGenObjC/private-extern-selector-reference.m test/CodeGenObjC/property-category-impl.m test/CodeGenObjC/property-list-in-class.m test/CodeGenObjC/property-list-in-extension.m test/CodeGenObjC/protocol-comdat.m test/CodeGenObjC/protocols.m test/CodeGenObjC/section-name.m test/CodeGenObjC/sections.m test/CodeGenObjCXX/externally-initialized-selectors.mm test/CodeGenObjCXX/mrc-weak.mm Index: test/CodeGenObjCXX/mrc-weak.mm === --- test/CodeGenObjCXX/mrc-weak.mm +++ test/CodeGenObjCXX/mrc-weak.mm @@ -7,7 +7,7 @@ @end // CHECK-MODERN: @OBJC_CLASS_NAME_{{.*}} = {{.*}} c"\01\00" -// CHECK-MODERN: @"\01l_OBJC_CLASS_RO_$_Foo" = {{.*}} { i32 772 +// CHECK-MODERN: @"_OBJC_CLASS_RO_$_Foo" = {{.*}} { i32 772 // 772 == 0x304 //^ HasMRCWeakIvars //^ HasCXXDestructorOnly Index: test/CodeGenObjCXX/externally-initialized-selectors.mm === --- test/CodeGenObjCXX/externally-initialized-selectors.mm +++ test/CodeGenObjCXX/externally-initialized-selectors.mm @@ -1,7 +1,8 @@ -// RUN: %clang_cc1 -fobjc-runtime=macosx-fragile-10.5 -o - -emit-llvm %s | FileCheck %s -// RUN: %clang_cc1 -o - -emit-llvm %s | FileCheck %s +// RUN: %clang_cc1 -fobjc-runtime=macosx-fragile-10.5 -o - -emit-llvm %s | FileCheck -check-prefix=FRAGILE %s +// RUN: %clang_cc1 -o - -emit-llvm %s | FileCheck -check-prefix=NONFRAGILE %s -// CHECK: @OBJC_SELECTOR_REFERENCES_ = private externally_initialized global +// NONFRAGILE: @OBJC_SELECTOR_REFERENCES_ = internal externally_initialized global +// FRAGILE: @OBJC_SELECTOR_REFERENCES_ = private externally_initialized global void test(id x) { [x doSomething]; Index: test/CodeGenObjC/sections.m === --- test/CodeGenObjC/sections.m +++ test/CodeGenObjC/sections.m @@ -34,39 +34,42 @@ return [I class] == @protocol(P); } -// CHECK-COFF: @"OBJC_CLASSLIST_SUP_REFS_$_" = {{.*}}, section ".objc_superrefs$B" -// CHECK-COFF: @OBJC_SELECTOR_REFERENCES_ = {{.*}}, section ".objc_selrefs$B" -// CHECK-COFF: @"OBJC_CLASSLIST_REFERENCES_$_" = {{.*}}, section ".objc_classrefs$B" -// CHECK-COFF: @"\01l_objc_msgSend_fixup_class" = {{.*}}, section ".objc_msgrefs$B" +// CHECK-COFF: @"_OBJC_$_CLASS_METHODS_I" = private +// CHECK-COFF: @"OBJC_CLASSLIST_SUP_REFS_$_" = private {{.*}}, section ".objc_superrefs$B" +// CHECK-COFF: @OBJC_SELECTOR_REFERENCES_ = private {{.*}}, section ".objc_selrefs$B" +// CHECK-COFF: @"OBJC_CLASSLIST_REFERENCES_$_" = private {{.*}}, section ".objc_classrefs$B" +// CHECK-COFF: @_objc_msgSend_fixup_class = {{.*}}, section ".objc_msgrefs$B" // CHECK-COFF: @"_OBJC_LABEL_PROTOCOL_$_P" = {{.*}}, section ".objc_protolist$B" -// CHECK-COFF: @"\01l_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section ".objc_protorefs$B" -// CHECK-COFF: @"OBJC_LABEL_CLASS_$" = {{.*}}, section ".objc_classlist$B" -// CHECK-COFF: @"OBJC_LABEL_NONLAZY_CLASS_$" = {{.*}}, section ".objc_nlclslist$B" -// CHECK-COFF: @"OBJC_LABEL_CATEGORY_$" = {{.*}}, section ".objc_catlist$B" -// CHECK-COFF: @"OBJC_LABEL_NONLAZY_CATEGORY_$" = {{.*}}, section ".objc_nlcatlist$B" +// CHECK-COFF: @"_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section ".objc_protorefs$B" +// CHECK-COFF: @"OBJC_LABEL_CLASS_$" = private {{.*}}, section ".objc_classlist$B" +// CHECK-COFF: @"OBJC_LABEL_NONLAZY_CLASS_$" = private {{.*}}, section ".objc_nlclslist$B" +// CHECK-COFF: @"OBJC_LABEL_CATEGORY_$" = private {{.*}}, section ".objc_catlist$B" +// CHECK-COFF: @"OBJC_LABEL_NONLAZY_CATEGORY_$" = private {{.*}}, section ".objc_nlcatlist$B" // CHECK-COFF: !{{[0-9]+}} = !{i32 1, !"Objective-C Image Info Section", !".objc_imageinfo$B"} -// CHECK-ELF: @"OBJC_CLASSLIST_SUP_REFS_$_" = {{.*}}, section "objc_superrefs" -// CHECK-ELF: @OBJC_SELECTOR_REFERENCES_ = {{.*}}, section "objc_selrefs" -// CHECK-ELF: @"OBJC_CLASSLIST_REFERENCES_$_" = {{.*}}, section "objc_classrefs" -// CHECK-ELF: @"\01l_objc_msgSend_fixup_class" = {{.*}}, section "objc_msgrefs" +// CHECK-ELF:
[PATCH] D61454: [CodeGen][ObjC] Remove the leading 'l_' from ObjC symbols and make private symbols in the __DATA segment internal.
vsk added inline comments. Comment at: lib/CodeGen/CGObjCMac.cpp:6039 +LT = llvm::GlobalValue::PrivateLinkage; + } + I see some minor variant of this logic repeated a few times. Wdyt of defining a 'getLinkageTypeForObjCMetadata(CGM, Section)' helper to consolidate it in one place? Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61454/new/ https://reviews.llvm.org/D61454 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D61454: [CodeGen][ObjC] Remove the leading 'l_' from ObjC symbols and make private symbols in the __DATA segment internal.
ahatanak updated this revision to Diff 198118. ahatanak added a comment. Make sure private linkage is replaced with internal linkage only when the object file format is MachO. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61454/new/ https://reviews.llvm.org/D61454 Files: lib/CodeGen/CGObjCMac.cpp test/CodeGenObjC/arc.m test/CodeGenObjC/boxing.m test/CodeGenObjC/exceptions-asm-attribute.m test/CodeGenObjC/externally-initialized-selectors.m test/CodeGenObjC/forward-protocol-metadata-symbols.m test/CodeGenObjC/instance-method-metadata.m test/CodeGenObjC/interface-layout-64.m test/CodeGenObjC/metadata-class-properties.m test/CodeGenObjC/metadata-symbols-32.m test/CodeGenObjC/metadata-symbols-64.m test/CodeGenObjC/metadata_symbols.m test/CodeGenObjC/mrc-weak.m test/CodeGenObjC/non-lazy-classes.m test/CodeGenObjC/private-extern-selector-reference.m test/CodeGenObjC/property-category-impl.m test/CodeGenObjC/property-list-in-class.m test/CodeGenObjC/property-list-in-extension.m test/CodeGenObjC/protocol-comdat.m test/CodeGenObjC/protocols.m test/CodeGenObjC/section-name.m test/CodeGenObjC/sections.m test/CodeGenObjCXX/externally-initialized-selectors.mm test/CodeGenObjCXX/mrc-weak.mm Index: test/CodeGenObjCXX/mrc-weak.mm === --- test/CodeGenObjCXX/mrc-weak.mm +++ test/CodeGenObjCXX/mrc-weak.mm @@ -7,7 +7,7 @@ @end // CHECK-MODERN: @OBJC_CLASS_NAME_{{.*}} = {{.*}} c"\01\00" -// CHECK-MODERN: @"\01l_OBJC_CLASS_RO_$_Foo" = {{.*}} { i32 772 +// CHECK-MODERN: @"_OBJC_CLASS_RO_$_Foo" = {{.*}} { i32 772 // 772 == 0x304 //^ HasMRCWeakIvars //^ HasCXXDestructorOnly Index: test/CodeGenObjCXX/externally-initialized-selectors.mm === --- test/CodeGenObjCXX/externally-initialized-selectors.mm +++ test/CodeGenObjCXX/externally-initialized-selectors.mm @@ -1,7 +1,8 @@ -// RUN: %clang_cc1 -fobjc-runtime=macosx-fragile-10.5 -o - -emit-llvm %s | FileCheck %s -// RUN: %clang_cc1 -o - -emit-llvm %s | FileCheck %s +// RUN: %clang_cc1 -fobjc-runtime=macosx-fragile-10.5 -o - -emit-llvm %s | FileCheck -check-prefix=FRAGILE %s +// RUN: %clang_cc1 -o - -emit-llvm %s | FileCheck -check-prefix=NONFRAGILE %s -// CHECK: @OBJC_SELECTOR_REFERENCES_ = private externally_initialized global +// NONFRAGILE: @OBJC_SELECTOR_REFERENCES_ = internal externally_initialized global +// FRAGILE: @OBJC_SELECTOR_REFERENCES_ = private externally_initialized global void test(id x) { [x doSomething]; Index: test/CodeGenObjC/sections.m === --- test/CodeGenObjC/sections.m +++ test/CodeGenObjC/sections.m @@ -34,39 +34,42 @@ return [I class] == @protocol(P); } -// CHECK-COFF: @"OBJC_CLASSLIST_SUP_REFS_$_" = {{.*}}, section ".objc_superrefs$B" -// CHECK-COFF: @OBJC_SELECTOR_REFERENCES_ = {{.*}}, section ".objc_selrefs$B" -// CHECK-COFF: @"OBJC_CLASSLIST_REFERENCES_$_" = {{.*}}, section ".objc_classrefs$B" -// CHECK-COFF: @"\01l_objc_msgSend_fixup_class" = {{.*}}, section ".objc_msgrefs$B" +// CHECK-COFF: @"_OBJC_$_CLASS_METHODS_I" = private +// CHECK-COFF: @"OBJC_CLASSLIST_SUP_REFS_$_" = private {{.*}}, section ".objc_superrefs$B" +// CHECK-COFF: @OBJC_SELECTOR_REFERENCES_ = private {{.*}}, section ".objc_selrefs$B" +// CHECK-COFF: @"OBJC_CLASSLIST_REFERENCES_$_" = private {{.*}}, section ".objc_classrefs$B" +// CHECK-COFF: @_objc_msgSend_fixup_class = {{.*}}, section ".objc_msgrefs$B" // CHECK-COFF: @"_OBJC_LABEL_PROTOCOL_$_P" = {{.*}}, section ".objc_protolist$B" -// CHECK-COFF: @"\01l_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section ".objc_protorefs$B" -// CHECK-COFF: @"OBJC_LABEL_CLASS_$" = {{.*}}, section ".objc_classlist$B" -// CHECK-COFF: @"OBJC_LABEL_NONLAZY_CLASS_$" = {{.*}}, section ".objc_nlclslist$B" -// CHECK-COFF: @"OBJC_LABEL_CATEGORY_$" = {{.*}}, section ".objc_catlist$B" -// CHECK-COFF: @"OBJC_LABEL_NONLAZY_CATEGORY_$" = {{.*}}, section ".objc_nlcatlist$B" +// CHECK-COFF: @"_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section ".objc_protorefs$B" +// CHECK-COFF: @"OBJC_LABEL_CLASS_$" = private {{.*}}, section ".objc_classlist$B" +// CHECK-COFF: @"OBJC_LABEL_NONLAZY_CLASS_$" = private {{.*}}, section ".objc_nlclslist$B" +// CHECK-COFF: @"OBJC_LABEL_CATEGORY_$" = private {{.*}}, section ".objc_catlist$B" +// CHECK-COFF: @"OBJC_LABEL_NONLAZY_CATEGORY_$" = private {{.*}}, section ".objc_nlcatlist$B" // CHECK-COFF: !{{[0-9]+}} = !{i32 1, !"Objective-C Image Info Section", !".objc_imageinfo$B"} -// CHECK-ELF: @"OBJC_CLASSLIST_SUP_REFS_$_" = {{.*}}, section "objc_superrefs" -// CHECK-ELF: @OBJC_SELECTOR_REFERENCES_ = {{.*}}, section "objc_selrefs" -// CHECK-ELF: @"OBJC_CLASSLIST_REFERENCES_$_" = {{.*}}, section "objc_classrefs" -// CHECK-ELF: @"\01l_objc_msgSend_fixup_class" = {{.*}}, section "objc_msgrefs" +// CHECK-ELF:
[PATCH] D61454: [CodeGen][ObjC] Remove the leading 'l_' from ObjC symbols and make private symbols in the __DATA segment internal.
ahatanak marked an inline comment as done. ahatanak added inline comments. Comment at: lib/CodeGen/CGObjCMac.cpp:7266 + false, + CGM.getTriple().isOSBinFormatMachO() + ? llvm::GlobalValue::InternalLinkage ahatanak wrote: > compnerd wrote: > > Is there a reason to not make this and the other instances `Internal` > > irrespective of the object file format? > When the object file format isn't MachO, this variable doesn't go into a > section that is in `__DATA`, so we want to keep the variable private to avoid > needlessly preserving the symbol name. > > The intent of the patch is to prevent the linker from removing the symbol > names of symbols in `__DATA` so that tools can collect information about > those symbols. I realized that there are other places where I should check the object file format so that the linkage isn't changed to internal when it doesn't have to be changed. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61454/new/ https://reviews.llvm.org/D61454 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D61454: [CodeGen][ObjC] Remove the leading 'l_' from ObjC symbols and make private symbols in the __DATA segment internal.
ahatanak marked 2 inline comments as done. ahatanak added inline comments. Comment at: lib/CodeGen/CGObjCMac.cpp:3961 + // linkage so that the linker preserves the symbol name. + llvm::GlobalValue::LinkageTypes LT = + Section.empty() || Section.startswith("__DATA") compnerd wrote: > Hmm, when would you have a metadata variable not in the `__DATA` segment? There are several places where a section string that starts with `__OBJC` is passed. For example, `CGObjCMac::EmitModuleSymbols`. Comment at: lib/CodeGen/CGObjCMac.cpp:7266 + false, + CGM.getTriple().isOSBinFormatMachO() + ? llvm::GlobalValue::InternalLinkage compnerd wrote: > Is there a reason to not make this and the other instances `Internal` > irrespective of the object file format? When the object file format isn't MachO, this variable doesn't go into a section that is in `__DATA`, so we want to keep the variable private to avoid needlessly preserving the symbol name. The intent of the patch is to prevent the linker from removing the symbol names of symbols in `__DATA` so that tools can collect information about those symbols. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61454/new/ https://reviews.llvm.org/D61454 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D61454: [CodeGen][ObjC] Remove the leading 'l_' from ObjC symbols and make private symbols in the __DATA segment internal.
compnerd added inline comments. Comment at: lib/CodeGen/CGObjCMac.cpp:3961 + // linkage so that the linker preserves the symbol name. + llvm::GlobalValue::LinkageTypes LT = + Section.empty() || Section.startswith("__DATA") Hmm, when would you have a metadata variable not in the `__DATA` segment? Comment at: lib/CodeGen/CGObjCMac.cpp:7266 + false, + CGM.getTriple().isOSBinFormatMachO() + ? llvm::GlobalValue::InternalLinkage Is there a reason to not make this and the other instances `Internal` irrespective of the object file format? Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61454/new/ https://reviews.llvm.org/D61454 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D61454: [CodeGen][ObjC] Remove the leading 'l_' from ObjC symbols and make private symbols in the __DATA segment internal.
ahatanak updated this revision to Diff 197918. ahatanak marked 2 inline comments as done. ahatanak added a comment. - Instead of passing a flag to `CreateMetadataVar` that indicates the section is in segment `__DATA`, just scan the section name string inside `CreateMetadataVar`. - Fix test case `ns-constant-strings.m`. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61454/new/ https://reviews.llvm.org/D61454 Files: lib/CodeGen/CGObjCMac.cpp test/CodeGenObjC/arc.m test/CodeGenObjC/boxing.m test/CodeGenObjC/exceptions-asm-attribute.m test/CodeGenObjC/externally-initialized-selectors.m test/CodeGenObjC/forward-protocol-metadata-symbols.m test/CodeGenObjC/instance-method-metadata.m test/CodeGenObjC/interface-layout-64.m test/CodeGenObjC/metadata-class-properties.m test/CodeGenObjC/metadata-symbols-32.m test/CodeGenObjC/metadata-symbols-64.m test/CodeGenObjC/metadata_symbols.m test/CodeGenObjC/mrc-weak.m test/CodeGenObjC/non-lazy-classes.m test/CodeGenObjC/private-extern-selector-reference.m test/CodeGenObjC/property-category-impl.m test/CodeGenObjC/property-list-in-class.m test/CodeGenObjC/property-list-in-extension.m test/CodeGenObjC/protocol-comdat.m test/CodeGenObjC/protocols.m test/CodeGenObjC/section-name.m test/CodeGenObjC/sections.m test/CodeGenObjCXX/externally-initialized-selectors.mm test/CodeGenObjCXX/mrc-weak.mm Index: test/CodeGenObjCXX/mrc-weak.mm === --- test/CodeGenObjCXX/mrc-weak.mm +++ test/CodeGenObjCXX/mrc-weak.mm @@ -7,7 +7,7 @@ @end // CHECK-MODERN: @OBJC_CLASS_NAME_{{.*}} = {{.*}} c"\01\00" -// CHECK-MODERN: @"\01l_OBJC_CLASS_RO_$_Foo" = {{.*}} { i32 772 +// CHECK-MODERN: @"_OBJC_CLASS_RO_$_Foo" = {{.*}} { i32 772 // 772 == 0x304 //^ HasMRCWeakIvars //^ HasCXXDestructorOnly Index: test/CodeGenObjCXX/externally-initialized-selectors.mm === --- test/CodeGenObjCXX/externally-initialized-selectors.mm +++ test/CodeGenObjCXX/externally-initialized-selectors.mm @@ -1,7 +1,8 @@ -// RUN: %clang_cc1 -fobjc-runtime=macosx-fragile-10.5 -o - -emit-llvm %s | FileCheck %s -// RUN: %clang_cc1 -o - -emit-llvm %s | FileCheck %s +// RUN: %clang_cc1 -fobjc-runtime=macosx-fragile-10.5 -o - -emit-llvm %s | FileCheck -check-prefix=FRAGILE %s +// RUN: %clang_cc1 -o - -emit-llvm %s | FileCheck -check-prefix=NONFRAGILE %s -// CHECK: @OBJC_SELECTOR_REFERENCES_ = private externally_initialized global +// NONFRAGILE: @OBJC_SELECTOR_REFERENCES_ = internal externally_initialized global +// FRAGILE: @OBJC_SELECTOR_REFERENCES_ = private externally_initialized global void test(id x) { [x doSomething]; Index: test/CodeGenObjC/sections.m === --- test/CodeGenObjC/sections.m +++ test/CodeGenObjC/sections.m @@ -37,9 +37,9 @@ // CHECK-COFF: @"OBJC_CLASSLIST_SUP_REFS_$_" = {{.*}}, section ".objc_superrefs$B" // CHECK-COFF: @OBJC_SELECTOR_REFERENCES_ = {{.*}}, section ".objc_selrefs$B" // CHECK-COFF: @"OBJC_CLASSLIST_REFERENCES_$_" = {{.*}}, section ".objc_classrefs$B" -// CHECK-COFF: @"\01l_objc_msgSend_fixup_class" = {{.*}}, section ".objc_msgrefs$B" +// CHECK-COFF: @_objc_msgSend_fixup_class = {{.*}}, section ".objc_msgrefs$B" // CHECK-COFF: @"_OBJC_LABEL_PROTOCOL_$_P" = {{.*}}, section ".objc_protolist$B" -// CHECK-COFF: @"\01l_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section ".objc_protorefs$B" +// CHECK-COFF: @"_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section ".objc_protorefs$B" // CHECK-COFF: @"OBJC_LABEL_CLASS_$" = {{.*}}, section ".objc_classlist$B" // CHECK-COFF: @"OBJC_LABEL_NONLAZY_CLASS_$" = {{.*}}, section ".objc_nlclslist$B" // CHECK-COFF: @"OBJC_LABEL_CATEGORY_$" = {{.*}}, section ".objc_catlist$B" @@ -49,9 +49,9 @@ // CHECK-ELF: @"OBJC_CLASSLIST_SUP_REFS_$_" = {{.*}}, section "objc_superrefs" // CHECK-ELF: @OBJC_SELECTOR_REFERENCES_ = {{.*}}, section "objc_selrefs" // CHECK-ELF: @"OBJC_CLASSLIST_REFERENCES_$_" = {{.*}}, section "objc_classrefs" -// CHECK-ELF: @"\01l_objc_msgSend_fixup_class" = {{.*}}, section "objc_msgrefs" +// CHECK-ELF: @_objc_msgSend_fixup_class = {{.*}}, section "objc_msgrefs" // CHECK-ELF: @"_OBJC_LABEL_PROTOCOL_$_P" = {{.*}}, section "objc_protolist" -// CHECK-ELF: @"\01l_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section "objc_protorefs" +// CHECK-ELF: @"_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section "objc_protorefs" // CHECK-ELF: @"OBJC_LABEL_CLASS_$" = {{.*}}, section "objc_classlist" // CHECK-ELF: @"OBJC_LABEL_NONLAZY_CLASS_$" = {{.*}}, section "objc_nlclslist" // CHECK-ELF: @"OBJC_LABEL_CATEGORY_$" = {{.*}}, section "objc_catlist" @@ -61,9 +61,9 @@ // CHECK-MACHO: @"OBJC_CLASSLIST_SUP_REFS_$_" = {{.*}}, section "__DATA,__objc_superrefs,regular,no_dead_strip" // CHECK-MACHO: @OBJC_SELECTOR_REFERENCES_ = {{.*}}, section
[PATCH] D61454: [CodeGen][ObjC] Remove the leading 'l_' from ObjC symbols and make private symbols in the __DATA segment internal.
rjmccall added inline comments. Comment at: lib/CodeGen/CGObjCMac.cpp:3961 + // linkage so that the linker preserves the symbol name. + llvm::GlobalValue::LinkageTypes LT = ExplicitDataSegment || Section.empty() + ? llvm::GlobalValue::InternalLinkage ahatanak wrote: > vsk wrote: > > Hm. I wonder whether it'd be less error-prone to simply define LT as > > 'Section.empty() || Section.startswith("__DATA")'. Is there an advantage to > > explicitly defining 'ExplicitDataSegment' in the caller? > I was just trying to avoid scanning the string, but probably doing so isn't > that expensive. Yeah, probably not. I'd love it if there was some better way to specify these sections that felt less Mach-O-specific and more semantic, but given what we're doing, I think it'd be cleaner to scan the section name. Or you could just pass the linkage down; I'm not sure DATA vs. OBJC is the only interesting division between things. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61454/new/ https://reviews.llvm.org/D61454 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D61454: [CodeGen][ObjC] Remove the leading 'l_' from ObjC symbols and make private symbols in the __DATA segment internal.
ahatanak marked an inline comment as done. ahatanak added inline comments. Comment at: lib/CodeGen/CGObjCMac.cpp:3961 + // linkage so that the linker preserves the symbol name. + llvm::GlobalValue::LinkageTypes LT = ExplicitDataSegment || Section.empty() + ? llvm::GlobalValue::InternalLinkage vsk wrote: > Hm. I wonder whether it'd be less error-prone to simply define LT as > 'Section.empty() || Section.startswith("__DATA")'. Is there an advantage to > explicitly defining 'ExplicitDataSegment' in the caller? I was just trying to avoid scanning the string, but probably doing so isn't that expensive. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61454/new/ https://reviews.llvm.org/D61454 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D61454: [CodeGen][ObjC] Remove the leading 'l_' from ObjC symbols and make private symbols in the __DATA segment internal.
vsk added inline comments. Comment at: lib/CodeGen/CGObjCMac.cpp:3961 + // linkage so that the linker preserves the symbol name. + llvm::GlobalValue::LinkageTypes LT = ExplicitDataSegment || Section.empty() + ? llvm::GlobalValue::InternalLinkage Hm. I wonder whether it'd be less error-prone to simply define LT as 'Section.empty() || Section.startswith("__DATA")'. Is there an advantage to explicitly defining 'ExplicitDataSegment' in the caller? Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61454/new/ https://reviews.llvm.org/D61454 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D61454: [CodeGen][ObjC] Remove the leading 'l_' from ObjC symbols and make private symbols in the __DATA segment internal.
ahatanak updated this revision to Diff 197877. ahatanak marked 6 inline comments as done. ahatanak edited the summary of this revision. ahatanak added a comment. Address review comments. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61454/new/ https://reviews.llvm.org/D61454 Files: lib/CodeGen/CGObjCMac.cpp test/CodeGenObjC/arc.m test/CodeGenObjC/boxing.m test/CodeGenObjC/exceptions-asm-attribute.m test/CodeGenObjC/externally-initialized-selectors.m test/CodeGenObjC/forward-protocol-metadata-symbols.m test/CodeGenObjC/instance-method-metadata.m test/CodeGenObjC/interface-layout-64.m test/CodeGenObjC/metadata-class-properties.m test/CodeGenObjC/metadata-symbols-32.m test/CodeGenObjC/metadata-symbols-64.m test/CodeGenObjC/metadata_symbols.m test/CodeGenObjC/mrc-weak.m test/CodeGenObjC/non-lazy-classes.m test/CodeGenObjC/ns-constant-strings.m test/CodeGenObjC/private-extern-selector-reference.m test/CodeGenObjC/property-category-impl.m test/CodeGenObjC/property-list-in-class.m test/CodeGenObjC/property-list-in-extension.m test/CodeGenObjC/protocol-comdat.m test/CodeGenObjC/protocols.m test/CodeGenObjC/section-name.m test/CodeGenObjC/sections.m test/CodeGenObjCXX/externally-initialized-selectors.mm test/CodeGenObjCXX/mrc-weak.mm Index: test/CodeGenObjCXX/mrc-weak.mm === --- test/CodeGenObjCXX/mrc-weak.mm +++ test/CodeGenObjCXX/mrc-weak.mm @@ -7,7 +7,7 @@ @end // CHECK-MODERN: @OBJC_CLASS_NAME_{{.*}} = {{.*}} c"\01\00" -// CHECK-MODERN: @"\01l_OBJC_CLASS_RO_$_Foo" = {{.*}} { i32 772 +// CHECK-MODERN: @"_OBJC_CLASS_RO_$_Foo" = {{.*}} { i32 772 // 772 == 0x304 //^ HasMRCWeakIvars //^ HasCXXDestructorOnly Index: test/CodeGenObjCXX/externally-initialized-selectors.mm === --- test/CodeGenObjCXX/externally-initialized-selectors.mm +++ test/CodeGenObjCXX/externally-initialized-selectors.mm @@ -1,7 +1,8 @@ -// RUN: %clang_cc1 -fobjc-runtime=macosx-fragile-10.5 -o - -emit-llvm %s | FileCheck %s -// RUN: %clang_cc1 -o - -emit-llvm %s | FileCheck %s +// RUN: %clang_cc1 -fobjc-runtime=macosx-fragile-10.5 -o - -emit-llvm %s | FileCheck -check-prefix=FRAGILE %s +// RUN: %clang_cc1 -o - -emit-llvm %s | FileCheck -check-prefix=NONFRAGILE %s -// CHECK: @OBJC_SELECTOR_REFERENCES_ = private externally_initialized global +// NONFRAGILE: @OBJC_SELECTOR_REFERENCES_ = internal externally_initialized global +// FRAGILE: @OBJC_SELECTOR_REFERENCES_ = private externally_initialized global void test(id x) { [x doSomething]; Index: test/CodeGenObjC/sections.m === --- test/CodeGenObjC/sections.m +++ test/CodeGenObjC/sections.m @@ -37,9 +37,9 @@ // CHECK-COFF: @"OBJC_CLASSLIST_SUP_REFS_$_" = {{.*}}, section ".objc_superrefs$B" // CHECK-COFF: @OBJC_SELECTOR_REFERENCES_ = {{.*}}, section ".objc_selrefs$B" // CHECK-COFF: @"OBJC_CLASSLIST_REFERENCES_$_" = {{.*}}, section ".objc_classrefs$B" -// CHECK-COFF: @"\01l_objc_msgSend_fixup_class" = {{.*}}, section ".objc_msgrefs$B" +// CHECK-COFF: @_objc_msgSend_fixup_class = {{.*}}, section ".objc_msgrefs$B" // CHECK-COFF: @"_OBJC_LABEL_PROTOCOL_$_P" = {{.*}}, section ".objc_protolist$B" -// CHECK-COFF: @"\01l_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section ".objc_protorefs$B" +// CHECK-COFF: @"_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section ".objc_protorefs$B" // CHECK-COFF: @"OBJC_LABEL_CLASS_$" = {{.*}}, section ".objc_classlist$B" // CHECK-COFF: @"OBJC_LABEL_NONLAZY_CLASS_$" = {{.*}}, section ".objc_nlclslist$B" // CHECK-COFF: @"OBJC_LABEL_CATEGORY_$" = {{.*}}, section ".objc_catlist$B" @@ -49,9 +49,9 @@ // CHECK-ELF: @"OBJC_CLASSLIST_SUP_REFS_$_" = {{.*}}, section "objc_superrefs" // CHECK-ELF: @OBJC_SELECTOR_REFERENCES_ = {{.*}}, section "objc_selrefs" // CHECK-ELF: @"OBJC_CLASSLIST_REFERENCES_$_" = {{.*}}, section "objc_classrefs" -// CHECK-ELF: @"\01l_objc_msgSend_fixup_class" = {{.*}}, section "objc_msgrefs" +// CHECK-ELF: @_objc_msgSend_fixup_class = {{.*}}, section "objc_msgrefs" // CHECK-ELF: @"_OBJC_LABEL_PROTOCOL_$_P" = {{.*}}, section "objc_protolist" -// CHECK-ELF: @"\01l_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section "objc_protorefs" +// CHECK-ELF: @"_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section "objc_protorefs" // CHECK-ELF: @"OBJC_LABEL_CLASS_$" = {{.*}}, section "objc_classlist" // CHECK-ELF: @"OBJC_LABEL_NONLAZY_CLASS_$" = {{.*}}, section "objc_nlclslist" // CHECK-ELF: @"OBJC_LABEL_CATEGORY_$" = {{.*}}, section "objc_catlist" @@ -61,9 +61,9 @@ // CHECK-MACHO: @"OBJC_CLASSLIST_SUP_REFS_$_" = {{.*}}, section "__DATA,__objc_superrefs,regular,no_dead_strip" // CHECK-MACHO: @OBJC_SELECTOR_REFERENCES_ = {{.*}}, section "__DATA,__objc_selrefs,literal_pointers,no_dead_strip" // CHECK-MACHO: @"OBJC_CLASSLIST_REFERENCES_$_" = {{.*}}, section
[PATCH] D61454: [CodeGen][ObjC] Remove the leading 'l_' from ObjC symbols and make private symbols in the __DATA segment internal.
ahatanak added inline comments. Comment at: lib/CodeGen/CGObjCMac.cpp:1978 +? llvm::GlobalVariable::InternalLinkage +: llvm::GlobalValue::PrivateLinkage); // FIXME. Fix section. rjmccall wrote: > 1. Why are these using different classes to name these enumerators? > 2. Why are we promoting to internal linkage in some cases? That seems to be > an additional semantic change not discussed in the commit message, and it > should probably also get a good inline comment. This is a mistake. It should have been `llvm::GlobalValue::InternalLinkage`. Comment at: lib/CodeGen/CGObjCMac.cpp:1983 + else +GV->setSection("__OBJC,__cstring_object,regular,no_dead_strip"); + vsk wrote: > Are constant NSStrings within the shared cache ever dirtied? I was under the > impression that they couldn't be, so I'm not sure there's an advantage to > making them internal. I was making all symbols in `__DATA` internal, but you are right, there isn't any advantage to making constant NSStrings internal for the purpose of this patch. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61454/new/ https://reviews.llvm.org/D61454 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D61454: [CodeGen][ObjC] Remove the leading 'l_' from ObjC symbols and make private symbols in the __DATA segment internal.
vsk added a comment. Thanks for working on this! Comment at: lib/CodeGen/CGObjCMac.cpp:1983 + else +GV->setSection("__OBJC,__cstring_object,regular,no_dead_strip"); + Are constant NSStrings within the shared cache ever dirtied? I was under the impression that they couldn't be, so I'm not sure there's an advantage to making them internal. Comment at: lib/CodeGen/CGObjCMac.cpp:3113 + return CreateMetadataVar("_OBJC_PROTOCOLEXT_" + PD->getName(), values, + StringRef(), CGM.getPointerAlign(), true, false); } Could you use '/*ExplicitDataSegment=*/false' (or similar) for clarity here and elsewhere? Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61454/new/ https://reviews.llvm.org/D61454 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D61454: [CodeGen][ObjC] Remove the leading 'l_' from ObjC symbols and make private symbols in the __DATA segment internal.
rjmccall added inline comments. Comment at: lib/CodeGen/CGObjCMac.cpp:1024 + bool AddToUsed, + bool ExplicitDataSegment); llvm::GlobalVariable *CreateMetadataVar(Twine Name, Please document what this parameter means. Comment at: lib/CodeGen/CGObjCMac.cpp:1978 +? llvm::GlobalVariable::InternalLinkage +: llvm::GlobalValue::PrivateLinkage); // FIXME. Fix section. 1. Why are these using different classes to name these enumerators? 2. Why are we promoting to internal linkage in some cases? That seems to be an additional semantic change not discussed in the commit message, and it should probably also get a good inline comment. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61454/new/ https://reviews.llvm.org/D61454 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D61454: [CodeGen][ObjC] Remove the leading 'l_' from ObjC symbols and make private symbols in the __DATA segment internal.
ahatanak created this revision. ahatanak added reviewers: rjmccall, vsk. ahatanak added a project: clang. Herald added subscribers: dexonsmith, jkorous. This change is a continuation of https://reviews.llvm.org/D59234 and makes the symbols within __DATA visible. rdar://problem/48887111 Repository: rC Clang https://reviews.llvm.org/D61454 Files: lib/CodeGen/CGObjCMac.cpp test/CodeGenObjC/arc.m test/CodeGenObjC/boxing.m test/CodeGenObjC/exceptions-asm-attribute.m test/CodeGenObjC/externally-initialized-selectors.m test/CodeGenObjC/forward-protocol-metadata-symbols.m test/CodeGenObjC/instance-method-metadata.m test/CodeGenObjC/interface-layout-64.m test/CodeGenObjC/metadata-class-properties.m test/CodeGenObjC/metadata-symbols-32.m test/CodeGenObjC/metadata-symbols-64.m test/CodeGenObjC/metadata_symbols.m test/CodeGenObjC/mrc-weak.m test/CodeGenObjC/non-lazy-classes.m test/CodeGenObjC/ns-constant-strings.m test/CodeGenObjC/private-extern-selector-reference.m test/CodeGenObjC/property-category-impl.m test/CodeGenObjC/property-list-in-class.m test/CodeGenObjC/property-list-in-extension.m test/CodeGenObjC/protocol-comdat.m test/CodeGenObjC/protocols.m test/CodeGenObjC/section-name.m test/CodeGenObjC/sections.m test/CodeGenObjCXX/externally-initialized-selectors.mm test/CodeGenObjCXX/mrc-weak.mm Index: test/CodeGenObjCXX/mrc-weak.mm === --- test/CodeGenObjCXX/mrc-weak.mm +++ test/CodeGenObjCXX/mrc-weak.mm @@ -7,7 +7,7 @@ @end // CHECK-MODERN: @OBJC_CLASS_NAME_{{.*}} = {{.*}} c"\01\00" -// CHECK-MODERN: @"\01l_OBJC_CLASS_RO_$_Foo" = {{.*}} { i32 772 +// CHECK-MODERN: @"_OBJC_CLASS_RO_$_Foo" = {{.*}} { i32 772 // 772 == 0x304 //^ HasMRCWeakIvars //^ HasCXXDestructorOnly Index: test/CodeGenObjCXX/externally-initialized-selectors.mm === --- test/CodeGenObjCXX/externally-initialized-selectors.mm +++ test/CodeGenObjCXX/externally-initialized-selectors.mm @@ -1,7 +1,8 @@ -// RUN: %clang_cc1 -fobjc-runtime=macosx-fragile-10.5 -o - -emit-llvm %s | FileCheck %s -// RUN: %clang_cc1 -o - -emit-llvm %s | FileCheck %s +// RUN: %clang_cc1 -fobjc-runtime=macosx-fragile-10.5 -o - -emit-llvm %s | FileCheck -check-prefix=FRAGILE %s +// RUN: %clang_cc1 -o - -emit-llvm %s | FileCheck -check-prefix=NONFRAGILE %s -// CHECK: @OBJC_SELECTOR_REFERENCES_ = private externally_initialized global +// NONFRAGILE: @OBJC_SELECTOR_REFERENCES_ = internal externally_initialized global +// FRAGILE: @OBJC_SELECTOR_REFERENCES_ = private externally_initialized global void test(id x) { [x doSomething]; Index: test/CodeGenObjC/sections.m === --- test/CodeGenObjC/sections.m +++ test/CodeGenObjC/sections.m @@ -37,9 +37,9 @@ // CHECK-COFF: @"OBJC_CLASSLIST_SUP_REFS_$_" = {{.*}}, section ".objc_superrefs$B" // CHECK-COFF: @OBJC_SELECTOR_REFERENCES_ = {{.*}}, section ".objc_selrefs$B" // CHECK-COFF: @"OBJC_CLASSLIST_REFERENCES_$_" = {{.*}}, section ".objc_classrefs$B" -// CHECK-COFF: @"\01l_objc_msgSend_fixup_class" = {{.*}}, section ".objc_msgrefs$B" +// CHECK-COFF: @_objc_msgSend_fixup_class = {{.*}}, section ".objc_msgrefs$B" // CHECK-COFF: @"_OBJC_LABEL_PROTOCOL_$_P" = {{.*}}, section ".objc_protolist$B" -// CHECK-COFF: @"\01l_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section ".objc_protorefs$B" +// CHECK-COFF: @"_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section ".objc_protorefs$B" // CHECK-COFF: @"OBJC_LABEL_CLASS_$" = {{.*}}, section ".objc_classlist$B" // CHECK-COFF: @"OBJC_LABEL_NONLAZY_CLASS_$" = {{.*}}, section ".objc_nlclslist$B" // CHECK-COFF: @"OBJC_LABEL_CATEGORY_$" = {{.*}}, section ".objc_catlist$B" @@ -49,9 +49,9 @@ // CHECK-ELF: @"OBJC_CLASSLIST_SUP_REFS_$_" = {{.*}}, section "objc_superrefs" // CHECK-ELF: @OBJC_SELECTOR_REFERENCES_ = {{.*}}, section "objc_selrefs" // CHECK-ELF: @"OBJC_CLASSLIST_REFERENCES_$_" = {{.*}}, section "objc_classrefs" -// CHECK-ELF: @"\01l_objc_msgSend_fixup_class" = {{.*}}, section "objc_msgrefs" +// CHECK-ELF: @_objc_msgSend_fixup_class = {{.*}}, section "objc_msgrefs" // CHECK-ELF: @"_OBJC_LABEL_PROTOCOL_$_P" = {{.*}}, section "objc_protolist" -// CHECK-ELF: @"\01l_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section "objc_protorefs" +// CHECK-ELF: @"_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section "objc_protorefs" // CHECK-ELF: @"OBJC_LABEL_CLASS_$" = {{.*}}, section "objc_classlist" // CHECK-ELF: @"OBJC_LABEL_NONLAZY_CLASS_$" = {{.*}}, section "objc_nlclslist" // CHECK-ELF: @"OBJC_LABEL_CATEGORY_$" = {{.*}}, section "objc_catlist" @@ -61,9 +61,9 @@ // CHECK-MACHO: @"OBJC_CLASSLIST_SUP_REFS_$_" = {{.*}}, section "__DATA,__objc_superrefs,regular,no_dead_strip" // CHECK-MACHO: @OBJC_SELECTOR_REFERENCES_ = {{.*}}, section "__DATA,__objc_selrefs,literal_pointers,no_dead_strip" // CHECK-MACHO: