On Mon, Jan 29, 2024 at 8:34 AM Jakub Jelinek <ja...@redhat.com> wrote: > > On Mon, Jan 29, 2024 at 08:23:21AM -0800, H.J. Lu wrote: > > > baz: > > > movq .LC0(%rip), %xmm0 > > > ret > > > > I don't think this is valid. We can't reference a non-public > > symbol outside of a COMDAT group. It is OK to reference > > foo or foo + 1, but not .LC0. > > But that is exactly what your patch does, e.g. on the first testcase: > --- pr113617-1a.s 2024-01-29 11:29:55.831512974 +0100 > +++ pr113617-1a.s 2024-01-29 11:30:04.335394116 +0100 > @@ -51,28 +-51,28 @@ > .section > .text._ZN3vtk6detail3smp15vtkSMPToolsImplILi1EE3ForINS1_27vtkSMPTools_FunctorInternalIN12_GLOBAL__N_19CountUsesIxEELb0EEEEEvxxxRT_,"axG",@progbits,_ZN26vtkStaticCellLinksTemplateIxE18ThreadedBuildLinksExxP12vtkCellArray,comdat > .align 2 > .p2align 4 > .type > _ZN3vtk6detail3smp15vtkSMPToolsImplILi1EE3ForINS1_27vtkSMPTools_FunctorInternalIN12_GLOBAL__N_19CountUsesIxEELb0EEEEEvxxxRT_, > @function > > _ZN3vtk6detail3smp15vtkSMPToolsImplILi1EE3ForINS1_27vtkSMPTools_FunctorInternalIN12_GLOBAL__N_19CountUsesIxEELb0EEEEEvxxxRT_: > pushq %r15 > leaq > _ZN4blah17_Function_handlerIFvvENS_5_BindIFPFvPvxxxEPN3vtk6detail3smp27vtkSMPTools_FunctorInternalIN12_GLOBAL__N_19CountUsesIxEELb0EEExxxEEEE9_M_invokeERKNS_9_Any_dataE(%rip), > %rax > leaq > _ZN3vtk6detail3smp23ExecuteFunctorSTDThreadINS1_27vtkSMPTools_FunctorInternalIN12_GLOBAL__N_19CountUsesIxEELb0EEEEEvPvxxx(%rip), > %r15 > pushq %r14 > movq %rax, %xmm1 > pushq %r13 > pushq %r12 > movq %rdx, %r12 > pushq %rbp > movq %r8, %rbp > pushq %rbx > movq %rcx, %rbx > subq $40, %rsp > movl For_threadNumber(%rip), %esi > movq .LC0(%rip), %xmm0 > leaq 31(%rsp), %r13 > punpcklqdq %xmm1, %xmm0 > movq %r13, %rdi > movaps %xmm0, (%rsp) > call _ZN3vtk6detail3smp16vtkSMPThreadPoolC1Ei@PLT > movq (%rsp), %r14 > .p2align 4,,10 > .p2align 3 > @@ -191,9 +191,9 @@ vtkConstrainedSmoothingFilterRequestData > .size For_threadNumber, 4 > For_threadNumber: > .zero 4 > - .section .data.rel.ro.local,"aw" > + .section > .data.rel.ro.local._ZN4blah17_Function_handlerIFvvENS_5_BindIFPFvPvxxxEPN3vtk6detail3smp27vtkSMPTools_FunctorInternalIN12_GLOBAL__N_19CountUsesIxEELb0EEExxxEEEE10_M_managerERNS_9_Any_dataERKSI_NS_18_Manager_operationE,"awG",@progbits,_ZN26vtkStaticCellLinksTemplateIxE18ThreadedBuildLinksExxP12vtkCellArray,comdat > .align 8 > .LC0: > .quad > _ZN4blah17_Function_handlerIFvvENS_5_BindIFPFvPvxxxEPN3vtk6detail3smp27vtkSMPTools_FunctorInternalIN12_GLOBAL__N_19CountUsesIxEELb0EEExxxEEEE10_M_managerERNS_9_Any_dataERKSI_NS_18_Manager_operationE > - .ident "GCC: (GNU) 14.0.1 20240127 (experimental)" > + .ident "GCC: (GNU) 14.0.1 20240129 (experimental)" > .section .note.GNU-stack,"",@progbits > > Jakub >
In this case, these are internal to the same comdat group: .section .text._ZN3vtk6detail3smp15vtkSMPToolsImplILi1EE3ForINS1_27vtkSMPTools_FunctorInternalIN12_GLOBAL__N_19CountUsesIxEELb0EEEEEvxxxRT_,"axG",@progbits,_ZN26vtkStaticCellLinksTemplateIxE18ThreadedBuildLinksExxP12vtkCellArray,comdat .align 2 .p2align 4 .type _ZN3vtk6detail3smp15vtkSMPToolsImplILi1EE3ForINS1_27vtkSMPTools_FunctorInternalIN12_GLOBAL__N_19CountUsesIxEELb0EEEEEvxxxRT_, @function _ZN3vtk6detail3smp15vtkSMPToolsImplILi1EE3ForINS1_27vtkSMPTools_FunctorInternalIN12_GLOBAL__N_19CountUsesIxEELb0EEEEEvxxxRT_: .LFB27: .cfi_startproc ... movq .LC0(%rip), %xmm0 ... .section .text._ZN4blah17_Function_handlerIFvvENS_5_BindIFPFvPvxxxEPN3vtk6detail3smp27vtkSMPTools_FunctorInternalIN12_GLOBAL__N_19CountUsesIxEELb0EEExxxEEEE10_M_managerERNS_9_Any_dataERKSI_NS_18_Manager_operationE,"axG",@progbits,_ZN26vtkStaticCellLinksTemplateIxE18ThreadedBuildLinksExxP12vtkCellArray,comdat .p2align 4 .type _ZN4blah17_Function_handlerIFvvENS_5_BindIFPFvPvxxxEPN3vtk6detail3smp27vtkSMPTools_FunctorInternalIN12_GLOBAL__N_19CountUsesIxEELb0EEExxxEEEE10_M_managerERNS_9_Any_dataERKSI_NS_18_Manager_operationE, @function _ZN4blah17_Function_handlerIFvvENS_5_BindIFPFvPvxxxEPN3vtk6detail3smp27vtkSMPTools_FunctorInternalIN12_GLOBAL__N_19CountUsesIxEELb0EEExxxEEEE10_M_managerERNS_9_Any_dataERKSI_NS_18_Manager_operationE: .LFB34: .cfi_startproc xorl %eax, %eax ret .cfi_endproc ... .section .data.rel.ro.local._ZN4blah17_Function_handlerIFvvENS_5_BindIFPFvPvxxxEPN3vtk6detail3smp27vtkSMPTools_FunctorInternalIN12_GLOBAL__N_19CountUsesIxEELb0EEExxxEEEE10_M_managerERNS_9_Any_dataERKSI_NS_18_Manager_operationE,"awG",@progbits,_ZN26vtkStaticCellLinksTemplateIxE18ThreadedBuildLinksExxP12vtkCellArray,comdat .align 8 .LC0: .quad _ZN4blah17_Function_handlerIFvvENS_5_BindIFPFvPvxxxEPN3vtk6detail3smp27vtkSMPTools_FunctorInternalIN12_GLOBAL__N_19CountUsesIxEELb0EEExxxEEEE10_M_managerERNS_9_Any_dataERKSI_NS_18_Manager_operationE -- H.J.