m68k: handle TLS access with offset
authorAndreas Schwab <schwab@linux-m68k.org>
Sun, 17 Jul 2022 21:35:05 +0000 (23:35 +0200)
committerAndreas Schwab <schwab@linux-m68k.org>
Sun, 26 Mar 2023 20:35:16 +0000 (22:35 +0200)
commit55bc61a75a68d1a8d1e4df170b4beef1020f1e55
tree8b4e7d3aaae036339edc8cb961a04f79f752ad1f
parent07fc3491260e6b5d261433c977a4e069f5ab40c1
m68k: handle TLS access with offset

This reinstates FINAL_PRESCAN_INSN, and the calls in handle_move_double,
so that access to TLS variables with offset are properly handled.

gcc:
PR target/106282
* config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
* config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
(handle_move_double): Call it before handle_movsi.
* config/m68k/m68k-protos.h: Declare it.

gcc/testsuite:
PR target/106282
* gcc.target/m68k/tls-gd-off.c: New.
* gcc.target/m68k/tls-ie-off.c: New.
* gcc.target/m68k/tls-ld-off.c: New.
* gcc.target/m68k/tls-ld-xtls-off.c: New.
* gcc.target/m68k/tls-le-off.c: New.
* gcc.target/m68k/tls-le-xtls-off.c: New.
* gcc.target/m68k/tls-ld.c: Make pattern less strict.
* gcc.target/m68k/tls-le.c: Likewise.
gcc/config/m68k/m68k-protos.h
gcc/config/m68k/m68k.cc
gcc/config/m68k/m68k.h
gcc/testsuite/gcc.target/m68k/tls-gd-off.c [new file with mode: 0644]
gcc/testsuite/gcc.target/m68k/tls-ie-off.c [new file with mode: 0644]
gcc/testsuite/gcc.target/m68k/tls-ld-off.c [new file with mode: 0644]
gcc/testsuite/gcc.target/m68k/tls-ld-xtls-off.c [new file with mode: 0644]
gcc/testsuite/gcc.target/m68k/tls-ld.c
gcc/testsuite/gcc.target/m68k/tls-le-off.c [new file with mode: 0644]
gcc/testsuite/gcc.target/m68k/tls-le-xtls-off.c [new file with mode: 0644]
gcc/testsuite/gcc.target/m68k/tls-le.c