https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97848
--- Comment #1 from Avi Kivity <a...@cloudius-systems.com> --- Still bad on trunk. Clang gets this right: foo_good(): # @foo_good() movq x@GOTTPOFF(%rip), %rax movl %fs:(%rax), %eax retq set_foo(int): # @set_foo(int) movq x@GOTTPOFF(%rip), %rax movl %edi, %fs:(%rax) retq