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

--- Comment #3 from CVS 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:1a2b60b581c373e4ebcee9ee37c0ab2866f98950

commit r10-6090-g1a2b60b581c373e4ebcee9ee37c0ab2866f98950
Author: H.J. Lu <hjl.to...@gmail.com>
Date:   Mon Jan 20 05:02:14 2020 -0800

    x32: Add x32 support to -mtls-dialect=gnu2

    To add x32 support to -mtls-dialect=gnu2, we need to replace DI with
    P in GNU2 TLS patterns.  Since DEST set by tls_dynamic_gnu2_64 is in
    ptr_mode, PLUS in GNU2 TLS address computation must be done in ptr_mode
    to support -maddress-mode=long.  Also replace the "{q}" suffix on lea
    with "%z0" to support both 32-bit and 64-bit destination register.

    Tested on Linux/x86-64.

    gcc/

        PR target/93319
        * config/i386/i386.c (legitimize_tls_address): Pass Pmode to
        gen_tls_dynamic_gnu2_64.  Compute GNU2 TLS address in ptr_mode.
        * config/i386/i386.md (tls_dynamic_gnu2_64): Renamed to ...
        (@tls_dynamic_gnu2_64_<mode>): This.  Replace DI with P.
        (*tls_dynamic_gnu2_lea_64): Renamed to ...
        (*tls_dynamic_gnu2_lea_64_<mode>): This.  Replace DI with P.
        Remove the {q} suffix from lea.
        (*tls_dynamic_gnu2_call_64): Renamed to ...
        (*tls_dynamic_gnu2_call_64_<mode>): This.  Replace DI with P.
        (*tls_dynamic_gnu2_combine_64): Renamed to ...
        (*tls_dynamic_gnu2_combine_64_<mode>): This.  Replace DI with P.
        Pass Pmode to gen_tls_dynamic_gnu2_64.

    gcc/testsuite/

        PR target/93319
        * gcc.target/i386/pr93319-1a.c: New test.
        * gcc.target/i386/pr93319-1b.c: Likewise.
        * gcc.target/i386/pr93319-1c.c: Likewise.
        * gcc.target/i386/pr93319-1d.c: Likewise.

Reply via email to