Changes since v1: * Documentation for __seg_* and __SEG_*. * Add a couple more test cases, suggested by comments on v1. * Fix operands_equal_p and cselib wrt address spaces. * Emit DW_AT_segment for x86 segments.
I think this includes all of the feedback from v1, except wrt PR66768, which I'll probably defer to Bin Cheng in the end. r~ Richard Henderson (13): Change default of non-overlapping address space conversion Relax ADDR_SPACE_GENERIC_P checks for default address space hooks i386: Handle address spaces in movabs patterns i386: Disallow address spaces with string insns i386: Add address spaces for fs/gs segments i386: Replace ix86_address_seg with addr_space_t i386: Add address space for tls Add TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID Fix PR 66768 Avoid CSE of MEMs in different address spaces Test case for conversion from __seg_tls:0 Document the x86 address spaces Add hook for modifying debug info for address spaces gcc/config/i386/i386-c.c | 8 + gcc/config/i386/i386-protos.h | 8 +- gcc/config/i386/i386.c | 317 +++++++++++++++++++-------- gcc/config/i386/i386.h | 3 +- gcc/config/i386/i386.md | 91 ++++++-- gcc/config/i386/predicates.md | 8 +- gcc/config/i386/rdos.h | 2 +- gcc/cselib.c | 22 +- gcc/doc/extend.texi | 46 +++- gcc/doc/tm.texi | 12 + gcc/doc/tm.texi.in | 4 + gcc/dwarf2out.c | 48 ++-- gcc/expr.c | 30 ++- gcc/fold-const.c | 20 +- gcc/gimple.c | 12 +- gcc/target.def | 19 ++ gcc/targhooks.c | 56 +++-- gcc/targhooks.h | 2 + gcc/testsuite/gcc.target/i386/addr-space-1.c | 11 + gcc/testsuite/gcc.target/i386/addr-space-2.c | 11 + gcc/testsuite/gcc.target/i386/addr-space-3.c | 10 + gcc/tree-ssa-address.c | 2 +- 22 files changed, 548 insertions(+), 194 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/addr-space-1.c create mode 100644 gcc/testsuite/gcc.target/i386/addr-space-2.c create mode 100644 gcc/testsuite/gcc.target/i386/addr-space-3.c -- 2.4.3