https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121694
--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> --- TLS64_COMBINE has the same issue: [hjl@gnu-zen4-1 pr121668]$ cat y.c extern void func1 (long *); extern int func2 (void); extern void func3 (void); static __thread long foo; static __thread long bar; long func (void) { func1 (&foo); func1 (&bar); if (func2 ()) func3 (); return foo + bar; } [hjl@gnu-zen4-1 pr121668]$ /export/build/gnu/tools-build/gcc-debug/build-x86_64-linux/gcc/xgcc -B/export/build/gnu/tools-build/gcc-debug/build-x86_64-linux/gcc/ -Og -fPIC -S y.c -mtls-dialect=gnu2 [hjl@gnu-zen4-1 pr121668]$ cat y.s .file "y.c" .text .globl func .type func, @function func: .LFB0: .cfi_startproc pushq %rbx .cfi_def_cfa_offset 16 .cfi_offset 3, -16 leaq _TLS_MODULE_BASE_@TLSDESC(%rip), %rax call *_TLS_MODULE_BASE_@TLSCALL(%rax) movq %rax, %rbx leaq foo@dtpoff(%rax), %rdi addq %fs:0, %rdi call func1@PLT movq %fs:0, %rax leaq bar@dtpoff(%rbx,%rax), %rdi call func1@PLT call func2@PLT testl %eax, %eax jne .L4 .L2: leaq _TLS_MODULE_BASE_@TLSDESC(%rip), %rax call *_TLS_MODULE_BASE_@TLSCALL(%rax) movq %fs:bar@dtpoff(%rax), %rdx addq %fs:foo@dtpoff(%rax), %rdx movq %rdx, %rax popq %rbx .cfi_remember_state .cfi_def_cfa_offset 8 ret .L4: .cfi_restore_state call func3@PLT jmp .L2 .cfi_endproc .LFE0: .size func, .-func .section .tbss,"awT",@nobits .align 8 .type bar, @object .size bar, 8 bar: .zero 8 .align 8 .type foo, @object .size foo, 8 foo: .zero 8 .ident "GCC: (GNU) 16.0.0 20250827 (experimental)" .section .note.GNU-stack,"",@progbits [hjl@gnu-zen4-1 pr121668]$