]> git.ipfire.org Git - thirdparty/gcc.git/commit
Don't allow mask/sse/mmx mov in TLS code sequences.
authorliuhongt <hongtao.liu@intel.com>
Wed, 17 Nov 2021 07:48:37 +0000 (15:48 +0800)
committerliuhongt <hongtao.liu@intel.com>
Mon, 22 Nov 2021 03:24:11 +0000 (11:24 +0800)
commitb5844cb0bc8c7d9be2ff1ecded249cad82b9b71c
treec198cb62c5ac097569b97a3ce23cd727eba4a068
parent2b5b8610e985e23a0c2e0272339ab074a750e240
Don't allow mask/sse/mmx mov in TLS code sequences.

As change in assembler, refer to [1], this patch disallow mask/sse/mmx
mov in TLS code sequences which require integer MOV instructions.

[1] https://sourceware.org/git/?p=binutils-gdb.git;a=patch;h=d7e3e627027fcf37d63e284144fe27ff4eba36b5

gcc/ChangeLog:

PR target/103275
* config/i386/constraints.md (Bk): New
define_memory_constraint.
* config/i386/i386-protos.h (ix86_gpr_tls_address_pattern_p):
Declare.
* config/i386/i386.c (ix86_gpr_tls_address_pattern_p): New
function.
* config/i386/i386.md (*movsi_internal): Don't allow
mask/sse/mmx move in TLS code sequences.
(*movdi_internal): Ditto.

gcc/testsuite/ChangeLog:

* gcc.target/i386/pr103275.c: New test.
gcc/config/i386/constraints.md
gcc/config/i386/i386-protos.h
gcc/config/i386/i386.c
gcc/config/i386/i386.md
gcc/testsuite/gcc.target/i386/pr103275.c [new file with mode: 0644]