https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109326
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|UNCONFIRMED |WAITING Last reconfirmed| |2023-03-29 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- init_olock_op_element_struct asm output looks fine to me: movzwl .LC0(%rip), %eax movq $0, (%rdi) movq $0, 8(%rdi) movl $0, 16(%rdi) movw %ax, 20(%rdi) LC0 is: .LC0: .byte 6 .byte 10 olock_fsm_event is fine too as it is just duplicating those basic blocks (the calls). init_olock_op_struct looks fine really: movq %fs:0, %rax pxor %xmm0, %xmm0 movups %xmm0, (%rdi) addq $olock_tparams@tpoff, %rax In Intel asm syntax: mov rax, QWORD PTR fs:0 pxor xmm0, xmm0 movups XMMWORD PTR [rdi], xmm0 add rax, OFFSET FLAT:olock_tparams@tpoff it is basically moving the TLS pointer to rax and then adding the offset for the variable. I don't understand what exactly you are complaining about really.