[Bug target/126382] [16/17 regression] Incorrect compiler generated code resulting in seg fault - hoisted tls() in x86_cse caused register clobbering

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Jul 29 21:05:49 GMT 2026


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

--- Comment #10 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-16 branch has been updated by H.J. Lu <hjl@gcc.gnu.org>:

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

commit r16-9436-gd00d5b7eddea4217ac6d85cf51e4604b9a187cc5
Author: Reshma Roy <Reshma.Roy@amd.com>
Date:   Tue Jul 28 16:55:24 2026 +0530

    x86_cse: Check if DRAP is live with DF_LR_IN.

    The DRAP register has no reaching definition on function entry, so it
    never shows up in DF_LIVE_IN.  When collecting the live caller-saved
    registers, additionally set DRAP's bit whenever it is live-in per
    DF_LR_IN, so the hoisted TLS call is kept after the DRAP save.

    PR target/126382

    gcc/ChangeLog:

            * config/i386/i386-features.cc (ix86_emit_tls_call): Additional
            check to see if DRAP register is live in basic block with DF_LR_IN.

    gcc/testsuite/ChangeLog:

            * gcc.target/i386/pr126382.c: New test.

    (cherry picked from commit af8dbc9ccf8209007e38a923c3c158e9e8f4396d)


More information about the Gcc-bugs mailing list