Next: CRIS Options, Previous: D30V Options, Up: Submodel Options

#### 3.17.27 S/390 and zSeries Options

These are the -m options defined for the S/390 and zSeries architecture.

`-mhard-float`
`-msoft-float`
  Use (do not use) the hardware floating-point instructions and registers for floating-point operations. When -msoft-float is specified, functions in libgcc.a will be used to perform floating-point operations. When -mhard-float is specified, the compiler generates IEEE floating-point instructions. This is the default.
`-mbackchain`
`-mno-backchain`
  Generate (or do not generate) code which maintains an explicit backchain within the stack frame that points to the caller's frame. This may be needed to allow debugging using tools that do not understand DWARF-2 call frame information. The default is not to generate the backchain.
`-msmall-exec`
`-mno-small-exec`
  Generate (or do not generate) code using the `bras` instruction to do subroutine calls. This only works reliably if the total executable size does not exceed 64k. The default is to use the `basr` instruction instead, which does not have this limitation.
`-m64`
`-m31`
  When -m31 is specified, generate code compliant to the GNU/Linux for S/390 ABI. When -m64 is specified, generate code compliant to the GNU/Linux for zSeries ABI. This allows GCC in particular to generate 64-bit instructions. For the s390 targets, the default is -m31, while the s390x targets default to -m64.
`-mzarch`
`-mesa`
  When -mzarch is specified, generate code using the instructions available on z/Architecture. When -mesa is specified, generate code using the instructions available on ESA/390. Note that -mesa is not possible with -m64. When generating code compliant to the GNU/Linux for S/390 ABI, the default is -mesa. When generating code compliant to the GNU/Linux for zSeries ABI, the default is -mzarch.
`-mmvcle`
`-mno-mvcle`
  Generate (or do not generate) code using the `mvcle` instruction to perform block moves. When -mno-mvcle is specified, use a `mvc` loop instead. This is the default.
`-mdebug`
`-mno-debug`
  Print (or do not print) additional debug information when compiling. The default is to not print debug information.
`-march=`cpu-type
  Generate code that will run on cpu-type, which is the name of a system representing a certain processor type. Possible values for cpu-type are g5, g6, z900, and z990. When generating code using the instructions available on z/Architecture, the default is -march=z900. Otherwise, the default is -march=g5.
`-mtune=`cpu-type
  Tune to cpu-type everything applicable about the generated code, except for the ABI and the set of available instructions. The list of cpu-type values is the same as for -march. The default is the value used for -march.
`-mfused-madd`
`-mno-fused-madd`
  Generate code that uses (does not use) the floating point multiply and accumulate instructions. These instructions are generated by default if hardware floating point is used.