https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116839

--- Comment #1 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by H.J. Lu <h...@gcc.gnu.org>:

https://gcc.gnu.org/g:c79cc30862d7255ca15884aa956d1ccfa279d86a

commit r15-3875-gc79cc30862d7255ca15884aa956d1ccfa279d86a
Author: H.J. Lu <hjl.to...@gmail.com>
Date:   Wed Sep 25 16:39:04 2024 +0800

    x86: Don't use address override with segment regsiter

    Address override only applies to the (reg32) part in the thread address
    fs:(reg32).  Don't rewrite thread address like

    (set (reg:CCZ 17 flags)
        (compare:CCZ (reg:SI 98 [ __gmpfr_emax.0_1 ])
            (mem/c:SI (plus:SI (plus:SI (unspec:SI [
                                (const_int 0 [0])
                            ] UNSPEC_TP)
                        (reg:SI 107))
                    (const:SI (unspec:SI [
                                (symbol_ref:SI ("previous_emax") [flags 0x1a]
<var_decl 0x7fffe9a11cf0 previous_emax>)
                            ] UNSPEC_DTPOFF))) [1 previous_emax+0 S4 A32])))

    if address override is used to avoid the invalid memory operand like

            cmpl    %fs:previous_emax@dtpoff(%eax), %r12d

    gcc/

            PR target/116839
            * config/i386/i386.cc (ix86_rewrite_tls_address_1): Make it
            static.  Return if TLS address is thread register plus an integer
            register.

    gcc/testsuite/

            PR target/116839
            * gcc.target/i386/pr116839.c: New file.

    Signed-off-by: H.J. Lu <hjl.to...@gmail.com>

Reply via email to