-->

Previous | Table of Contents | Next

Page 193

_margcount Generate code which puts an argument count in the word preceding each argument list. Some nonportable Convex and VAX programs need this word. (Debuggers don't, except for functions with variable-length argument lists; this information is in the symbol table.)
_mnoargcount Omit the argument count word. This is the default if you use the unmodified sources.

These _m options are defined for the AMD Am29000:

_mdw Generate code that assumes the DW bit is set, that is, that byte and half-word operations are directly supported by the hardware. This is the default.
_mnodw Generate code that assumes the DW bit is not set.
_mbw Generate code that assumes the system supports byte and halfword write operations. This is the default.
_mnbw Generate code that assumes the systems does not support byte and halfword write operations. This implies _mnodw.
_msmall Use a small memory model that assumes that all function addresses are either within a single 256KB segment or at an absolute address of less than 256K. This allows the call instruction to be used instead of a const, consth, calli sequence.
_mlarge Do not assume that the call instruction can be used; this is the default.
_m29050 Generate code for the Am29050.
_m29000 Generate code for the Am29000. This is the default.
_mkernel_registers Generate references to registers gr64_gr95 instead of gr96_gr127. This option can be used when compiling kernel code that wants a set of global registers disjoint from that used by user-mode code.
Note that when this option is used, register names in _f flags must use the normal, user-mode, names.
_muser_registers Use the normal set of global registers, gr96_gr127. This is the default.
_mstack_check Insert a call to msp check after each stack adjustment. This is often used for kernel code.

These _m options are defined for Motorola 88K architectures:

_m88000 Generate code that works well on both the m88100 and the m88110.
_m88100 Generate code that works best for the m88100, but that also runs on the m88110.
_m88110 Generate code that works best for the m88110, and may not run on the m88100.
_midentify_revision Include an ident directive in the assembler output recording the source filename, compiler name and version, timestamp, and compilation flags used.
_mno_underscores 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.
_mcheck_zero_division Early models of the 88K architecture had problems with division by zero; in particular, many of
_mno_check_zero_division 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 gcc configurations for the 88K use
_mcheck_zero_division by default.
_mocs_debug_info Include (or omit) additional debugging information (about registers used in each stack frame)
_mno_ocs_debug_info as specified in the 88Open Object Compatibility Standard, OCS. This extra information is not needed by GDB. The default for DG/UX, SVr4, and Delta 88 SVr3.2 is to include this information; other 88K configurations omit this information by default.
_mocs_frame_position Force (or do not require) register values to be stored in a particular place in stack frames, as
_mno_ocs_frame_position specified in OCS. The DG/UX, Delta88 SVr3.2, and BCS configurations use _mocs_frame_ position; other 88K configurations have the default _mno_ocs_ frame_position.
_moptimize_arg_area Control how to store function arguments in stack frames. _moptimize_arg_area saves space, but
_mno_optimize_arg_area may break some debuggers (not GDB). _mno_optimize_arg_area conforms better to standards. By default gcc does not optimize the argument area.

Page 194

_mshort_data_num 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.
_mserialize-volatile Do, or do not, generate code to guarantee sequential consistency of volatile memory references.
_mno-serialize-volatile GNU CC always guarantees consistency by default, for the preferred processor submodel. How this is done depends on the submodel. The m88100 processor does not reorder memory references and so always provides sequential consistency. If you use _m88100, GNU CC does not generate any special instructions for sequential consistency.
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. When you use _m88000 or _m88110, GNU CC generates special instructions when appropriate, to force execution in the proper order.
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.
If you use the _m88100 option but require sequential consistency when running on the m88110 processor, you should use _mserialize-volatile.
_msvr4, _msvr3 Turn on (_msvr4) or off (_msvr3) compiler extensions related to System V release 4 (SVr4). This controls the following:
Which variant of the assembler syntax to emit (which you can select independently using
_mversion_03.00).
_msvr4 makes the C preprocessor recognize #pragma weak.
_msvr4 makes gcc issue additional declaration directives used in SVr4.
_msvr3 is the default for all m88K configurations except the SVr4 configuration.
_mtrap_large_shift Include code to detect bit-shifts of more than 31 bits; respectively, trap such shifts or emit code
_mhandle_large_shift to handle them properly. By default, gcc makes no special provision for large bit shifts.
_muse_div_instruction Very early models of the 88K architecture didn't have a divide instruction, so gcc avoids that instruction by default. Use this option to specify that it's safe to use the divide instruction.
_mversion_03.00 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.
_mwarn_passed_structs 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, gcc issues no such warning.

These options are defined for the IBM RS6000:

_mfp_in_toc Control whether or not floating-point constants go in the table of contents (TOC), a table of
_mno_fp_in_toc all global variable and function addresses. By default gcc puts floating-point constants there; if the TOC overflows, _mno_fp_in_toc will reduce the size of the TOC, which may avoid the overflow.

These _m options are defined for the IBM RT PC:

_min_line_mul Use an inline code sequence for integer multiplies. This is the default.
_mcall_lib_mul Call lmul$$ for integer multiples.
_mfull_fp_blocks Generate full-size floating-point data blocks, including the minimum amount of scratch space recommended by IBM. This is the default.

Previous | Table of Contents | Next