diff options
author | Julian Waters <tanksherman27@gmail.com> | 2025-05-02 09:59:13 +0000 |
---|---|---|
committer | Jonathan Yong <10walls@gmail.com> | 2025-05-06 08:08:41 +0000 |
commit | 0aea633e146b75016eb0cf1c0bf67050d32bf8b6 (patch) | |
tree | 619b416198b175ff1a472d3c0a661101afd89cb4 /libjava/gnu/java/awt/java2d/ScanlineConverter.h | |
parent | c3979346f963adfdc6c860a43103a0768863cbcf (diff) | |
download | gcc-0aea633e146b75016eb0cf1c0bf67050d32bf8b6.zip gcc-0aea633e146b75016eb0cf1c0bf67050d32bf8b6.tar.gz gcc-0aea633e146b75016eb0cf1c0bf67050d32bf8b6.tar.bz2 |
Implement Windows TLS
This patch implements native Thread Local Storage access on Windows, as motivated by
PR80881. Currently, Thread Local Storage accesses on Windows relies on emulation, which
is detrimental to performance in certain applications, notably the Python Interpreter
and the gcc port of the Java Virtual Machine. This patch was heavily inspired by Daniel
Green's original work on native Windows Thread Local Storage from over a decade ago, which
can be found at https://github.com/venix1/MinGW-GDC/blob/master/patches/mingw-tls-gcc-4.8.patch
as a reference.
Co-authored-by: Eric Botcazou <botcazou@adacore.com>
Co-authored-by: Uroš Bizjak <ubizjak@gmail.com>
Co-authored-by: Liu Hao <lh_mouse@126.com>
Signed-off-by: Julian Waters <tanksherman27@gmail.com>
Signed-off-by: Jonathan Yong <10walls@gmail.com>
gcc/ChangeLog:
* config/i386/i386.cc (ix86_legitimate_constant_p): Handle new UNSPEC.
(legitimate_pic_operand_p): Handle new UNSPEC.
(legitimate_pic_address_disp_p): Handle new UNSPEC.
(ix86_legitimate_address_p): Handle new UNSPEC.
(ix86_tls_index_symbol): New symbol for _tls_index.
(ix86_tls_index): Handle creation of _tls_index symbol.
(legitimize_tls_address): Create thread local access sequence.
(output_pic_addr_const): Handle new UNSPEC.
(i386_output_dwarf_dtprel): Handle new UNSPEC.
(i386_asm_output_addr_const_extra): Handle new UNSPEC.
* config/i386/i386.h (TARGET_WIN32_TLS): Define.
* config/i386/i386.md: New UNSPEC.
* config/i386/predicates.md: Handle new UNSPEC.
* config/mingw/mingw32.h (TARGET_WIN32_TLS): Define.
(TARGET_ASM_SELECT_SECTION): Define.
(DEFAULT_TLS_SEG_REG): Define.
* config/mingw/winnt.cc (mingw_pe_select_section): Select proper TLS section.
(mingw_pe_unique_section): Handle TLS section.
* config/mingw/winnt.h (mingw_pe_select_section): Declare.
* configure: Regenerate.
* configure.ac: New check for broken linker thread local support
Diffstat (limited to 'libjava/gnu/java/awt/java2d/ScanlineConverter.h')
0 files changed, 0 insertions, 0 deletions