s390: Remove -m31 and -mesa support
GCC for s390 removes support for the -m31 and -mesa flags, deprecating 32-bit compilation on this architecture.
GCC’s support for the s390 architecture has been significantly streamlined by removing the -m31 and -mesa command-line options. This effectively deprecates 32-bit compilation on s390, as these flags were used to enable it. While -m64 and -mzarch are still accepted for backward compatibility, they now behave as defaults rather than distinct options. Consequently, a large amount of architecture-specific code related to 32-bit modes has been removed.
In Details
The removal of -m31 and -mesa support from the s390 backend simplifies the compiler's configuration and code. This eliminates 32-bit specific code paths in various components, including machine descriptions (.md files), configuration files (config.gcc, config.host), and s390.cc/.h. The UNITS_PER_WORD and UNITS_PER_LONG are now uniformly 2 (for 64-bit words) as the distinction is no longer relevant, and the zl constraint in constraints.md has been updated.
- s390
- IBM's mainframe System/390 architecture, and its subsequent 64-bit extensions (z/Architecture).
- -m31
- A GCC compiler flag historically used to specify 31-bit or 32-bit mode for certain architectures, enabling compilation for older 32-bit systems.
- -mesa
- A specific compiler option for s390, often related to 32-bit or specific modes of operation, now removed.
- -m64
- A GCC compiler flag that specifies 64-bit mode for compilation.
- -mzarch
- A GCC compiler flag for s390 that enables instructions available in the z/Architecture, the 64-bit extension of the architecture.
- UNITS_PER_WORD
- A macro defining the number of bytes in a machine word (typically 4 or 8 bytes depending on the architecture's word size).
- UNITS_PER_LONG
- A macro defining the number of bytes in a 'long' integer type, which can differ from the machine word size in some ABIs.