| <html lang="en"> |
| <head> |
| <title>RS/6000 and PowerPC Options - Using the GNU Compiler Collection (GCC)</title> |
| <meta http-equiv="Content-Type" content="text/html"> |
| <meta name="description" content="Using the GNU Compiler Collection (GCC)"> |
| <meta name="generator" content="makeinfo 4.13"> |
| <link title="Top" rel="start" href="index.html#Top"> |
| <link rel="up" href="Submodel-Options.html#Submodel-Options" title="Submodel Options"> |
| <link rel="prev" href="PowerPC-Options.html#PowerPC-Options" title="PowerPC Options"> |
| <link rel="next" href="RX-Options.html#RX-Options" title="RX Options"> |
| <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> |
| <!-- |
| Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, |
| 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, |
| 2008 Free Software Foundation, Inc. |
| |
| Permission is granted to copy, distribute and/or modify this document |
| under the terms of the GNU Free Documentation License, Version 1.2 or |
| any later version published by the Free Software Foundation; with the |
| Invariant Sections being ``Funding Free Software'', the Front-Cover |
| Texts being (a) (see below), and with the Back-Cover Texts being (b) |
| (see below). A copy of the license is included in the section entitled |
| ``GNU Free Documentation License''. |
| |
| (a) The FSF's Front-Cover Text is: |
| |
| A GNU Manual |
| |
| (b) The FSF's Back-Cover Text is: |
| |
| You have freedom to copy and modify this GNU Manual, like GNU |
| software. Copies published by the Free Software Foundation raise |
| funds for GNU development.--> |
| <meta http-equiv="Content-Style-Type" content="text/css"> |
| <style type="text/css"><!-- |
| pre.display { font-family:inherit } |
| pre.format { font-family:inherit } |
| pre.smalldisplay { font-family:inherit; font-size:smaller } |
| pre.smallformat { font-family:inherit; font-size:smaller } |
| pre.smallexample { font-size:smaller } |
| pre.smalllisp { font-size:smaller } |
| span.sc { font-variant:small-caps } |
| span.roman { font-family:serif; font-weight:normal; } |
| span.sansserif { font-family:sans-serif; font-weight:normal; } |
| --></style> |
| <link rel="stylesheet" type="text/css" href="../cs.css"> |
| </head> |
| <body> |
| <div class="node"> |
| <a name="RS%2f6000-and-PowerPC-Options"></a> |
| <a name="RS_002f6000-and-PowerPC-Options"></a> |
| <p> |
| Next: <a rel="next" accesskey="n" href="RX-Options.html#RX-Options">RX Options</a>, |
| Previous: <a rel="previous" accesskey="p" href="PowerPC-Options.html#PowerPC-Options">PowerPC Options</a>, |
| Up: <a rel="up" accesskey="u" href="Submodel-Options.html#Submodel-Options">Submodel Options</a> |
| <hr> |
| </div> |
| |
| <h4 class="subsection">3.17.31 IBM RS/6000 and PowerPC Options</h4> |
| |
| <p><a name="index-RS_002f6000-and-PowerPC-Options-1733"></a><a name="index-IBM-RS_002f6000-and-PowerPC-Options-1734"></a> |
| These ‘<samp><span class="samp">-m</span></samp>’ options are defined for the IBM RS/6000 and PowerPC: |
| <dl> |
| <dt><code>-mpower</code><dt><code>-mno-power</code><dt><code>-mpower2</code><dt><code>-mno-power2</code><dt><code>-mpowerpc</code><dt><code>-mno-powerpc</code><dt><code>-mpowerpc-gpopt</code><dt><code>-mno-powerpc-gpopt</code><dt><code>-mpowerpc-gfxopt</code><dt><code>-mno-powerpc-gfxopt</code><dt><code>-mpowerpc64</code><dt><code>-mno-powerpc64</code><dt><code>-mmfcrf</code><dt><code>-mno-mfcrf</code><dt><code>-mpopcntb</code><dt><code>-mno-popcntb</code><dt><code>-mpopcntd</code><dt><code>-mno-popcntd</code><dt><code>-mfprnd</code><dt><code>-mno-fprnd</code><dt><code>-mcmpb</code><dt><code>-mno-cmpb</code><dt><code>-mmfpgpr</code><dt><code>-mno-mfpgpr</code><dt><code>-mhard-dfp</code><dt><code>-mno-hard-dfp</code><dd><a name="index-mpower-1735"></a><a name="index-mno_002dpower-1736"></a><a name="index-mpower2-1737"></a><a name="index-mno_002dpower2-1738"></a><a name="index-mpowerpc-1739"></a><a name="index-mno_002dpowerpc-1740"></a><a name="index-mpowerpc_002dgpopt-1741"></a><a name="index-mno_002dpowerpc_002dgpopt-1742"></a><a name="index-mpowerpc_002dgfxopt-1743"></a><a name="index-mno_002dpowerpc_002dgfxopt-1744"></a><a name="index-mpowerpc64-1745"></a><a name="index-mno_002dpowerpc64-1746"></a><a name="index-mmfcrf-1747"></a><a name="index-mno_002dmfcrf-1748"></a><a name="index-mpopcntb-1749"></a><a name="index-mno_002dpopcntb-1750"></a><a name="index-mpopcntd-1751"></a><a name="index-mno_002dpopcntd-1752"></a><a name="index-mfprnd-1753"></a><a name="index-mno_002dfprnd-1754"></a><a name="index-mcmpb-1755"></a><a name="index-mno_002dcmpb-1756"></a><a name="index-mmfpgpr-1757"></a><a name="index-mno_002dmfpgpr-1758"></a><a name="index-mhard_002ddfp-1759"></a><a name="index-mno_002dhard_002ddfp-1760"></a>GCC supports two related instruction set architectures for the |
| RS/6000 and PowerPC. The <dfn>POWER</dfn> instruction set are those |
| instructions supported by the ‘<samp><span class="samp">rios</span></samp>’ chip set used in the original |
| RS/6000 systems and the <dfn>PowerPC</dfn> instruction set is the |
| architecture of the Freescale MPC5xx, MPC6xx, MPC8xx microprocessors, and |
| the IBM 4xx, 6xx, and follow-on microprocessors. |
| |
| <p>Neither architecture is a subset of the other. However there is a |
| large common subset of instructions supported by both. An MQ |
| register is included in processors supporting the POWER architecture. |
| |
| <p>You use these options to specify which instructions are available on the |
| processor you are using. The default value of these options is |
| determined when configuring GCC. Specifying the |
| <samp><span class="option">-mcpu=</span><var>cpu_type</var></samp> overrides the specification of these |
| options. We recommend you use the <samp><span class="option">-mcpu=</span><var>cpu_type</var></samp> option |
| rather than the options listed above. |
| |
| <p>The <samp><span class="option">-mpower</span></samp> option allows GCC to generate instructions that |
| are found only in the POWER architecture and to use the MQ register. |
| Specifying <samp><span class="option">-mpower2</span></samp> implies <samp><span class="option">-power</span></samp> and also allows GCC |
| to generate instructions that are present in the POWER2 architecture but |
| not the original POWER architecture. |
| |
| <p>The <samp><span class="option">-mpowerpc</span></samp> option allows GCC to generate instructions that |
| are found only in the 32-bit subset of the PowerPC architecture. |
| Specifying <samp><span class="option">-mpowerpc-gpopt</span></samp> implies <samp><span class="option">-mpowerpc</span></samp> and also allows |
| GCC to use the optional PowerPC architecture instructions in the |
| General Purpose group, including floating-point square root. Specifying |
| <samp><span class="option">-mpowerpc-gfxopt</span></samp> implies <samp><span class="option">-mpowerpc</span></samp> and also allows GCC to |
| use the optional PowerPC architecture instructions in the Graphics |
| group, including floating-point select. |
| |
| <p>The <samp><span class="option">-mmfcrf</span></samp> option allows GCC to generate the move from |
| condition register field instruction implemented on the POWER4 |
| processor and other processors that support the PowerPC V2.01 |
| architecture. |
| The <samp><span class="option">-mpopcntb</span></samp> option allows GCC to generate the popcount and |
| double precision FP reciprocal estimate instruction implemented on the |
| POWER5 processor and other processors that support the PowerPC V2.02 |
| architecture. |
| The <samp><span class="option">-mpopcntd</span></samp> option allows GCC to generate the popcount |
| instruction implemented on the POWER7 processor and other processors |
| that support the PowerPC V2.06 architecture. |
| The <samp><span class="option">-mfprnd</span></samp> option allows GCC to generate the FP round to |
| integer instructions implemented on the POWER5+ processor and other |
| processors that support the PowerPC V2.03 architecture. |
| The <samp><span class="option">-mcmpb</span></samp> option allows GCC to generate the compare bytes |
| instruction implemented on the POWER6 processor and other processors |
| that support the PowerPC V2.05 architecture. |
| The <samp><span class="option">-mmfpgpr</span></samp> option allows GCC to generate the FP move to/from |
| general purpose register instructions implemented on the POWER6X |
| processor and other processors that support the extended PowerPC V2.05 |
| architecture. |
| The <samp><span class="option">-mhard-dfp</span></samp> option allows GCC to generate the decimal floating |
| point instructions implemented on some POWER processors. |
| |
| <p>The <samp><span class="option">-mpowerpc64</span></samp> option allows GCC to generate the additional |
| 64-bit instructions that are found in the full PowerPC64 architecture |
| and to treat GPRs as 64-bit, doubleword quantities. GCC defaults to |
| <samp><span class="option">-mno-powerpc64</span></samp>. |
| |
| <p>If you specify both <samp><span class="option">-mno-power</span></samp> and <samp><span class="option">-mno-powerpc</span></samp>, GCC |
| will use only the instructions in the common subset of both |
| architectures plus some special AIX common-mode calls, and will not use |
| the MQ register. Specifying both <samp><span class="option">-mpower</span></samp> and <samp><span class="option">-mpowerpc</span></samp> |
| permits GCC to use any instruction from either architecture and to |
| allow use of the MQ register; specify this for the Motorola MPC601. |
| |
| <br><dt><code>-mnew-mnemonics</code><dt><code>-mold-mnemonics</code><dd><a name="index-mnew_002dmnemonics-1761"></a><a name="index-mold_002dmnemonics-1762"></a>Select which mnemonics to use in the generated assembler code. With |
| <samp><span class="option">-mnew-mnemonics</span></samp>, GCC uses the assembler mnemonics defined for |
| the PowerPC architecture. With <samp><span class="option">-mold-mnemonics</span></samp> it uses the |
| assembler mnemonics defined for the POWER architecture. Instructions |
| defined in only one architecture have only one mnemonic; GCC uses that |
| mnemonic irrespective of which of these options is specified. |
| |
| <p>GCC defaults to the mnemonics appropriate for the architecture in |
| use. Specifying <samp><span class="option">-mcpu=</span><var>cpu_type</var></samp> sometimes overrides the |
| value of these option. Unless you are building a cross-compiler, you |
| should normally not specify either <samp><span class="option">-mnew-mnemonics</span></samp> or |
| <samp><span class="option">-mold-mnemonics</span></samp>, but should instead accept the default. |
| |
| <br><dt><code>-mcpu=</code><var>cpu_type</var><dd><a name="index-mcpu-1763"></a>Set architecture type, register usage, choice of mnemonics, and |
| instruction scheduling parameters for machine type <var>cpu_type</var>. |
| Supported values for <var>cpu_type</var> are ‘<samp><span class="samp">401</span></samp>’, ‘<samp><span class="samp">403</span></samp>’, |
| ‘<samp><span class="samp">405</span></samp>’, ‘<samp><span class="samp">405fp</span></samp>’, ‘<samp><span class="samp">440</span></samp>’, ‘<samp><span class="samp">440fp</span></samp>’, ‘<samp><span class="samp">464</span></samp>’, ‘<samp><span class="samp">464fp</span></samp>’, |
| ‘<samp><span class="samp">476</span></samp>’, ‘<samp><span class="samp">476fp</span></samp>’, ‘<samp><span class="samp">505</span></samp>’, ‘<samp><span class="samp">601</span></samp>’, ‘<samp><span class="samp">602</span></samp>’, ‘<samp><span class="samp">603</span></samp>’, |
| ‘<samp><span class="samp">603e</span></samp>’, ‘<samp><span class="samp">604</span></samp>’, ‘<samp><span class="samp">604e</span></samp>’, ‘<samp><span class="samp">620</span></samp>’, ‘<samp><span class="samp">630</span></samp>’, ‘<samp><span class="samp">740</span></samp>’, |
| ‘<samp><span class="samp">7400</span></samp>’, ‘<samp><span class="samp">7450</span></samp>’, ‘<samp><span class="samp">750</span></samp>’, ‘<samp><span class="samp">801</span></samp>’, ‘<samp><span class="samp">821</span></samp>’, ‘<samp><span class="samp">823</span></samp>’, |
| ‘<samp><span class="samp">860</span></samp>’, ‘<samp><span class="samp">970</span></samp>’, ‘<samp><span class="samp">8540</span></samp>’, ‘<samp><span class="samp">a2</span></samp>’, ‘<samp><span class="samp">e300c2</span></samp>’, |
| ‘<samp><span class="samp">e300c3</span></samp>’, ‘<samp><span class="samp">e500mc</span></samp>’, ‘<samp><span class="samp">e500mc64</span></samp>’, ‘<samp><span class="samp">ec603e</span></samp>’, ‘<samp><span class="samp">G3</span></samp>’, |
| ‘<samp><span class="samp">G4</span></samp>’, ‘<samp><span class="samp">G5</span></samp>’, ‘<samp><span class="samp">titan</span></samp>’, ‘<samp><span class="samp">power</span></samp>’, ‘<samp><span class="samp">power2</span></samp>’, ‘<samp><span class="samp">power3</span></samp>’, |
| ‘<samp><span class="samp">power4</span></samp>’, ‘<samp><span class="samp">power5</span></samp>’, ‘<samp><span class="samp">power5+</span></samp>’, ‘<samp><span class="samp">power6</span></samp>’, ‘<samp><span class="samp">power6x</span></samp>’, |
| ‘<samp><span class="samp">power7</span></samp>’, ‘<samp><span class="samp">common</span></samp>’, ‘<samp><span class="samp">powerpc</span></samp>’, ‘<samp><span class="samp">powerpc64</span></samp>’, ‘<samp><span class="samp">rios</span></samp>’, |
| ‘<samp><span class="samp">rios1</span></samp>’, ‘<samp><span class="samp">rios2</span></samp>’, ‘<samp><span class="samp">rsc</span></samp>’, and ‘<samp><span class="samp">rs64</span></samp>’. |
| |
| <p><samp><span class="option">-mcpu=common</span></samp> selects a completely generic processor. Code |
| generated under this option will run on any POWER or PowerPC processor. |
| GCC will use only the instructions in the common subset of both |
| architectures, and will not use the MQ register. GCC assumes a generic |
| processor model for scheduling purposes. |
| |
| <p><samp><span class="option">-mcpu=power</span></samp>, <samp><span class="option">-mcpu=power2</span></samp>, <samp><span class="option">-mcpu=powerpc</span></samp>, and |
| <samp><span class="option">-mcpu=powerpc64</span></samp> specify generic POWER, POWER2, pure 32-bit |
| PowerPC (i.e., not MPC601), and 64-bit PowerPC architecture machine |
| types, with an appropriate, generic processor model assumed for |
| scheduling purposes. |
| |
| <p>The other options specify a specific processor. Code generated under |
| those options will run best on that processor, and may not run at all on |
| others. |
| |
| <p>The <samp><span class="option">-mcpu</span></samp> options automatically enable or disable the |
| following options: |
| |
| <pre class="smallexample"> -maltivec -mfprnd -mhard-float -mmfcrf -mmultiple |
| -mnew-mnemonics -mpopcntb -mpopcntd -mpower -mpower2 -mpowerpc64 |
| -mpowerpc-gpopt -mpowerpc-gfxopt -msingle-float -mdouble-float |
| -msimple-fpu -mstring -mmulhw -mdlmzb -mmfpgpr -mvsx |
| </pre> |
| <p>The particular options set for any particular CPU will vary between |
| compiler versions, depending on what setting seems to produce optimal |
| code for that CPU; it doesn't necessarily reflect the actual hardware's |
| capabilities. If you wish to set an individual option to a particular |
| value, you may specify it after the <samp><span class="option">-mcpu</span></samp> option, like |
| ‘<samp><span class="samp">-mcpu=970 -mno-altivec</span></samp>’. |
| |
| <p>On AIX, the <samp><span class="option">-maltivec</span></samp> and <samp><span class="option">-mpowerpc64</span></samp> options are |
| not enabled or disabled by the <samp><span class="option">-mcpu</span></samp> option at present because |
| AIX does not have full support for these options. You may still |
| enable or disable them individually if you're sure it'll work in your |
| environment. |
| |
| <br><dt><code>-mtune=</code><var>cpu_type</var><dd><a name="index-mtune-1764"></a>Set the instruction scheduling parameters for machine type |
| <var>cpu_type</var>, but do not set the architecture type, register usage, or |
| choice of mnemonics, as <samp><span class="option">-mcpu=</span><var>cpu_type</var></samp> would. The same |
| values for <var>cpu_type</var> are used for <samp><span class="option">-mtune</span></samp> as for |
| <samp><span class="option">-mcpu</span></samp>. If both are specified, the code generated will use the |
| architecture, registers, and mnemonics set by <samp><span class="option">-mcpu</span></samp>, but the |
| scheduling parameters set by <samp><span class="option">-mtune</span></samp>. |
| |
| <br><dt><code>-mswdiv</code><dt><code>-mno-swdiv</code><dd><a name="index-mswdiv-1765"></a><a name="index-mno_002dswdiv-1766"></a>Generate code to compute division as reciprocal estimate and iterative |
| refinement, creating opportunities for increased throughput. This |
| feature requires: optional PowerPC Graphics instruction set for single |
| precision and FRE instruction for double precision, assuming divides |
| cannot generate user-visible traps, and the domain values not include |
| Infinities, denormals or zero denominator. |
| |
| <br><dt><code>-maltivec</code><dt><code>-mno-altivec</code><dd><a name="index-maltivec-1767"></a><a name="index-mno_002daltivec-1768"></a>Generate code that uses (does not use) AltiVec instructions, and also |
| enable the use of built-in functions that allow more direct access to |
| the AltiVec instruction set. You may also need to set |
| <samp><span class="option">-mabi=altivec</span></samp> to adjust the current ABI with AltiVec ABI |
| enhancements. |
| |
| <br><dt><code>-mvrsave</code><dt><code>-mno-vrsave</code><dd><a name="index-mvrsave-1769"></a><a name="index-mno_002dvrsave-1770"></a>Generate VRSAVE instructions when generating AltiVec code. |
| |
| <br><dt><code>-mgen-cell-microcode</code><dd><a name="index-mgen_002dcell_002dmicrocode-1771"></a>Generate Cell microcode instructions |
| |
| <br><dt><code>-mwarn-cell-microcode</code><dd><a name="index-mwarn_002dcell_002dmicrocode-1772"></a>Warning when a Cell microcode instruction is going to emitted. An example |
| of a Cell microcode instruction is a variable shift. |
| |
| <br><dt><code>-msecure-plt</code><dd><a name="index-msecure_002dplt-1773"></a>Generate code that allows ld and ld.so to build executables and shared |
| libraries with non-exec .plt and .got sections. This is a PowerPC |
| 32-bit SYSV ABI option. |
| |
| <br><dt><code>-mbss-plt</code><dd><a name="index-mbss_002dplt-1774"></a>Generate code that uses a BSS .plt section that ld.so fills in, and |
| requires .plt and .got sections that are both writable and executable. |
| This is a PowerPC 32-bit SYSV ABI option. |
| |
| <br><dt><code>-misel</code><dt><code>-mno-isel</code><dd><a name="index-misel-1775"></a><a name="index-mno_002disel-1776"></a>This switch enables or disables the generation of ISEL instructions. |
| |
| <br><dt><code>-misel=</code><var>yes/no</var><dd>This switch has been deprecated. Use <samp><span class="option">-misel</span></samp> and |
| <samp><span class="option">-mno-isel</span></samp> instead. |
| |
| <br><dt><code>-mspe</code><dt><code>-mno-spe</code><dd><a name="index-mspe-1777"></a><a name="index-mno_002dspe-1778"></a>This switch enables or disables the generation of SPE simd |
| instructions. |
| |
| <br><dt><code>-mpaired</code><dt><code>-mno-paired</code><dd><a name="index-mpaired-1779"></a><a name="index-mno_002dpaired-1780"></a>This switch enables or disables the generation of PAIRED simd |
| instructions. |
| |
| <br><dt><code>-mspe=</code><var>yes/no</var><dd>This option has been deprecated. Use <samp><span class="option">-mspe</span></samp> and |
| <samp><span class="option">-mno-spe</span></samp> instead. |
| |
| <br><dt><code>-mvsx</code><dt><code>-mno-vsx</code><dd><a name="index-mvsx-1781"></a><a name="index-mno_002dvsx-1782"></a>Generate code that uses (does not use) vector/scalar (VSX) |
| instructions, and also enable the use of built-in functions that allow |
| more direct access to the VSX instruction set. |
| |
| <br><dt><code>-mfloat-gprs=</code><var>yes/single/double/no</var><dt><code>-mfloat-gprs</code><dd><a name="index-mfloat_002dgprs-1783"></a>This switch enables or disables the generation of floating point |
| operations on the general purpose registers for architectures that |
| support it. |
| |
| <p>The argument <var>yes</var> or <var>single</var> enables the use of |
| single-precision floating point operations. |
| |
| <p>The argument <var>double</var> enables the use of single and |
| double-precision floating point operations. |
| |
| <p>The argument <var>no</var> disables floating point operations on the |
| general purpose registers. |
| |
| <p>This option is currently only available on the MPC854x. |
| |
| <br><dt><code>-m32</code><dt><code>-m64</code><dd><a name="index-m32-1784"></a><a name="index-m64-1785"></a>Generate code for 32-bit or 64-bit environments of Darwin and SVR4 |
| targets (including GNU/Linux). The 32-bit environment sets int, long |
| and pointer to 32 bits and generates code that runs on any PowerPC |
| variant. The 64-bit environment sets int to 32 bits and long and |
| pointer to 64 bits, and generates code for PowerPC64, as for |
| <samp><span class="option">-mpowerpc64</span></samp>. |
| |
| <br><dt><code>-mfull-toc</code><dt><code>-mno-fp-in-toc</code><dt><code>-mno-sum-in-toc</code><dt><code>-mminimal-toc</code><dd><a name="index-mfull_002dtoc-1786"></a><a name="index-mno_002dfp_002din_002dtoc-1787"></a><a name="index-mno_002dsum_002din_002dtoc-1788"></a><a name="index-mminimal_002dtoc-1789"></a>Modify generation of the TOC (Table Of Contents), which is created for |
| every executable file. The <samp><span class="option">-mfull-toc</span></samp> option is selected by |
| default. In that case, GCC will allocate at least one TOC entry for |
| each unique non-automatic variable reference in your program. GCC |
| will also place floating-point constants in the TOC. However, only |
| 16,384 entries are available in the TOC. |
| |
| <p>If you receive a linker error message that saying you have overflowed |
| the available TOC space, you can reduce the amount of TOC space used |
| with the <samp><span class="option">-mno-fp-in-toc</span></samp> and <samp><span class="option">-mno-sum-in-toc</span></samp> options. |
| <samp><span class="option">-mno-fp-in-toc</span></samp> prevents GCC from putting floating-point |
| constants in the TOC and <samp><span class="option">-mno-sum-in-toc</span></samp> forces GCC to |
| generate code to calculate the sum of an address and a constant at |
| run-time instead of putting that sum into the TOC. You may specify one |
| or both of these options. Each causes GCC to produce very slightly |
| slower and larger code at the expense of conserving TOC space. |
| |
| <p>If you still run out of space in the TOC even when you specify both of |
| these options, specify <samp><span class="option">-mminimal-toc</span></samp> instead. This option causes |
| GCC to make only one TOC entry for every file. When you specify this |
| option, GCC will produce code that is slower and larger but which |
| uses extremely little TOC space. You may wish to use this option |
| only on files that contain less frequently executed code. |
| |
| <br><dt><code>-maix64</code><dt><code>-maix32</code><dd><a name="index-maix64-1790"></a><a name="index-maix32-1791"></a>Enable 64-bit AIX ABI and calling convention: 64-bit pointers, 64-bit |
| <code>long</code> type, and the infrastructure needed to support them. |
| Specifying <samp><span class="option">-maix64</span></samp> implies <samp><span class="option">-mpowerpc64</span></samp> and |
| <samp><span class="option">-mpowerpc</span></samp>, while <samp><span class="option">-maix32</span></samp> disables the 64-bit ABI and |
| implies <samp><span class="option">-mno-powerpc64</span></samp>. GCC defaults to <samp><span class="option">-maix32</span></samp>. |
| |
| <br><dt><code>-mxl-compat</code><dt><code>-mno-xl-compat</code><dd><a name="index-mxl_002dcompat-1792"></a><a name="index-mno_002dxl_002dcompat-1793"></a>Produce code that conforms more closely to IBM XL compiler semantics |
| when using AIX-compatible ABI. Pass floating-point arguments to |
| prototyped functions beyond the register save area (RSA) on the stack |
| in addition to argument FPRs. Do not assume that most significant |
| double in 128-bit long double value is properly rounded when comparing |
| values and converting to double. Use XL symbol names for long double |
| support routines. |
| |
| <p>The AIX calling convention was extended but not initially documented to |
| handle an obscure K&R C case of calling a function that takes the |
| address of its arguments with fewer arguments than declared. IBM XL |
| compilers access floating point arguments which do not fit in the |
| RSA from the stack when a subroutine is compiled without |
| optimization. Because always storing floating-point arguments on the |
| stack is inefficient and rarely needed, this option is not enabled by |
| default and only is necessary when calling subroutines compiled by IBM |
| XL compilers without optimization. |
| |
| <br><dt><code>-mpe</code><dd><a name="index-mpe-1794"></a>Support <dfn>IBM RS/6000 SP</dfn> <dfn>Parallel Environment</dfn> (PE). Link an |
| application written to use message passing with special startup code to |
| enable the application to run. The system must have PE installed in the |
| standard location (<samp><span class="file">/usr/lpp/ppe.poe/</span></samp>), or the <samp><span class="file">specs</span></samp> file |
| must be overridden with the <samp><span class="option">-specs=</span></samp> option to specify the |
| appropriate directory location. The Parallel Environment does not |
| support threads, so the <samp><span class="option">-mpe</span></samp> option and the <samp><span class="option">-pthread</span></samp> |
| option are incompatible. |
| |
| <br><dt><code>-malign-natural</code><dt><code>-malign-power</code><dd><a name="index-malign_002dnatural-1795"></a><a name="index-malign_002dpower-1796"></a>On AIX, 32-bit Darwin, and 64-bit PowerPC GNU/Linux, the option |
| <samp><span class="option">-malign-natural</span></samp> overrides the ABI-defined alignment of larger |
| types, such as floating-point doubles, on their natural size-based boundary. |
| The option <samp><span class="option">-malign-power</span></samp> instructs GCC to follow the ABI-specified |
| alignment rules. GCC defaults to the standard alignment defined in the ABI. |
| |
| <p>On 64-bit Darwin, natural alignment is the default, and <samp><span class="option">-malign-power</span></samp> |
| is not supported. |
| |
| <br><dt><code>-msoft-float</code><dt><code>-mhard-float</code><dd><a name="index-msoft_002dfloat-1797"></a><a name="index-mhard_002dfloat-1798"></a>Generate code that does not use (uses) the floating-point register set. |
| Software floating point emulation is provided if you use the |
| <samp><span class="option">-msoft-float</span></samp> option, and pass the option to GCC when linking. |
| |
| <br><dt><code>-msingle-float</code><dt><code>-mdouble-float</code><dd><a name="index-msingle_002dfloat-1799"></a><a name="index-mdouble_002dfloat-1800"></a>Generate code for single or double-precision floating point operations. |
| <samp><span class="option">-mdouble-float</span></samp> implies <samp><span class="option">-msingle-float</span></samp>. |
| |
| <br><dt><code>-msimple-fpu</code><dd><a name="index-msimple_002dfpu-1801"></a>Do not generate sqrt and div instructions for hardware floating point unit. |
| |
| <br><dt><code>-mfpu</code><dd><a name="index-mfpu-1802"></a>Specify type of floating point unit. Valid values are <var>sp_lite</var> |
| (equivalent to -msingle-float -msimple-fpu), <var>dp_lite</var> (equivalent |
| to -mdouble-float -msimple-fpu), <var>sp_full</var> (equivalent to -msingle-float), |
| and <var>dp_full</var> (equivalent to -mdouble-float). |
| |
| <br><dt><code>-mxilinx-fpu</code><dd><a name="index-mxilinx_002dfpu-1803"></a>Perform optimizations for floating point unit on Xilinx PPC 405/440. |
| |
| <br><dt><code>-mmultiple</code><dt><code>-mno-multiple</code><dd><a name="index-mmultiple-1804"></a><a name="index-mno_002dmultiple-1805"></a>Generate code that uses (does not use) the load multiple word |
| instructions and the store multiple word instructions. These |
| instructions are generated by default on POWER systems, and not |
| generated on PowerPC systems. Do not use <samp><span class="option">-mmultiple</span></samp> on little |
| endian PowerPC systems, since those instructions do not work when the |
| processor is in little endian mode. The exceptions are PPC740 and |
| PPC750 which permit the instructions usage in little endian mode. |
| |
| <br><dt><code>-mstring</code><dt><code>-mno-string</code><dd><a name="index-mstring-1806"></a><a name="index-mno_002dstring-1807"></a>Generate code that uses (does not use) the load string instructions |
| and the store string word instructions to save multiple registers and |
| do small block moves. These instructions are generated by default on |
| POWER systems, and not generated on PowerPC systems. Do not use |
| <samp><span class="option">-mstring</span></samp> on little endian PowerPC systems, since those |
| instructions do not work when the processor is in little endian mode. |
| The exceptions are PPC740 and PPC750 which permit the instructions |
| usage in little endian mode. |
| |
| <br><dt><code>-mupdate</code><dt><code>-mno-update</code><dd><a name="index-mupdate-1808"></a><a name="index-mno_002dupdate-1809"></a>Generate code that uses (does not use) the load or store instructions |
| that update the base register to the address of the calculated memory |
| location. These instructions are generated by default. If you use |
| <samp><span class="option">-mno-update</span></samp>, there is a small window between the time that the |
| stack pointer is updated and the address of the previous frame is |
| stored, which means code that walks the stack frame across interrupts or |
| signals may get corrupted data. |
| |
| <br><dt><code>-mavoid-indexed-addresses</code><dt><code>-mno-avoid-indexed-addresses</code><dd><a name="index-mavoid_002dindexed_002daddresses-1810"></a><a name="index-mno_002davoid_002dindexed_002daddresses-1811"></a>Generate code that tries to avoid (not avoid) the use of indexed load |
| or store instructions. These instructions can incur a performance |
| penalty on Power6 processors in certain situations, such as when |
| stepping through large arrays that cross a 16M boundary. This option |
| is enabled by default when targetting Power6 and disabled otherwise. |
| |
| <br><dt><code>-mfused-madd</code><dt><code>-mno-fused-madd</code><dd><a name="index-mfused_002dmadd-1812"></a><a name="index-mno_002dfused_002dmadd-1813"></a>Generate code that uses (does not use) the floating point multiply and |
| accumulate instructions. These instructions are generated by default if |
| hardware floating is used. |
| |
| <br><dt><code>-mmulhw</code><dt><code>-mno-mulhw</code><dd><a name="index-mmulhw-1814"></a><a name="index-mno_002dmulhw-1815"></a>Generate code that uses (does not use) the half-word multiply and |
| multiply-accumulate instructions on the IBM 405, 440, 464 and 476 processors. |
| These instructions are generated by default when targetting those |
| processors. |
| |
| <br><dt><code>-mdlmzb</code><dt><code>-mno-dlmzb</code><dd><a name="index-mdlmzb-1816"></a><a name="index-mno_002ddlmzb-1817"></a>Generate code that uses (does not use) the string-search ‘<samp><span class="samp">dlmzb</span></samp>’ |
| instruction on the IBM 405, 440, 464 and 476 processors. This instruction is |
| generated by default when targetting those processors. |
| |
| <br><dt><code>-mno-bit-align</code><dt><code>-mbit-align</code><dd><a name="index-mno_002dbit_002dalign-1818"></a><a name="index-mbit_002dalign-1819"></a>On System V.4 and embedded PowerPC systems do not (do) force structures |
| and unions that contain bit-fields to be aligned to the base type of the |
| bit-field. |
| |
| <p>For example, by default a structure containing nothing but 8 |
| <code>unsigned</code> bit-fields of length 1 would be aligned to a 4 byte |
| boundary and have a size of 4 bytes. By using <samp><span class="option">-mno-bit-align</span></samp>, |
| the structure would be aligned to a 1 byte boundary and be one byte in |
| size. |
| |
| <br><dt><code>-mno-strict-align</code><dt><code>-mstrict-align</code><dd><a name="index-mno_002dstrict_002dalign-1820"></a><a name="index-mstrict_002dalign-1821"></a>On System V.4 and embedded PowerPC systems do not (do) assume that |
| unaligned memory references will be handled by the system. |
| |
| <br><dt><code>-mrelocatable</code><dt><code>-mno-relocatable</code><dd><a name="index-mrelocatable-1822"></a><a name="index-mno_002drelocatable-1823"></a>On embedded PowerPC systems generate code that allows (does not allow) |
| the program to be relocated to a different address at runtime. If you |
| use <samp><span class="option">-mrelocatable</span></samp> on any module, all objects linked together must |
| be compiled with <samp><span class="option">-mrelocatable</span></samp> or <samp><span class="option">-mrelocatable-lib</span></samp>. |
| |
| <br><dt><code>-mrelocatable-lib</code><dt><code>-mno-relocatable-lib</code><dd><a name="index-mrelocatable_002dlib-1824"></a><a name="index-mno_002drelocatable_002dlib-1825"></a>On embedded PowerPC systems generate code that allows (does not allow) |
| the program to be relocated to a different address at runtime. Modules |
| compiled with <samp><span class="option">-mrelocatable-lib</span></samp> can be linked with either modules |
| compiled without <samp><span class="option">-mrelocatable</span></samp> and <samp><span class="option">-mrelocatable-lib</span></samp> or |
| with modules compiled with the <samp><span class="option">-mrelocatable</span></samp> options. |
| |
| <br><dt><code>-mno-toc</code><dt><code>-mtoc</code><dd><a name="index-mno_002dtoc-1826"></a><a name="index-mtoc-1827"></a>On System V.4 and embedded PowerPC systems do not (do) assume that |
| register 2 contains a pointer to a global area pointing to the addresses |
| used in the program. |
| |
| <br><dt><code>-mlittle</code><dt><code>-mlittle-endian</code><dd><a name="index-mlittle-1828"></a><a name="index-mlittle_002dendian-1829"></a>On System V.4 and embedded PowerPC systems compile code for the |
| processor in little endian mode. The <samp><span class="option">-mlittle-endian</span></samp> option is |
| the same as <samp><span class="option">-mlittle</span></samp>. |
| |
| <br><dt><code>-mbig</code><dt><code>-mbig-endian</code><dd><a name="index-mbig-1830"></a><a name="index-mbig_002dendian-1831"></a>On System V.4 and embedded PowerPC systems compile code for the |
| processor in big endian mode. The <samp><span class="option">-mbig-endian</span></samp> option is |
| the same as <samp><span class="option">-mbig</span></samp>. |
| |
| <br><dt><code>-mdynamic-no-pic</code><dd><a name="index-mdynamic_002dno_002dpic-1832"></a>On Darwin and Mac OS X systems, compile code so that it is not |
| relocatable, but that its external references are relocatable. The |
| resulting code is suitable for applications, but not shared |
| libraries. |
| |
| <br><dt><code>-mprioritize-restricted-insns=</code><var>priority</var><dd><a name="index-mprioritize_002drestricted_002dinsns-1833"></a>This option controls the priority that is assigned to |
| dispatch-slot restricted instructions during the second scheduling |
| pass. The argument <var>priority</var> takes the value <var>0/1/2</var> to assign |
| <var>no/highest/second-highest</var> priority to dispatch slot restricted |
| instructions. |
| |
| <br><dt><code>-msched-costly-dep=</code><var>dependence_type</var><dd><a name="index-msched_002dcostly_002ddep-1834"></a>This option controls which dependences are considered costly |
| by the target during instruction scheduling. The argument |
| <var>dependence_type</var> takes one of the following values: |
| <var>no</var>: no dependence is costly, |
| <var>all</var>: all dependences are costly, |
| <var>true_store_to_load</var>: a true dependence from store to load is costly, |
| <var>store_to_load</var>: any dependence from store to load is costly, |
| <var>number</var>: any dependence which latency >= <var>number</var> is costly. |
| |
| <br><dt><code>-minsert-sched-nops=</code><var>scheme</var><dd><a name="index-minsert_002dsched_002dnops-1835"></a>This option controls which nop insertion scheme will be used during |
| the second scheduling pass. The argument <var>scheme</var> takes one of the |
| following values: |
| <var>no</var>: Don't insert nops. |
| <var>pad</var>: Pad with nops any dispatch group which has vacant issue slots, |
| according to the scheduler's grouping. |
| <var>regroup_exact</var>: Insert nops to force costly dependent insns into |
| separate groups. Insert exactly as many nops as needed to force an insn |
| to a new group, according to the estimated processor grouping. |
| <var>number</var>: Insert nops to force costly dependent insns into |
| separate groups. Insert <var>number</var> nops to force an insn to a new group. |
| |
| <br><dt><code>-mcall-sysv</code><dd><a name="index-mcall_002dsysv-1836"></a>On System V.4 and embedded PowerPC systems compile code using calling |
| conventions that adheres to the March 1995 draft of the System V |
| Application Binary Interface, PowerPC processor supplement. This is the |
| default unless you configured GCC using ‘<samp><span class="samp">powerpc-*-eabiaix</span></samp>’. |
| |
| <br><dt><code>-mcall-sysv-eabi</code><dt><code>-mcall-eabi</code><dd><a name="index-mcall_002dsysv_002deabi-1837"></a><a name="index-mcall_002deabi-1838"></a>Specify both <samp><span class="option">-mcall-sysv</span></samp> and <samp><span class="option">-meabi</span></samp> options. |
| |
| <br><dt><code>-mcall-sysv-noeabi</code><dd><a name="index-mcall_002dsysv_002dnoeabi-1839"></a>Specify both <samp><span class="option">-mcall-sysv</span></samp> and <samp><span class="option">-mno-eabi</span></samp> options. |
| |
| <br><dt><code>-mcall-aixdesc</code><dd><a name="index-m-1840"></a>On System V.4 and embedded PowerPC systems compile code for the AIX |
| operating system. |
| |
| <br><dt><code>-mcall-linux</code><dd><a name="index-mcall_002dlinux-1841"></a>On System V.4 and embedded PowerPC systems compile code for the |
| Linux-based GNU system. |
| |
| <br><dt><code>-mcall-gnu</code><dd><a name="index-mcall_002dgnu-1842"></a>On System V.4 and embedded PowerPC systems compile code for the |
| Hurd-based GNU system. |
| |
| <br><dt><code>-mcall-freebsd</code><dd><a name="index-mcall_002dfreebsd-1843"></a>On System V.4 and embedded PowerPC systems compile code for the |
| FreeBSD operating system. |
| |
| <br><dt><code>-mcall-netbsd</code><dd><a name="index-mcall_002dnetbsd-1844"></a>On System V.4 and embedded PowerPC systems compile code for the |
| NetBSD operating system. |
| |
| <br><dt><code>-mcall-openbsd</code><dd><a name="index-mcall_002dnetbsd-1845"></a>On System V.4 and embedded PowerPC systems compile code for the |
| OpenBSD operating system. |
| |
| <br><dt><code>-maix-struct-return</code><dd><a name="index-maix_002dstruct_002dreturn-1846"></a>Return all structures in memory (as specified by the AIX ABI). |
| |
| <br><dt><code>-msvr4-struct-return</code><dd><a name="index-msvr4_002dstruct_002dreturn-1847"></a>Return structures smaller than 8 bytes in registers (as specified by the |
| SVR4 ABI). |
| |
| <br><dt><code>-mabi=</code><var>abi-type</var><dd><a name="index-mabi-1848"></a>Extend the current ABI with a particular extension, or remove such extension. |
| Valid values are <var>altivec</var>, <var>no-altivec</var>, <var>spe</var>, |
| <var>no-spe</var>, <var>ibmlongdouble</var>, <var>ieeelongdouble</var>. |
| |
| <br><dt><code>-mabi=spe</code><dd><a name="index-mabi_003dspe-1849"></a>Extend the current ABI with SPE ABI extensions. This does not change |
| the default ABI, instead it adds the SPE ABI extensions to the current |
| ABI. |
| |
| <br><dt><code>-mabi=no-spe</code><dd><a name="index-mabi_003dno_002dspe-1850"></a>Disable Booke SPE ABI extensions for the current ABI. |
| |
| <br><dt><code>-mabi=ibmlongdouble</code><dd><a name="index-mabi_003dibmlongdouble-1851"></a>Change the current ABI to use IBM extended precision long double. |
| This is a PowerPC 32-bit SYSV ABI option. |
| |
| <br><dt><code>-mabi=ieeelongdouble</code><dd><a name="index-mabi_003dieeelongdouble-1852"></a>Change the current ABI to use IEEE extended precision long double. |
| This is a PowerPC 32-bit Linux ABI option. |
| |
| <br><dt><code>-mprototype</code><dt><code>-mno-prototype</code><dd><a name="index-mprototype-1853"></a><a name="index-mno_002dprototype-1854"></a>On System V.4 and embedded PowerPC systems assume that all calls to |
| variable argument functions are properly prototyped. Otherwise, the |
| compiler must insert an instruction before every non prototyped call to |
| set or clear bit 6 of the condition code register (<var>CR</var>) to |
| indicate whether floating point values were passed in the floating point |
| registers in case the function takes a variable arguments. With |
| <samp><span class="option">-mprototype</span></samp>, only calls to prototyped variable argument functions |
| will set or clear the bit. |
| |
| <br><dt><code>-msim</code><dd><a name="index-msim-1855"></a>On embedded PowerPC systems, assume that the startup module is called |
| <samp><span class="file">sim-crt0.o</span></samp> and that the standard C libraries are <samp><span class="file">libsim.a</span></samp> and |
| <samp><span class="file">libc.a</span></samp>. This is the default for ‘<samp><span class="samp">powerpc-*-eabisim</span></samp>’ |
| configurations. |
| |
| <br><dt><code>-mmvme</code><dd><a name="index-mmvme-1856"></a>On embedded PowerPC systems, assume that the startup module is called |
| <samp><span class="file">crt0.o</span></samp> and the standard C libraries are <samp><span class="file">libmvme.a</span></samp> and |
| <samp><span class="file">libc.a</span></samp>. |
| |
| <br><dt><code>-mads</code><dd><a name="index-mads-1857"></a>On embedded PowerPC systems, assume that the startup module is called |
| <samp><span class="file">crt0.o</span></samp> and the standard C libraries are <samp><span class="file">libads.a</span></samp> and |
| <samp><span class="file">libc.a</span></samp>. |
| |
| <br><dt><code>-myellowknife</code><dd><a name="index-myellowknife-1858"></a>On embedded PowerPC systems, assume that the startup module is called |
| <samp><span class="file">crt0.o</span></samp> and the standard C libraries are <samp><span class="file">libyk.a</span></samp> and |
| <samp><span class="file">libc.a</span></samp>. |
| |
| <br><dt><code>-mvxworks</code><dd><a name="index-mvxworks-1859"></a>On System V.4 and embedded PowerPC systems, specify that you are |
| compiling for a VxWorks system. |
| |
| <br><dt><code>-memb</code><dd><a name="index-memb-1860"></a>On embedded PowerPC systems, set the <var>PPC_EMB</var> bit in the ELF flags |
| header to indicate that ‘<samp><span class="samp">eabi</span></samp>’ extended relocations are used. |
| |
| <br><dt><code>-meabi</code><dt><code>-mno-eabi</code><dd><a name="index-meabi-1861"></a><a name="index-mno_002deabi-1862"></a>On System V.4 and embedded PowerPC systems do (do not) adhere to the |
| Embedded Applications Binary Interface (eabi) which is a set of |
| modifications to the System V.4 specifications. Selecting <samp><span class="option">-meabi</span></samp> |
| means that the stack is aligned to an 8 byte boundary, |
| and the <samp><span class="option">-msdata</span></samp> option can use both <code>r2</code> and |
| <code>r13</code> to point to two separate small data areas. Selecting |
| <samp><span class="option">-mno-eabi</span></samp> means that the stack is aligned to a 16 byte boundary, |
| and the |
| <samp><span class="option">-msdata</span></samp> option will only use <code>r13</code> to point to a single |
| small data area. The <samp><span class="option">-meabi</span></samp> option is on by default if you |
| configured GCC using one of the ‘<samp><span class="samp">powerpc*-*-eabi*</span></samp>’ options. |
| |
| <br><dt><code>-msdata=eabi</code><dd><a name="index-msdata_003deabi-1863"></a>On System V.4 and embedded PowerPC systems, put small initialized |
| <code>const</code> global and static data in the ‘<samp><span class="samp">.sdata2</span></samp>’ section, which |
| is pointed to by register <code>r2</code>. Put small initialized |
| non-<code>const</code> global and static data in the ‘<samp><span class="samp">.sdata</span></samp>’ section, |
| which is pointed to by register <code>r13</code>. Put small uninitialized |
| global and static data in the ‘<samp><span class="samp">.sbss</span></samp>’ section, which is adjacent to |
| the ‘<samp><span class="samp">.sdata</span></samp>’ section. The <samp><span class="option">-msdata=eabi</span></samp> option is |
| incompatible with the <samp><span class="option">-mrelocatable</span></samp> option. The |
| <samp><span class="option">-msdata=eabi</span></samp> option also sets the <samp><span class="option">-memb</span></samp> option. |
| |
| <br><dt><code>-msdata=sysv</code><dd><a name="index-msdata_003dsysv-1864"></a>On System V.4 and embedded PowerPC systems, put small global and static |
| data in the ‘<samp><span class="samp">.sdata</span></samp>’ section, which is pointed to by register |
| <code>r13</code>. Put small uninitialized global and static data in the |
| ‘<samp><span class="samp">.sbss</span></samp>’ section, which is adjacent to the ‘<samp><span class="samp">.sdata</span></samp>’ section. |
| The <samp><span class="option">-msdata=sysv</span></samp> option is incompatible with the |
| <samp><span class="option">-mrelocatable</span></samp> option. |
| |
| <br><dt><code>-msdata=default</code><dt><code>-msdata</code><dd><a name="index-msdata_003ddefault-1865"></a><a name="index-msdata-1866"></a>On System V.4 and embedded PowerPC systems, if <samp><span class="option">-meabi</span></samp> is used, |
| compile code the same as <samp><span class="option">-msdata=eabi</span></samp>, otherwise compile code the |
| same as <samp><span class="option">-msdata=sysv</span></samp>. |
| |
| <br><dt><code>-msdata=data</code><dd><a name="index-msdata_003ddata-1867"></a>On System V.4 and embedded PowerPC systems, put small global |
| data in the ‘<samp><span class="samp">.sdata</span></samp>’ section. Put small uninitialized global |
| data in the ‘<samp><span class="samp">.sbss</span></samp>’ section. Do not use register <code>r13</code> |
| to address small data however. This is the default behavior unless |
| other <samp><span class="option">-msdata</span></samp> options are used. |
| |
| <br><dt><code>-msdata=none</code><dt><code>-mno-sdata</code><dd><a name="index-msdata_003dnone-1868"></a><a name="index-mno_002dsdata-1869"></a>On embedded PowerPC systems, put all initialized global and static data |
| in the ‘<samp><span class="samp">.data</span></samp>’ section, and all uninitialized data in the |
| ‘<samp><span class="samp">.bss</span></samp>’ section. |
| |
| <br><dt><code>-mblock-move-inline-limit=</code><var>num</var><dd><a name="index-mblock_002dmove_002dinline_002dlimit-1870"></a>Inline all block moves (such as calls to <code>memcpy</code> or structure |
| copies) less than or equal to <var>num</var> bytes. The minimum value for |
| <var>num</var> is 32 bytes on 32-bit targets and 64 bytes on 64-bit |
| targets. The default value is target-specific. |
| |
| <br><dt><code>-G </code><var>num</var><dd><a name="index-G-1871"></a><a name="index-smaller-data-references-_0028PowerPC_0029-1872"></a><a name="index-g_t_002esdata_002f_002esdata2-references-_0028PowerPC_0029-1873"></a>On embedded PowerPC systems, put global and static items less than or |
| equal to <var>num</var> bytes into the small data or bss sections instead of |
| the normal data or bss section. By default, <var>num</var> is 8. The |
| <samp><span class="option">-G </span><var>num</var></samp> switch is also passed to the linker. |
| All modules should be compiled with the same <samp><span class="option">-G </span><var>num</var></samp> value. |
| |
| <br><dt><code>-mregnames</code><dt><code>-mno-regnames</code><dd><a name="index-mregnames-1874"></a><a name="index-mno_002dregnames-1875"></a>On System V.4 and embedded PowerPC systems do (do not) emit register |
| names in the assembly language output using symbolic forms. |
| |
| <br><dt><code>-mlongcall</code><dt><code>-mno-longcall</code><dd><a name="index-mlongcall-1876"></a><a name="index-mno_002dlongcall-1877"></a>By default assume that all calls are far away so that a longer more |
| expensive calling sequence is required. This is required for calls |
| further than 32 megabytes (33,554,432 bytes) from the current location. |
| A short call will be generated if the compiler knows |
| the call cannot be that far away. This setting can be overridden by |
| the <code>shortcall</code> function attribute, or by <code>#pragma |
| longcall(0)</code>. |
| |
| <p>Some linkers are capable of detecting out-of-range calls and generating |
| glue code on the fly. On these systems, long calls are unnecessary and |
| generate slower code. As of this writing, the AIX linker can do this, |
| as can the GNU linker for PowerPC/64. It is planned to add this feature |
| to the GNU linker for 32-bit PowerPC systems as well. |
| |
| <p>On Darwin/PPC systems, <code>#pragma longcall</code> will generate “jbsr |
| callee, L42”, plus a “branch island” (glue code). The two target |
| addresses represent the callee and the “branch island”. The |
| Darwin/PPC linker will prefer the first address and generate a “bl |
| callee” if the PPC “bl” instruction will reach the callee directly; |
| otherwise, the linker will generate “bl L42” to call the “branch |
| island”. The “branch island” is appended to the body of the |
| calling function; it computes the full 32-bit address of the callee |
| and jumps to it. |
| |
| <p>On Mach-O (Darwin) systems, this option directs the compiler emit to |
| the glue for every direct call, and the Darwin linker decides whether |
| to use or discard it. |
| |
| <p>In the future, we may cause GCC to ignore all longcall specifications |
| when the linker is known to generate glue. |
| |
| <br><dt><code>-mtls-markers</code><dt><code>-mno-tls-markers</code><dd><a name="index-mtls_002dmarkers-1878"></a><a name="index-mno_002dtls_002dmarkers-1879"></a>Mark (do not mark) calls to <code>__tls_get_addr</code> with a relocation |
| specifying the function argument. The relocation allows ld to |
| reliably associate function call with argument setup instructions for |
| TLS optimization, which in turn allows gcc to better schedule the |
| sequence. |
| |
| <br><dt><code>-pthread</code><dd><a name="index-pthread-1880"></a>Adds support for multithreading with the <dfn>pthreads</dfn> library. |
| This option sets flags for both the preprocessor and linker. |
| |
| </dl> |
| |
| </body></html> |
| |