https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121572
--- Comment #3 from Sergei Trofimovich <slyfox at gcc dot gnu.org> --- I'm not sure `-mtls-dialect=gnu2` is completely exempt from the bug. `$gcc -S a.c -fPIC -o a.S -mtls-dialect=gnu2` shows this snippet: ``` bug: .LFB2: .cfi_startproc subq $24, %rsp .cfi_def_cfa_offset 32 movl $-1, %edi call val testl %eax, %eax je .L14 leaq tv_cache@TLSDESC(%rip), %rax call *tv_cache@TLSCALL(%rax) jg .L16 ; <----------- is EGLAGS guaranteed to survive `call *tv_cache@TLSCALL(%rax)`? movl %fs:(%rax), %edi addq $24, %rsp .cfi_remember_state .cfi_def_cfa_offset 8 jmp use_cache .p2align 4,,10 .p2align 3 .L16: .cfi_restore_state movl $2, %edi movq %rax, 8(%rsp) call val movq 8(%rsp), %rdx testl %eax, %eax je .L14 movl %fs:(%rdx), %edi call use_cache .L14: ud2 ``` Here `testl %eax, %eax; ... ; jg .L16` is interrupted by `call *tv_cache@TLSCALL(%rax)`. Does it guarantee to keep EFLAGS unmodified?