PREV UP NEXT Using and Porting GNU CC

3.14.7: M88K Options

These `-m' options are defined for Motorola 88k architectures:

Generate code that works well on both the m88100 and the m88110.
Generate code that works best for the m88100, but that also runs on the m88110.
Generate code that works best for the m88110, and may not run on the m88100.
Obsolete option to be removed from the next revision. Use `-fPIC'.
Include an ident directive in the assembler output recording the source file name, compiler name and version, timestamp, and compilation flags used.
In assembler output, emit symbol names without adding an underscore character at the beginning of each name. The default is to use an underscore as prefix on each name.
Include (or omit) additional debugging information (about registers used in each stack frame) as specified in the 88open Object Compatibility Standard, ``OCS''. This extra information allows debugging of code that has had the frame pointer eliminated. The default for DG/UX, SVr4, and Delta 88 SVr3.2 is to include this information; other 88k configurations omit this information by default.
When emitting COFF debugging information for automatic variables and parameters stored on the stack, use the offset from the canonical frame address, which is the stack pointer (register 31) on entry to the function. The DG/UX, SVr4, Delta88 SVr3.2, and BCS configurations use `-mocs-frame-position'; other 88k configurations have the default `-mno-ocs-frame-position'.
When emitting COFF debugging information for automatic variables and parameters stored on the stack, use the offset from the frame pointer register (register 30). When this option is in effect, the frame pointer is not eliminated when debugging information is selected by the -g switch.
Control how function arguments are stored in stack frames. `-moptimize-arg-area' saves space by optimizing them, but this conflicts with the 88open specifications. The opposite alternative, `-mno-optimize-arg-area', agrees with 88open standards. By default GNU CC does not optimize the argument area.
Generate smaller data references by making them relative to r0, which allows loading a value using a single instruction (rather than the usual two). You control which data references are affected by specifying num with this option. For example, if you specify `-mshort-data-512', then the data references affected are those involving displacements of less than 512 bytes. `-mshort-data-num' is not effective for num greater than 64k.
Do, or do not, generate code to guarantee sequential consistency of volatile memory references.

GNU CC always guarantees consistency by default.

The order of memory references made by the m88110 processor does not always match the order of the instructions requesting those references. In particular, a load instruction may execute before a preceding store instruction. Such reordering violates sequential consistency of volatile memory references, when there are multiple processors.

The extra code generated to guarantee consistency may affect the performance of your application. If you know that you can safely forgo this guarantee, you may use the option `-mno-serialize-volatile'.

Turn on (`-msvr4') or off (`-msvr3') compiler extensions related to System V release 4 (SVr4). This controls the following:
  1. Which variant of the assembler syntax to emit (which you can select independently using `-mversion-03.00').
  2. `-msvr4' makes the C preprocessor recognize `#pragma weak' that is used on System V release 4.
  3. `-msvr4' makes GNU CC issue additional declaration directives used in SVr4.

`-msvr3' is the default for all m88k configurations except the SVr4 configuration.

In the DG/UX configuration, there are two flavors of SVr4. This option modifies `-msvr4' to select whether the hybrid-COFF or real-ELF flavor is used. All other configurations ignore this option.
Early models of the 88k architecture had problems with division by zero; in particular, many of them didn't trap. Use these options to avoid including (or to include explicitly) additional code to detect division by zero and signal an exception. All GNU CC configurations for the 88k use `-mcheck-zero-division' by default.
Do not emit code to check both the divisor and dividend when doing signed integer division to see if either is negative, and adjust the signs so the divide is done using non-negative numbers. Instead, rely on the operating system to calculate the correct value when the div instruction traps. This results in different behavior when the most negative number is divided by -1, but is useful when most or all signed integer divisions are done with positive numbers.
Include code to detect bit-shifts of more than 31 bits; respectively, trap such shifts or emit code to handle them properly. By default GNU CC makes no special provision for large bit shifts.
Warn when a function passes a struct as an argument or result. Structure-passing conventions have changed during the evolution of the C language, and are often the source of portability problems. By default, GNU CC issues no such warning.