You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

RS_002f6000-and-PowerPC-Options.html 59KB

3 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  4. Permission is granted to copy, distribute and/or modify this document
  5. under the terms of the GNU Free Documentation License, Version 1.3 or
  6. any later version published by the Free Software Foundation; with the
  7. Invariant Sections being "Funding Free Software", the Front-Cover
  8. Texts being (a) (see below), and with the Back-Cover Texts being (b)
  9. (see below). A copy of the license is included in the section entitled
  10. "GNU Free Documentation License".
  11. (a) The FSF's Front-Cover Text is:
  12. A GNU Manual
  13. (b) The FSF's Back-Cover Text is:
  14. You have freedom to copy and modify this GNU Manual, like GNU
  15. software. Copies published by the Free Software Foundation raise
  16. funds for GNU development. -->
  17. <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  18. <head>
  19. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  20. <title>RS/6000 and PowerPC Options (Using the GNU Compiler Collection (GCC))</title>
  21. <meta name="description" content="RS/6000 and PowerPC Options (Using the GNU Compiler Collection (GCC))">
  22. <meta name="keywords" content="RS/6000 and PowerPC Options (Using the GNU Compiler Collection (GCC))">
  23. <meta name="resource-type" content="document">
  24. <meta name="distribution" content="global">
  25. <meta name="Generator" content="makeinfo">
  26. <link href="index.html#Top" rel="start" title="Top">
  27. <link href="Option-Index.html#Option-Index" rel="index" title="Option Index">
  28. <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
  29. <link href="Submodel-Options.html#Submodel-Options" rel="up" title="Submodel Options">
  30. <link href="RX-Options.html#RX-Options" rel="next" title="RX Options">
  31. <link href="RL78-Options.html#RL78-Options" rel="prev" title="RL78 Options">
  32. <style type="text/css">
  33. <!--
  34. a.summary-letter {text-decoration: none}
  35. blockquote.indentedblock {margin-right: 0em}
  36. blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
  37. blockquote.smallquotation {font-size: smaller}
  38. div.display {margin-left: 3.2em}
  39. div.example {margin-left: 3.2em}
  40. div.lisp {margin-left: 3.2em}
  41. div.smalldisplay {margin-left: 3.2em}
  42. div.smallexample {margin-left: 3.2em}
  43. div.smalllisp {margin-left: 3.2em}
  44. kbd {font-style: oblique}
  45. pre.display {font-family: inherit}
  46. pre.format {font-family: inherit}
  47. pre.menu-comment {font-family: serif}
  48. pre.menu-preformatted {font-family: serif}
  49. pre.smalldisplay {font-family: inherit; font-size: smaller}
  50. pre.smallexample {font-size: smaller}
  51. pre.smallformat {font-family: inherit; font-size: smaller}
  52. pre.smalllisp {font-size: smaller}
  53. span.nolinebreak {white-space: nowrap}
  54. span.roman {font-family: initial; font-weight: normal}
  55. span.sansserif {font-family: sans-serif; font-weight: normal}
  56. ul.no-bullet {list-style: none}
  57. -->
  58. </style>
  59. </head>
  60. <body lang="en">
  61. <a name="RS_002f6000-and-PowerPC-Options"></a>
  62. <div class="header">
  63. <p>
  64. Next: <a href="RX-Options.html#RX-Options" accesskey="n" rel="next">RX Options</a>, Previous: <a href="RL78-Options.html#RL78-Options" accesskey="p" rel="prev">RL78 Options</a>, Up: <a href="Submodel-Options.html#Submodel-Options" accesskey="u" rel="up">Submodel Options</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
  65. </div>
  66. <hr>
  67. <a name="IBM-RS_002f6000-and-PowerPC-Options"></a>
  68. <h4 class="subsection">3.19.44 IBM RS/6000 and PowerPC Options</h4>
  69. <a name="index-RS_002f6000-and-PowerPC-Options"></a>
  70. <a name="index-IBM-RS_002f6000-and-PowerPC-Options"></a>
  71. <p>These &lsquo;<samp>-m</samp>&rsquo; options are defined for the IBM RS/6000 and PowerPC:
  72. </p><dl compact="compact">
  73. <dt><code>-mpowerpc-gpopt</code></dt>
  74. <dt><code>-mno-powerpc-gpopt</code></dt>
  75. <dt><code>-mpowerpc-gfxopt</code></dt>
  76. <dt><code>-mno-powerpc-gfxopt</code></dt>
  77. <dt><code>-mpowerpc64</code></dt>
  78. <dt><code>-mno-powerpc64</code></dt>
  79. <dt><code>-mmfcrf</code></dt>
  80. <dt><code>-mno-mfcrf</code></dt>
  81. <dt><code>-mpopcntb</code></dt>
  82. <dt><code>-mno-popcntb</code></dt>
  83. <dt><code>-mpopcntd</code></dt>
  84. <dt><code>-mno-popcntd</code></dt>
  85. <dt><code>-mfprnd</code></dt>
  86. <dt><code>-mno-fprnd</code></dt>
  87. <dt><code>-mcmpb</code></dt>
  88. <dt><code>-mno-cmpb</code></dt>
  89. <dt><code>-mhard-dfp</code></dt>
  90. <dt><code>-mno-hard-dfp</code></dt>
  91. <dd><a name="index-mpowerpc_002dgpopt"></a>
  92. <a name="index-mno_002dpowerpc_002dgpopt"></a>
  93. <a name="index-mpowerpc_002dgfxopt"></a>
  94. <a name="index-mno_002dpowerpc_002dgfxopt"></a>
  95. <a name="index-mpowerpc64"></a>
  96. <a name="index-mno_002dpowerpc64"></a>
  97. <a name="index-mmfcrf"></a>
  98. <a name="index-mno_002dmfcrf"></a>
  99. <a name="index-mpopcntb"></a>
  100. <a name="index-mno_002dpopcntb"></a>
  101. <a name="index-mpopcntd"></a>
  102. <a name="index-mno_002dpopcntd"></a>
  103. <a name="index-mfprnd"></a>
  104. <a name="index-mno_002dfprnd"></a>
  105. <a name="index-mcmpb"></a>
  106. <a name="index-mno_002dcmpb"></a>
  107. <a name="index-mhard_002ddfp"></a>
  108. <a name="index-mno_002dhard_002ddfp"></a>
  109. <p>You use these options to specify which instructions are available on the
  110. processor you are using. The default value of these options is
  111. determined when configuring GCC. Specifying the
  112. <samp>-mcpu=<var>cpu_type</var></samp> overrides the specification of these
  113. options. We recommend you use the <samp>-mcpu=<var>cpu_type</var></samp> option
  114. rather than the options listed above.
  115. </p>
  116. <p>Specifying <samp>-mpowerpc-gpopt</samp> allows
  117. GCC to use the optional PowerPC architecture instructions in the
  118. General Purpose group, including floating-point square root. Specifying
  119. <samp>-mpowerpc-gfxopt</samp> allows GCC to
  120. use the optional PowerPC architecture instructions in the Graphics
  121. group, including floating-point select.
  122. </p>
  123. <p>The <samp>-mmfcrf</samp> option allows GCC to generate the move from
  124. condition register field instruction implemented on the POWER4
  125. processor and other processors that support the PowerPC V2.01
  126. architecture.
  127. The <samp>-mpopcntb</samp> option allows GCC to generate the popcount and
  128. double-precision FP reciprocal estimate instruction implemented on the
  129. POWER5 processor and other processors that support the PowerPC V2.02
  130. architecture.
  131. The <samp>-mpopcntd</samp> option allows GCC to generate the popcount
  132. instruction implemented on the POWER7 processor and other processors
  133. that support the PowerPC V2.06 architecture.
  134. The <samp>-mfprnd</samp> option allows GCC to generate the FP round to
  135. integer instructions implemented on the POWER5+ processor and other
  136. processors that support the PowerPC V2.03 architecture.
  137. The <samp>-mcmpb</samp> option allows GCC to generate the compare bytes
  138. instruction implemented on the POWER6 processor and other processors
  139. that support the PowerPC V2.05 architecture.
  140. The <samp>-mhard-dfp</samp> option allows GCC to generate the decimal
  141. floating-point instructions implemented on some POWER processors.
  142. </p>
  143. <p>The <samp>-mpowerpc64</samp> option allows GCC to generate the additional
  144. 64-bit instructions that are found in the full PowerPC64 architecture
  145. and to treat GPRs as 64-bit, doubleword quantities. GCC defaults to
  146. <samp>-mno-powerpc64</samp>.
  147. </p>
  148. </dd>
  149. <dt><code>-mcpu=<var>cpu_type</var></code></dt>
  150. <dd><a name="index-mcpu-9"></a>
  151. <p>Set architecture type, register usage, and
  152. instruction scheduling parameters for machine type <var>cpu_type</var>.
  153. Supported values for <var>cpu_type</var> are &lsquo;<samp>401</samp>&rsquo;, &lsquo;<samp>403</samp>&rsquo;,
  154. &lsquo;<samp>405</samp>&rsquo;, &lsquo;<samp>405fp</samp>&rsquo;, &lsquo;<samp>440</samp>&rsquo;, &lsquo;<samp>440fp</samp>&rsquo;, &lsquo;<samp>464</samp>&rsquo;, &lsquo;<samp>464fp</samp>&rsquo;,
  155. &lsquo;<samp>476</samp>&rsquo;, &lsquo;<samp>476fp</samp>&rsquo;, &lsquo;<samp>505</samp>&rsquo;, &lsquo;<samp>601</samp>&rsquo;, &lsquo;<samp>602</samp>&rsquo;, &lsquo;<samp>603</samp>&rsquo;,
  156. &lsquo;<samp>603e</samp>&rsquo;, &lsquo;<samp>604</samp>&rsquo;, &lsquo;<samp>604e</samp>&rsquo;, &lsquo;<samp>620</samp>&rsquo;, &lsquo;<samp>630</samp>&rsquo;, &lsquo;<samp>740</samp>&rsquo;,
  157. &lsquo;<samp>7400</samp>&rsquo;, &lsquo;<samp>7450</samp>&rsquo;, &lsquo;<samp>750</samp>&rsquo;, &lsquo;<samp>801</samp>&rsquo;, &lsquo;<samp>821</samp>&rsquo;, &lsquo;<samp>823</samp>&rsquo;,
  158. &lsquo;<samp>860</samp>&rsquo;, &lsquo;<samp>970</samp>&rsquo;, &lsquo;<samp>8540</samp>&rsquo;, &lsquo;<samp>a2</samp>&rsquo;, &lsquo;<samp>e300c2</samp>&rsquo;,
  159. &lsquo;<samp>e300c3</samp>&rsquo;, &lsquo;<samp>e500mc</samp>&rsquo;, &lsquo;<samp>e500mc64</samp>&rsquo;, &lsquo;<samp>e5500</samp>&rsquo;,
  160. &lsquo;<samp>e6500</samp>&rsquo;, &lsquo;<samp>ec603e</samp>&rsquo;, &lsquo;<samp>G3</samp>&rsquo;, &lsquo;<samp>G4</samp>&rsquo;, &lsquo;<samp>G5</samp>&rsquo;,
  161. &lsquo;<samp>titan</samp>&rsquo;, &lsquo;<samp>power3</samp>&rsquo;, &lsquo;<samp>power4</samp>&rsquo;, &lsquo;<samp>power5</samp>&rsquo;, &lsquo;<samp>power5+</samp>&rsquo;,
  162. &lsquo;<samp>power6</samp>&rsquo;, &lsquo;<samp>power6x</samp>&rsquo;, &lsquo;<samp>power7</samp>&rsquo;, &lsquo;<samp>power8</samp>&rsquo;,
  163. &lsquo;<samp>power9</samp>&rsquo;, &lsquo;<samp>future</samp>&rsquo;, &lsquo;<samp>powerpc</samp>&rsquo;, &lsquo;<samp>powerpc64</samp>&rsquo;,
  164. &lsquo;<samp>powerpc64le</samp>&rsquo;, &lsquo;<samp>rs64</samp>&rsquo;, and &lsquo;<samp>native</samp>&rsquo;.
  165. </p>
  166. <p><samp>-mcpu=powerpc</samp>, <samp>-mcpu=powerpc64</samp>, and
  167. <samp>-mcpu=powerpc64le</samp> specify pure 32-bit PowerPC (either
  168. endian), 64-bit big endian PowerPC and 64-bit little endian PowerPC
  169. architecture machine types, with an appropriate, generic processor
  170. model assumed for scheduling purposes.
  171. </p>
  172. <p>Specifying &lsquo;<samp>native</samp>&rsquo; as cpu type detects and selects the
  173. architecture option that corresponds to the host processor of the
  174. system performing the compilation.
  175. <samp>-mcpu=native</samp> has no effect if GCC does not recognize the
  176. processor.
  177. </p>
  178. <p>The other options specify a specific processor. Code generated under
  179. those options runs best on that processor, and may not run at all on
  180. others.
  181. </p>
  182. <p>The <samp>-mcpu</samp> options automatically enable or disable the
  183. following options:
  184. </p>
  185. <div class="smallexample">
  186. <pre class="smallexample">-maltivec -mfprnd -mhard-float -mmfcrf -mmultiple
  187. -mpopcntb -mpopcntd -mpowerpc64
  188. -mpowerpc-gpopt -mpowerpc-gfxopt
  189. -mmulhw -mdlmzb -mmfpgpr -mvsx
  190. -mcrypto -mhtm -mpower8-fusion -mpower8-vector
  191. -mquad-memory -mquad-memory-atomic -mfloat128
  192. -mfloat128-hardware -mprefixed -mpcrel -mmma
  193. </pre></div>
  194. <p>The particular options set for any particular CPU varies between
  195. compiler versions, depending on what setting seems to produce optimal
  196. code for that CPU; it doesn&rsquo;t necessarily reflect the actual hardware&rsquo;s
  197. capabilities. If you wish to set an individual option to a particular
  198. value, you may specify it after the <samp>-mcpu</samp> option, like
  199. <samp>-mcpu=970 -mno-altivec</samp>.
  200. </p>
  201. <p>On AIX, the <samp>-maltivec</samp> and <samp>-mpowerpc64</samp> options are
  202. not enabled or disabled by the <samp>-mcpu</samp> option at present because
  203. AIX does not have full support for these options. You may still
  204. enable or disable them individually if you&rsquo;re sure it&rsquo;ll work in your
  205. environment.
  206. </p>
  207. </dd>
  208. <dt><code>-mtune=<var>cpu_type</var></code></dt>
  209. <dd><a name="index-mtune-12"></a>
  210. <p>Set the instruction scheduling parameters for machine type
  211. <var>cpu_type</var>, but do not set the architecture type or register usage,
  212. as <samp>-mcpu=<var>cpu_type</var></samp> does. The same
  213. values for <var>cpu_type</var> are used for <samp>-mtune</samp> as for
  214. <samp>-mcpu</samp>. If both are specified, the code generated uses the
  215. architecture and registers set by <samp>-mcpu</samp>, but the
  216. scheduling parameters set by <samp>-mtune</samp>.
  217. </p>
  218. </dd>
  219. <dt><code>-mcmodel=small</code></dt>
  220. <dd><a name="index-mcmodel_003dsmall-1"></a>
  221. <p>Generate PowerPC64 code for the small model: The TOC is limited to
  222. 64k.
  223. </p>
  224. </dd>
  225. <dt><code>-mcmodel=medium</code></dt>
  226. <dd><a name="index-mcmodel_003dmedium"></a>
  227. <p>Generate PowerPC64 code for the medium model: The TOC and other static
  228. data may be up to a total of 4G in size. This is the default for 64-bit
  229. Linux.
  230. </p>
  231. </dd>
  232. <dt><code>-mcmodel=large</code></dt>
  233. <dd><a name="index-mcmodel_003dlarge-1"></a>
  234. <p>Generate PowerPC64 code for the large model: The TOC may be up to 4G
  235. in size. Other data and code is only limited by the 64-bit address
  236. space.
  237. </p>
  238. </dd>
  239. <dt><code>-maltivec</code></dt>
  240. <dt><code>-mno-altivec</code></dt>
  241. <dd><a name="index-maltivec"></a>
  242. <a name="index-mno_002daltivec"></a>
  243. <p>Generate code that uses (does not use) AltiVec instructions, and also
  244. enable the use of built-in functions that allow more direct access to
  245. the AltiVec instruction set. You may also need to set
  246. <samp>-mabi=altivec</samp> to adjust the current ABI with AltiVec ABI
  247. enhancements.
  248. </p>
  249. <p>When <samp>-maltivec</samp> is used, the element order for AltiVec intrinsics
  250. such as <code>vec_splat</code>, <code>vec_extract</code>, and <code>vec_insert</code>
  251. match array element order corresponding to the endianness of the
  252. target. That is, element zero identifies the leftmost element in a
  253. vector register when targeting a big-endian platform, and identifies
  254. the rightmost element in a vector register when targeting a
  255. little-endian platform.
  256. </p>
  257. </dd>
  258. <dt><code>-mvrsave</code></dt>
  259. <dt><code>-mno-vrsave</code></dt>
  260. <dd><a name="index-mvrsave"></a>
  261. <a name="index-mno_002dvrsave"></a>
  262. <p>Generate VRSAVE instructions when generating AltiVec code.
  263. </p>
  264. </dd>
  265. <dt><code>-msecure-plt</code></dt>
  266. <dd><a name="index-msecure_002dplt"></a>
  267. <p>Generate code that allows <code>ld</code> and <code>ld.so</code>
  268. to build executables and shared
  269. libraries with non-executable <code>.plt</code> and <code>.got</code> sections.
  270. This is a PowerPC
  271. 32-bit SYSV ABI option.
  272. </p>
  273. </dd>
  274. <dt><code>-mbss-plt</code></dt>
  275. <dd><a name="index-mbss_002dplt"></a>
  276. <p>Generate code that uses a BSS <code>.plt</code> section that <code>ld.so</code>
  277. fills in, and
  278. requires <code>.plt</code> and <code>.got</code>
  279. sections that are both writable and executable.
  280. This is a PowerPC 32-bit SYSV ABI option.
  281. </p>
  282. </dd>
  283. <dt><code>-misel</code></dt>
  284. <dt><code>-mno-isel</code></dt>
  285. <dd><a name="index-misel"></a>
  286. <a name="index-mno_002disel"></a>
  287. <p>This switch enables or disables the generation of ISEL instructions.
  288. </p>
  289. </dd>
  290. <dt><code>-mvsx</code></dt>
  291. <dt><code>-mno-vsx</code></dt>
  292. <dd><a name="index-mvsx"></a>
  293. <a name="index-mno_002dvsx"></a>
  294. <p>Generate code that uses (does not use) vector/scalar (VSX)
  295. instructions, and also enable the use of built-in functions that allow
  296. more direct access to the VSX instruction set.
  297. </p>
  298. </dd>
  299. <dt><code>-mcrypto</code></dt>
  300. <dt><code>-mno-crypto</code></dt>
  301. <dd><a name="index-mcrypto"></a>
  302. <a name="index-mno_002dcrypto"></a>
  303. <p>Enable the use (disable) of the built-in functions that allow direct
  304. access to the cryptographic instructions that were added in version
  305. 2.07 of the PowerPC ISA.
  306. </p>
  307. </dd>
  308. <dt><code>-mhtm</code></dt>
  309. <dt><code>-mno-htm</code></dt>
  310. <dd><a name="index-mhtm"></a>
  311. <a name="index-mno_002dhtm"></a>
  312. <p>Enable (disable) the use of the built-in functions that allow direct
  313. access to the Hardware Transactional Memory (HTM) instructions that
  314. were added in version 2.07 of the PowerPC ISA.
  315. </p>
  316. </dd>
  317. <dt><code>-mpower8-fusion</code></dt>
  318. <dt><code>-mno-power8-fusion</code></dt>
  319. <dd><a name="index-mpower8_002dfusion"></a>
  320. <a name="index-mno_002dpower8_002dfusion"></a>
  321. <p>Generate code that keeps (does not keeps) some integer operations
  322. adjacent so that the instructions can be fused together on power8 and
  323. later processors.
  324. </p>
  325. </dd>
  326. <dt><code>-mpower8-vector</code></dt>
  327. <dt><code>-mno-power8-vector</code></dt>
  328. <dd><a name="index-mpower8_002dvector"></a>
  329. <a name="index-mno_002dpower8_002dvector"></a>
  330. <p>Generate code that uses (does not use) the vector and scalar
  331. instructions that were added in version 2.07 of the PowerPC ISA. Also
  332. enable the use of built-in functions that allow more direct access to
  333. the vector instructions.
  334. </p>
  335. </dd>
  336. <dt><code>-mquad-memory</code></dt>
  337. <dt><code>-mno-quad-memory</code></dt>
  338. <dd><a name="index-mquad_002dmemory"></a>
  339. <a name="index-mno_002dquad_002dmemory"></a>
  340. <p>Generate code that uses (does not use) the non-atomic quad word memory
  341. instructions. The <samp>-mquad-memory</samp> option requires use of
  342. 64-bit mode.
  343. </p>
  344. </dd>
  345. <dt><code>-mquad-memory-atomic</code></dt>
  346. <dt><code>-mno-quad-memory-atomic</code></dt>
  347. <dd><a name="index-mquad_002dmemory_002datomic"></a>
  348. <a name="index-mno_002dquad_002dmemory_002datomic"></a>
  349. <p>Generate code that uses (does not use) the atomic quad word memory
  350. instructions. The <samp>-mquad-memory-atomic</samp> option requires use of
  351. 64-bit mode.
  352. </p>
  353. </dd>
  354. <dt><code>-mfloat128</code></dt>
  355. <dt><code>-mno-float128</code></dt>
  356. <dd><a name="index-mfloat128"></a>
  357. <a name="index-mno_002dfloat128"></a>
  358. <p>Enable/disable the <var>__float128</var> keyword for IEEE 128-bit floating point
  359. and use either software emulation for IEEE 128-bit floating point or
  360. hardware instructions.
  361. </p>
  362. <p>The VSX instruction set (<samp>-mvsx</samp>, <samp>-mcpu=power7</samp>,
  363. <samp>-mcpu=power8</samp>), or <samp>-mcpu=power9</samp> must be enabled to
  364. use the IEEE 128-bit floating point support. The IEEE 128-bit
  365. floating point support only works on PowerPC Linux systems.
  366. </p>
  367. <p>The default for <samp>-mfloat128</samp> is enabled on PowerPC Linux
  368. systems using the VSX instruction set, and disabled on other systems.
  369. </p>
  370. <p>If you use the ISA 3.0 instruction set (<samp>-mpower9-vector</samp> or
  371. <samp>-mcpu=power9</samp>) on a 64-bit system, the IEEE 128-bit floating
  372. point support will also enable the generation of ISA 3.0 IEEE 128-bit
  373. floating point instructions. Otherwise, if you do not specify to
  374. generate ISA 3.0 instructions or you are targeting a 32-bit big endian
  375. system, IEEE 128-bit floating point will be done with software
  376. emulation.
  377. </p>
  378. </dd>
  379. <dt><code>-mfloat128-hardware</code></dt>
  380. <dt><code>-mno-float128-hardware</code></dt>
  381. <dd><a name="index-mfloat128_002dhardware"></a>
  382. <a name="index-mno_002dfloat128_002dhardware"></a>
  383. <p>Enable/disable using ISA 3.0 hardware instructions to support the
  384. <var>__float128</var> data type.
  385. </p>
  386. <p>The default for <samp>-mfloat128-hardware</samp> is enabled on PowerPC
  387. Linux systems using the ISA 3.0 instruction set, and disabled on other
  388. systems.
  389. </p>
  390. </dd>
  391. <dt><code>-m32</code></dt>
  392. <dt><code>-m64</code></dt>
  393. <dd><a name="index-m32-1"></a>
  394. <a name="index-m64-1"></a>
  395. <p>Generate code for 32-bit or 64-bit environments of Darwin and SVR4
  396. targets (including GNU/Linux). The 32-bit environment sets int, long
  397. and pointer to 32 bits and generates code that runs on any PowerPC
  398. variant. The 64-bit environment sets int to 32 bits and long and
  399. pointer to 64 bits, and generates code for PowerPC64, as for
  400. <samp>-mpowerpc64</samp>.
  401. </p>
  402. </dd>
  403. <dt><code>-mfull-toc</code></dt>
  404. <dt><code>-mno-fp-in-toc</code></dt>
  405. <dt><code>-mno-sum-in-toc</code></dt>
  406. <dt><code>-mminimal-toc</code></dt>
  407. <dd><a name="index-mfull_002dtoc"></a>
  408. <a name="index-mno_002dfp_002din_002dtoc"></a>
  409. <a name="index-mno_002dsum_002din_002dtoc"></a>
  410. <a name="index-mminimal_002dtoc"></a>
  411. <p>Modify generation of the TOC (Table Of Contents), which is created for
  412. every executable file. The <samp>-mfull-toc</samp> option is selected by
  413. default. In that case, GCC allocates at least one TOC entry for
  414. each unique non-automatic variable reference in your program. GCC
  415. also places floating-point constants in the TOC. However, only
  416. 16,384 entries are available in the TOC.
  417. </p>
  418. <p>If you receive a linker error message that saying you have overflowed
  419. the available TOC space, you can reduce the amount of TOC space used
  420. with the <samp>-mno-fp-in-toc</samp> and <samp>-mno-sum-in-toc</samp> options.
  421. <samp>-mno-fp-in-toc</samp> prevents GCC from putting floating-point
  422. constants in the TOC and <samp>-mno-sum-in-toc</samp> forces GCC to
  423. generate code to calculate the sum of an address and a constant at
  424. run time instead of putting that sum into the TOC. You may specify one
  425. or both of these options. Each causes GCC to produce very slightly
  426. slower and larger code at the expense of conserving TOC space.
  427. </p>
  428. <p>If you still run out of space in the TOC even when you specify both of
  429. these options, specify <samp>-mminimal-toc</samp> instead. This option causes
  430. GCC to make only one TOC entry for every file. When you specify this
  431. option, GCC produces code that is slower and larger but which
  432. uses extremely little TOC space. You may wish to use this option
  433. only on files that contain less frequently-executed code.
  434. </p>
  435. </dd>
  436. <dt><code>-maix64</code></dt>
  437. <dt><code>-maix32</code></dt>
  438. <dd><a name="index-maix64"></a>
  439. <a name="index-maix32"></a>
  440. <p>Enable 64-bit AIX ABI and calling convention: 64-bit pointers, 64-bit
  441. <code>long</code> type, and the infrastructure needed to support them.
  442. Specifying <samp>-maix64</samp> implies <samp>-mpowerpc64</samp>,
  443. while <samp>-maix32</samp> disables the 64-bit ABI and
  444. implies <samp>-mno-powerpc64</samp>. GCC defaults to <samp>-maix32</samp>.
  445. </p>
  446. </dd>
  447. <dt><code>-mxl-compat</code></dt>
  448. <dt><code>-mno-xl-compat</code></dt>
  449. <dd><a name="index-mxl_002dcompat"></a>
  450. <a name="index-mno_002dxl_002dcompat"></a>
  451. <p>Produce code that conforms more closely to IBM XL compiler semantics
  452. when using AIX-compatible ABI. Pass floating-point arguments to
  453. prototyped functions beyond the register save area (RSA) on the stack
  454. in addition to argument FPRs. Do not assume that most significant
  455. double in 128-bit long double value is properly rounded when comparing
  456. values and converting to double. Use XL symbol names for long double
  457. support routines.
  458. </p>
  459. <p>The AIX calling convention was extended but not initially documented to
  460. handle an obscure K&amp;R C case of calling a function that takes the
  461. address of its arguments with fewer arguments than declared. IBM XL
  462. compilers access floating-point arguments that do not fit in the
  463. RSA from the stack when a subroutine is compiled without
  464. optimization. Because always storing floating-point arguments on the
  465. stack is inefficient and rarely needed, this option is not enabled by
  466. default and only is necessary when calling subroutines compiled by IBM
  467. XL compilers without optimization.
  468. </p>
  469. </dd>
  470. <dt><code>-mpe</code></dt>
  471. <dd><a name="index-mpe"></a>
  472. <p>Support <em>IBM RS/6000 SP</em> <em>Parallel Environment</em> (PE). Link an
  473. application written to use message passing with special startup code to
  474. enable the application to run. The system must have PE installed in the
  475. standard location (<samp>/usr/lpp/ppe.poe/</samp>), or the <samp>specs</samp> file
  476. must be overridden with the <samp>-specs=</samp> option to specify the
  477. appropriate directory location. The Parallel Environment does not
  478. support threads, so the <samp>-mpe</samp> option and the <samp>-pthread</samp>
  479. option are incompatible.
  480. </p>
  481. </dd>
  482. <dt><code>-malign-natural</code></dt>
  483. <dt><code>-malign-power</code></dt>
  484. <dd><a name="index-malign_002dnatural"></a>
  485. <a name="index-malign_002dpower"></a>
  486. <p>On AIX, 32-bit Darwin, and 64-bit PowerPC GNU/Linux, the option
  487. <samp>-malign-natural</samp> overrides the ABI-defined alignment of larger
  488. types, such as floating-point doubles, on their natural size-based boundary.
  489. The option <samp>-malign-power</samp> instructs GCC to follow the ABI-specified
  490. alignment rules. GCC defaults to the standard alignment defined in the ABI.
  491. </p>
  492. <p>On 64-bit Darwin, natural alignment is the default, and <samp>-malign-power</samp>
  493. is not supported.
  494. </p>
  495. </dd>
  496. <dt><code>-msoft-float</code></dt>
  497. <dt><code>-mhard-float</code></dt>
  498. <dd><a name="index-msoft_002dfloat-10"></a>
  499. <a name="index-mhard_002dfloat-6"></a>
  500. <p>Generate code that does not use (uses) the floating-point register set.
  501. Software floating-point emulation is provided if you use the
  502. <samp>-msoft-float</samp> option, and pass the option to GCC when linking.
  503. </p>
  504. </dd>
  505. <dt><code>-mmultiple</code></dt>
  506. <dt><code>-mno-multiple</code></dt>
  507. <dd><a name="index-mmultiple"></a>
  508. <a name="index-mno_002dmultiple"></a>
  509. <p>Generate code that uses (does not use) the load multiple word
  510. instructions and the store multiple word instructions. These
  511. instructions are generated by default on POWER systems, and not
  512. generated on PowerPC systems. Do not use <samp>-mmultiple</samp> on little-endian
  513. PowerPC systems, since those instructions do not work when the
  514. processor is in little-endian mode. The exceptions are PPC740 and
  515. PPC750 which permit these instructions in little-endian mode.
  516. </p>
  517. </dd>
  518. <dt><code>-mupdate</code></dt>
  519. <dt><code>-mno-update</code></dt>
  520. <dd><a name="index-mupdate"></a>
  521. <a name="index-mno_002dupdate"></a>
  522. <p>Generate code that uses (does not use) the load or store instructions
  523. that update the base register to the address of the calculated memory
  524. location. These instructions are generated by default. If you use
  525. <samp>-mno-update</samp>, there is a small window between the time that the
  526. stack pointer is updated and the address of the previous frame is
  527. stored, which means code that walks the stack frame across interrupts or
  528. signals may get corrupted data.
  529. </p>
  530. </dd>
  531. <dt><code>-mavoid-indexed-addresses</code></dt>
  532. <dt><code>-mno-avoid-indexed-addresses</code></dt>
  533. <dd><a name="index-mavoid_002dindexed_002daddresses"></a>
  534. <a name="index-mno_002davoid_002dindexed_002daddresses"></a>
  535. <p>Generate code that tries to avoid (not avoid) the use of indexed load
  536. or store instructions. These instructions can incur a performance
  537. penalty on Power6 processors in certain situations, such as when
  538. stepping through large arrays that cross a 16M boundary. This option
  539. is enabled by default when targeting Power6 and disabled otherwise.
  540. </p>
  541. </dd>
  542. <dt><code>-mfused-madd</code></dt>
  543. <dt><code>-mno-fused-madd</code></dt>
  544. <dd><a name="index-mfused_002dmadd-2"></a>
  545. <a name="index-mno_002dfused_002dmadd-2"></a>
  546. <p>Generate code that uses (does not use) the floating-point multiply and
  547. accumulate instructions. These instructions are generated by default
  548. if hardware floating point is used. The machine-dependent
  549. <samp>-mfused-madd</samp> option is now mapped to the machine-independent
  550. <samp>-ffp-contract=fast</samp> option, and <samp>-mno-fused-madd</samp> is
  551. mapped to <samp>-ffp-contract=off</samp>.
  552. </p>
  553. </dd>
  554. <dt><code>-mmulhw</code></dt>
  555. <dt><code>-mno-mulhw</code></dt>
  556. <dd><a name="index-mmulhw"></a>
  557. <a name="index-mno_002dmulhw"></a>
  558. <p>Generate code that uses (does not use) the half-word multiply and
  559. multiply-accumulate instructions on the IBM 405, 440, 464 and 476 processors.
  560. These instructions are generated by default when targeting those
  561. processors.
  562. </p>
  563. </dd>
  564. <dt><code>-mdlmzb</code></dt>
  565. <dt><code>-mno-dlmzb</code></dt>
  566. <dd><a name="index-mdlmzb"></a>
  567. <a name="index-mno_002ddlmzb"></a>
  568. <p>Generate code that uses (does not use) the string-search &lsquo;<samp>dlmzb</samp>&rsquo;
  569. instruction on the IBM 405, 440, 464 and 476 processors. This instruction is
  570. generated by default when targeting those processors.
  571. </p>
  572. </dd>
  573. <dt><code>-mno-bit-align</code></dt>
  574. <dt><code>-mbit-align</code></dt>
  575. <dd><a name="index-mno_002dbit_002dalign"></a>
  576. <a name="index-mbit_002dalign"></a>
  577. <p>On System V.4 and embedded PowerPC systems do not (do) force structures
  578. and unions that contain bit-fields to be aligned to the base type of the
  579. bit-field.
  580. </p>
  581. <p>For example, by default a structure containing nothing but 8
  582. <code>unsigned</code> bit-fields of length 1 is aligned to a 4-byte
  583. boundary and has a size of 4 bytes. By using <samp>-mno-bit-align</samp>,
  584. the structure is aligned to a 1-byte boundary and is 1 byte in
  585. size.
  586. </p>
  587. </dd>
  588. <dt><code>-mno-strict-align</code></dt>
  589. <dt><code>-mstrict-align</code></dt>
  590. <dd><a name="index-mno_002dstrict_002dalign-2"></a>
  591. <a name="index-mstrict_002dalign-3"></a>
  592. <p>On System V.4 and embedded PowerPC systems do not (do) assume that
  593. unaligned memory references are handled by the system.
  594. </p>
  595. </dd>
  596. <dt><code>-mrelocatable</code></dt>
  597. <dt><code>-mno-relocatable</code></dt>
  598. <dd><a name="index-mrelocatable"></a>
  599. <a name="index-mno_002drelocatable"></a>
  600. <p>Generate code that allows (does not allow) a static executable to be
  601. relocated to a different address at run time. A simple embedded
  602. PowerPC system loader should relocate the entire contents of
  603. <code>.got2</code> and 4-byte locations listed in the <code>.fixup</code> section,
  604. a table of 32-bit addresses generated by this option. For this to
  605. work, all objects linked together must be compiled with
  606. <samp>-mrelocatable</samp> or <samp>-mrelocatable-lib</samp>.
  607. <samp>-mrelocatable</samp> code aligns the stack to an 8-byte boundary.
  608. </p>
  609. </dd>
  610. <dt><code>-mrelocatable-lib</code></dt>
  611. <dt><code>-mno-relocatable-lib</code></dt>
  612. <dd><a name="index-mrelocatable_002dlib"></a>
  613. <a name="index-mno_002drelocatable_002dlib"></a>
  614. <p>Like <samp>-mrelocatable</samp>, <samp>-mrelocatable-lib</samp> generates a
  615. <code>.fixup</code> section to allow static executables to be relocated at
  616. run time, but <samp>-mrelocatable-lib</samp> does not use the smaller stack
  617. alignment of <samp>-mrelocatable</samp>. Objects compiled with
  618. <samp>-mrelocatable-lib</samp> may be linked with objects compiled with
  619. any combination of the <samp>-mrelocatable</samp> options.
  620. </p>
  621. </dd>
  622. <dt><code>-mno-toc</code></dt>
  623. <dt><code>-mtoc</code></dt>
  624. <dd><a name="index-mno_002dtoc"></a>
  625. <a name="index-mtoc"></a>
  626. <p>On System V.4 and embedded PowerPC systems do not (do) assume that
  627. register 2 contains a pointer to a global area pointing to the addresses
  628. used in the program.
  629. </p>
  630. </dd>
  631. <dt><code>-mlittle</code></dt>
  632. <dt><code>-mlittle-endian</code></dt>
  633. <dd><a name="index-mlittle"></a>
  634. <a name="index-mlittle_002dendian-10"></a>
  635. <p>On System V.4 and embedded PowerPC systems compile code for the
  636. processor in little-endian mode. The <samp>-mlittle-endian</samp> option is
  637. the same as <samp>-mlittle</samp>.
  638. </p>
  639. </dd>
  640. <dt><code>-mbig</code></dt>
  641. <dt><code>-mbig-endian</code></dt>
  642. <dd><a name="index-mbig"></a>
  643. <a name="index-mbig_002dendian-10"></a>
  644. <p>On System V.4 and embedded PowerPC systems compile code for the
  645. processor in big-endian mode. The <samp>-mbig-endian</samp> option is
  646. the same as <samp>-mbig</samp>.
  647. </p>
  648. </dd>
  649. <dt><code>-mdynamic-no-pic</code></dt>
  650. <dd><a name="index-mdynamic_002dno_002dpic"></a>
  651. <p>On Darwin and Mac OS X systems, compile code so that it is not
  652. relocatable, but that its external references are relocatable. The
  653. resulting code is suitable for applications, but not shared
  654. libraries.
  655. </p>
  656. </dd>
  657. <dt><code>-msingle-pic-base</code></dt>
  658. <dd><a name="index-msingle_002dpic_002dbase-1"></a>
  659. <p>Treat the register used for PIC addressing as read-only, rather than
  660. loading it in the prologue for each function. The runtime system is
  661. responsible for initializing this register with an appropriate value
  662. before execution begins.
  663. </p>
  664. </dd>
  665. <dt><code>-mprioritize-restricted-insns=<var>priority</var></code></dt>
  666. <dd><a name="index-mprioritize_002drestricted_002dinsns"></a>
  667. <p>This option controls the priority that is assigned to
  668. dispatch-slot restricted instructions during the second scheduling
  669. pass. The argument <var>priority</var> takes the value &lsquo;<samp>0</samp>&rsquo;, &lsquo;<samp>1</samp>&rsquo;,
  670. or &lsquo;<samp>2</samp>&rsquo; to assign no, highest, or second-highest (respectively)
  671. priority to dispatch-slot restricted
  672. instructions.
  673. </p>
  674. </dd>
  675. <dt><code>-msched-costly-dep=<var>dependence_type</var></code></dt>
  676. <dd><a name="index-msched_002dcostly_002ddep"></a>
  677. <p>This option controls which dependences are considered costly
  678. by the target during instruction scheduling. The argument
  679. <var>dependence_type</var> takes one of the following values:
  680. </p>
  681. <dl compact="compact">
  682. <dt>&lsquo;<samp>no</samp>&rsquo;</dt>
  683. <dd><p>No dependence is costly.
  684. </p>
  685. </dd>
  686. <dt>&lsquo;<samp>all</samp>&rsquo;</dt>
  687. <dd><p>All dependences are costly.
  688. </p>
  689. </dd>
  690. <dt>&lsquo;<samp>true_store_to_load</samp>&rsquo;</dt>
  691. <dd><p>A true dependence from store to load is costly.
  692. </p>
  693. </dd>
  694. <dt>&lsquo;<samp>store_to_load</samp>&rsquo;</dt>
  695. <dd><p>Any dependence from store to load is costly.
  696. </p>
  697. </dd>
  698. <dt><var>number</var></dt>
  699. <dd><p>Any dependence for which the latency is greater than or equal to
  700. <var>number</var> is costly.
  701. </p></dd>
  702. </dl>
  703. </dd>
  704. <dt><code>-minsert-sched-nops=<var>scheme</var></code></dt>
  705. <dd><a name="index-minsert_002dsched_002dnops"></a>
  706. <p>This option controls which NOP insertion scheme is used during
  707. the second scheduling pass. The argument <var>scheme</var> takes one of the
  708. following values:
  709. </p>
  710. <dl compact="compact">
  711. <dt>&lsquo;<samp>no</samp>&rsquo;</dt>
  712. <dd><p>Don&rsquo;t insert NOPs.
  713. </p>
  714. </dd>
  715. <dt>&lsquo;<samp>pad</samp>&rsquo;</dt>
  716. <dd><p>Pad with NOPs any dispatch group that has vacant issue slots,
  717. according to the scheduler&rsquo;s grouping.
  718. </p>
  719. </dd>
  720. <dt>&lsquo;<samp>regroup_exact</samp>&rsquo;</dt>
  721. <dd><p>Insert NOPs to force costly dependent insns into
  722. separate groups. Insert exactly as many NOPs as needed to force an insn
  723. to a new group, according to the estimated processor grouping.
  724. </p>
  725. </dd>
  726. <dt><var>number</var></dt>
  727. <dd><p>Insert NOPs to force costly dependent insns into
  728. separate groups. Insert <var>number</var> NOPs to force an insn to a new group.
  729. </p></dd>
  730. </dl>
  731. </dd>
  732. <dt><code>-mcall-sysv</code></dt>
  733. <dd><a name="index-mcall_002dsysv"></a>
  734. <p>On System V.4 and embedded PowerPC systems compile code using calling
  735. conventions that adhere to the March 1995 draft of the System V
  736. Application Binary Interface, PowerPC processor supplement. This is the
  737. default unless you configured GCC using &lsquo;<samp>powerpc-*-eabiaix</samp>&rsquo;.
  738. </p>
  739. </dd>
  740. <dt><code>-mcall-sysv-eabi</code></dt>
  741. <dt><code>-mcall-eabi</code></dt>
  742. <dd><a name="index-mcall_002dsysv_002deabi"></a>
  743. <a name="index-mcall_002deabi"></a>
  744. <p>Specify both <samp>-mcall-sysv</samp> and <samp>-meabi</samp> options.
  745. </p>
  746. </dd>
  747. <dt><code>-mcall-sysv-noeabi</code></dt>
  748. <dd><a name="index-mcall_002dsysv_002dnoeabi"></a>
  749. <p>Specify both <samp>-mcall-sysv</samp> and <samp>-mno-eabi</samp> options.
  750. </p>
  751. </dd>
  752. <dt><code>-mcall-aixdesc</code></dt>
  753. <dd><a name="index-m"></a>
  754. <p>On System V.4 and embedded PowerPC systems compile code for the AIX
  755. operating system.
  756. </p>
  757. </dd>
  758. <dt><code>-mcall-linux</code></dt>
  759. <dd><a name="index-mcall_002dlinux"></a>
  760. <p>On System V.4 and embedded PowerPC systems compile code for the
  761. Linux-based GNU system.
  762. </p>
  763. </dd>
  764. <dt><code>-mcall-freebsd</code></dt>
  765. <dd><a name="index-mcall_002dfreebsd"></a>
  766. <p>On System V.4 and embedded PowerPC systems compile code for the
  767. FreeBSD operating system.
  768. </p>
  769. </dd>
  770. <dt><code>-mcall-netbsd</code></dt>
  771. <dd><a name="index-mcall_002dnetbsd"></a>
  772. <p>On System V.4 and embedded PowerPC systems compile code for the
  773. NetBSD operating system.
  774. </p>
  775. </dd>
  776. <dt><code>-mcall-openbsd</code></dt>
  777. <dd><a name="index-mcall_002dnetbsd-1"></a>
  778. <p>On System V.4 and embedded PowerPC systems compile code for the
  779. OpenBSD operating system.
  780. </p>
  781. </dd>
  782. <dt><code>-mtraceback=<var>traceback_type</var></code></dt>
  783. <dd><a name="index-mtraceback"></a>
  784. <p>Select the type of traceback table. Valid values for <var>traceback_type</var>
  785. are &lsquo;<samp>full</samp>&rsquo;, &lsquo;<samp>part</samp>&rsquo;, and &lsquo;<samp>no</samp>&rsquo;.
  786. </p>
  787. </dd>
  788. <dt><code>-maix-struct-return</code></dt>
  789. <dd><a name="index-maix_002dstruct_002dreturn"></a>
  790. <p>Return all structures in memory (as specified by the AIX ABI).
  791. </p>
  792. </dd>
  793. <dt><code>-msvr4-struct-return</code></dt>
  794. <dd><a name="index-msvr4_002dstruct_002dreturn"></a>
  795. <p>Return structures smaller than 8 bytes in registers (as specified by the
  796. SVR4 ABI).
  797. </p>
  798. </dd>
  799. <dt><code>-mabi=<var>abi-type</var></code></dt>
  800. <dd><a name="index-mabi-4"></a>
  801. <p>Extend the current ABI with a particular extension, or remove such extension.
  802. Valid values are &lsquo;<samp>altivec</samp>&rsquo;, &lsquo;<samp>no-altivec</samp>&rsquo;,
  803. &lsquo;<samp>ibmlongdouble</samp>&rsquo;, &lsquo;<samp>ieeelongdouble</samp>&rsquo;,
  804. &lsquo;<samp>elfv1</samp>&rsquo;, &lsquo;<samp>elfv2</samp>&rsquo;.
  805. </p>
  806. </dd>
  807. <dt><code>-mabi=ibmlongdouble</code></dt>
  808. <dd><a name="index-mabi_003dibmlongdouble"></a>
  809. <p>Change the current ABI to use IBM extended-precision long double.
  810. This is not likely to work if your system defaults to using IEEE
  811. extended-precision long double. If you change the long double type
  812. from IEEE extended-precision, the compiler will issue a warning unless
  813. you use the <samp>-Wno-psabi</samp> option. Requires <samp>-mlong-double-128</samp>
  814. to be enabled.
  815. </p>
  816. </dd>
  817. <dt><code>-mabi=ieeelongdouble</code></dt>
  818. <dd><a name="index-mabi_003dieeelongdouble"></a>
  819. <p>Change the current ABI to use IEEE extended-precision long double.
  820. This is not likely to work if your system defaults to using IBM
  821. extended-precision long double. If you change the long double type
  822. from IBM extended-precision, the compiler will issue a warning unless
  823. you use the <samp>-Wno-psabi</samp> option. Requires <samp>-mlong-double-128</samp>
  824. to be enabled.
  825. </p>
  826. </dd>
  827. <dt><code>-mabi=elfv1</code></dt>
  828. <dd><a name="index-mabi_003delfv1"></a>
  829. <p>Change the current ABI to use the ELFv1 ABI.
  830. This is the default ABI for big-endian PowerPC 64-bit Linux.
  831. Overriding the default ABI requires special system support and is
  832. likely to fail in spectacular ways.
  833. </p>
  834. </dd>
  835. <dt><code>-mabi=elfv2</code></dt>
  836. <dd><a name="index-mabi_003delfv2"></a>
  837. <p>Change the current ABI to use the ELFv2 ABI.
  838. This is the default ABI for little-endian PowerPC 64-bit Linux.
  839. Overriding the default ABI requires special system support and is
  840. likely to fail in spectacular ways.
  841. </p>
  842. </dd>
  843. <dt><code>-mgnu-attribute</code></dt>
  844. <dt><code>-mno-gnu-attribute</code></dt>
  845. <dd><a name="index-mgnu_002dattribute"></a>
  846. <a name="index-mno_002dgnu_002dattribute"></a>
  847. <p>Emit .gnu_attribute assembly directives to set tag/value pairs in a
  848. .gnu.attributes section that specify ABI variations in function
  849. parameters or return values.
  850. </p>
  851. </dd>
  852. <dt><code>-mprototype</code></dt>
  853. <dt><code>-mno-prototype</code></dt>
  854. <dd><a name="index-mprototype"></a>
  855. <a name="index-mno_002dprototype"></a>
  856. <p>On System V.4 and embedded PowerPC systems assume that all calls to
  857. variable argument functions are properly prototyped. Otherwise, the
  858. compiler must insert an instruction before every non-prototyped call to
  859. set or clear bit 6 of the condition code register (<code>CR</code>) to
  860. indicate whether floating-point values are passed in the floating-point
  861. registers in case the function takes variable arguments. With
  862. <samp>-mprototype</samp>, only calls to prototyped variable argument functions
  863. set or clear the bit.
  864. </p>
  865. </dd>
  866. <dt><code>-msim</code></dt>
  867. <dd><a name="index-msim-8"></a>
  868. <p>On embedded PowerPC systems, assume that the startup module is called
  869. <samp>sim-crt0.o</samp> and that the standard C libraries are <samp>libsim.a</samp> and
  870. <samp>libc.a</samp>. This is the default for &lsquo;<samp>powerpc-*-eabisim</samp>&rsquo;
  871. configurations.
  872. </p>
  873. </dd>
  874. <dt><code>-mmvme</code></dt>
  875. <dd><a name="index-mmvme"></a>
  876. <p>On embedded PowerPC systems, assume that the startup module is called
  877. <samp>crt0.o</samp> and the standard C libraries are <samp>libmvme.a</samp> and
  878. <samp>libc.a</samp>.
  879. </p>
  880. </dd>
  881. <dt><code>-mads</code></dt>
  882. <dd><a name="index-mads"></a>
  883. <p>On embedded PowerPC systems, assume that the startup module is called
  884. <samp>crt0.o</samp> and the standard C libraries are <samp>libads.a</samp> and
  885. <samp>libc.a</samp>.
  886. </p>
  887. </dd>
  888. <dt><code>-myellowknife</code></dt>
  889. <dd><a name="index-myellowknife"></a>
  890. <p>On embedded PowerPC systems, assume that the startup module is called
  891. <samp>crt0.o</samp> and the standard C libraries are <samp>libyk.a</samp> and
  892. <samp>libc.a</samp>.
  893. </p>
  894. </dd>
  895. <dt><code>-mvxworks</code></dt>
  896. <dd><a name="index-mvxworks"></a>
  897. <p>On System V.4 and embedded PowerPC systems, specify that you are
  898. compiling for a VxWorks system.
  899. </p>
  900. </dd>
  901. <dt><code>-memb</code></dt>
  902. <dd><a name="index-memb"></a>
  903. <p>On embedded PowerPC systems, set the <code>PPC_EMB</code> bit in the ELF flags
  904. header to indicate that &lsquo;<samp>eabi</samp>&rsquo; extended relocations are used.
  905. </p>
  906. </dd>
  907. <dt><code>-meabi</code></dt>
  908. <dt><code>-mno-eabi</code></dt>
  909. <dd><a name="index-meabi"></a>
  910. <a name="index-mno_002deabi"></a>
  911. <p>On System V.4 and embedded PowerPC systems do (do not) adhere to the
  912. Embedded Applications Binary Interface (EABI), which is a set of
  913. modifications to the System V.4 specifications. Selecting <samp>-meabi</samp>
  914. means that the stack is aligned to an 8-byte boundary, a function
  915. <code>__eabi</code> is called from <code>main</code> to set up the EABI
  916. environment, and the <samp>-msdata</samp> option can use both <code>r2</code> and
  917. <code>r13</code> to point to two separate small data areas. Selecting
  918. <samp>-mno-eabi</samp> means that the stack is aligned to a 16-byte boundary,
  919. no EABI initialization function is called from <code>main</code>, and the
  920. <samp>-msdata</samp> option only uses <code>r13</code> to point to a single
  921. small data area. The <samp>-meabi</samp> option is on by default if you
  922. configured GCC using one of the &lsquo;<samp>powerpc*-*-eabi*</samp>&rsquo; options.
  923. </p>
  924. </dd>
  925. <dt><code>-msdata=eabi</code></dt>
  926. <dd><a name="index-msdata_003deabi"></a>
  927. <p>On System V.4 and embedded PowerPC systems, put small initialized
  928. <code>const</code> global and static data in the <code>.sdata2</code> section, which
  929. is pointed to by register <code>r2</code>. Put small initialized
  930. non-<code>const</code> global and static data in the <code>.sdata</code> section,
  931. which is pointed to by register <code>r13</code>. Put small uninitialized
  932. global and static data in the <code>.sbss</code> section, which is adjacent to
  933. the <code>.sdata</code> section. The <samp>-msdata=eabi</samp> option is
  934. incompatible with the <samp>-mrelocatable</samp> option. The
  935. <samp>-msdata=eabi</samp> option also sets the <samp>-memb</samp> option.
  936. </p>
  937. </dd>
  938. <dt><code>-msdata=sysv</code></dt>
  939. <dd><a name="index-msdata_003dsysv"></a>
  940. <p>On System V.4 and embedded PowerPC systems, put small global and static
  941. data in the <code>.sdata</code> section, which is pointed to by register
  942. <code>r13</code>. Put small uninitialized global and static data in the
  943. <code>.sbss</code> section, which is adjacent to the <code>.sdata</code> section.
  944. The <samp>-msdata=sysv</samp> option is incompatible with the
  945. <samp>-mrelocatable</samp> option.
  946. </p>
  947. </dd>
  948. <dt><code>-msdata=default</code></dt>
  949. <dt><code>-msdata</code></dt>
  950. <dd><a name="index-msdata_003ddefault-1"></a>
  951. <a name="index-msdata-2"></a>
  952. <p>On System V.4 and embedded PowerPC systems, if <samp>-meabi</samp> is used,
  953. compile code the same as <samp>-msdata=eabi</samp>, otherwise compile code the
  954. same as <samp>-msdata=sysv</samp>.
  955. </p>
  956. </dd>
  957. <dt><code>-msdata=data</code></dt>
  958. <dd><a name="index-msdata_003ddata"></a>
  959. <p>On System V.4 and embedded PowerPC systems, put small global
  960. data in the <code>.sdata</code> section. Put small uninitialized global
  961. data in the <code>.sbss</code> section. Do not use register <code>r13</code>
  962. to address small data however. This is the default behavior unless
  963. other <samp>-msdata</samp> options are used.
  964. </p>
  965. </dd>
  966. <dt><code>-msdata=none</code></dt>
  967. <dt><code>-mno-sdata</code></dt>
  968. <dd><a name="index-msdata_003dnone-2"></a>
  969. <a name="index-mno_002dsdata-2"></a>
  970. <p>On embedded PowerPC systems, put all initialized global and static data
  971. in the <code>.data</code> section, and all uninitialized data in the
  972. <code>.bss</code> section.
  973. </p>
  974. </dd>
  975. <dt><code>-mreadonly-in-sdata</code></dt>
  976. <dd><a name="index-mreadonly_002din_002dsdata"></a>
  977. <a name="index-mno_002dreadonly_002din_002dsdata"></a>
  978. <p>Put read-only objects in the <code>.sdata</code> section as well. This is the
  979. default.
  980. </p>
  981. </dd>
  982. <dt><code>-mblock-move-inline-limit=<var>num</var></code></dt>
  983. <dd><a name="index-mblock_002dmove_002dinline_002dlimit"></a>
  984. <p>Inline all block moves (such as calls to <code>memcpy</code> or structure
  985. copies) less than or equal to <var>num</var> bytes. The minimum value for
  986. <var>num</var> is 32 bytes on 32-bit targets and 64 bytes on 64-bit
  987. targets. The default value is target-specific.
  988. </p>
  989. </dd>
  990. <dt><code>-mblock-compare-inline-limit=<var>num</var></code></dt>
  991. <dd><a name="index-mblock_002dcompare_002dinline_002dlimit"></a>
  992. <p>Generate non-looping inline code for all block compares (such as calls
  993. to <code>memcmp</code> or structure compares) less than or equal to <var>num</var>
  994. bytes. If <var>num</var> is 0, all inline expansion (non-loop and loop) of
  995. block compare is disabled. The default value is target-specific.
  996. </p>
  997. </dd>
  998. <dt><code>-mblock-compare-inline-loop-limit=<var>num</var></code></dt>
  999. <dd><a name="index-mblock_002dcompare_002dinline_002dloop_002dlimit"></a>
  1000. <p>Generate an inline expansion using loop code for all block compares that
  1001. are less than or equal to <var>num</var> bytes, but greater than the limit
  1002. for non-loop inline block compare expansion. If the block length is not
  1003. constant, at most <var>num</var> bytes will be compared before <code>memcmp</code>
  1004. is called to compare the remainder of the block. The default value is
  1005. target-specific.
  1006. </p>
  1007. </dd>
  1008. <dt><code>-mstring-compare-inline-limit=<var>num</var></code></dt>
  1009. <dd><a name="index-mstring_002dcompare_002dinline_002dlimit"></a>
  1010. <p>Compare at most <var>num</var> string bytes with inline code.
  1011. If the difference or end of string is not found at the
  1012. end of the inline compare a call to <code>strcmp</code> or <code>strncmp</code> will
  1013. take care of the rest of the comparison. The default is 64 bytes.
  1014. </p>
  1015. </dd>
  1016. <dt><code>-G <var>num</var></code></dt>
  1017. <dd><a name="index-G-4"></a>
  1018. <a name="index-smaller-data-references-_0028PowerPC_0029"></a>
  1019. <a name="index-_002esdata_002f_002esdata2-references-_0028PowerPC_0029"></a>
  1020. <p>On embedded PowerPC systems, put global and static items less than or
  1021. equal to <var>num</var> bytes into the small data or BSS sections instead of
  1022. the normal data or BSS section. By default, <var>num</var> is 8. The
  1023. <samp>-G <var>num</var></samp> switch is also passed to the linker.
  1024. All modules should be compiled with the same <samp>-G <var>num</var></samp> value.
  1025. </p>
  1026. </dd>
  1027. <dt><code>-mregnames</code></dt>
  1028. <dt><code>-mno-regnames</code></dt>
  1029. <dd><a name="index-mregnames"></a>
  1030. <a name="index-mno_002dregnames"></a>
  1031. <p>On System V.4 and embedded PowerPC systems do (do not) emit register
  1032. names in the assembly language output using symbolic forms.
  1033. </p>
  1034. </dd>
  1035. <dt><code>-mlongcall</code></dt>
  1036. <dt><code>-mno-longcall</code></dt>
  1037. <dd><a name="index-mlongcall"></a>
  1038. <a name="index-mno_002dlongcall"></a>
  1039. <p>By default assume that all calls are far away so that a longer and more
  1040. expensive calling sequence is required. This is required for calls
  1041. farther than 32 megabytes (33,554,432 bytes) from the current location.
  1042. A short call is generated if the compiler knows
  1043. the call cannot be that far away. This setting can be overridden by
  1044. the <code>shortcall</code> function attribute, or by <code>#pragma
  1045. longcall(0)</code>.
  1046. </p>
  1047. <p>Some linkers are capable of detecting out-of-range calls and generating
  1048. glue code on the fly. On these systems, long calls are unnecessary and
  1049. generate slower code. As of this writing, the AIX linker can do this,
  1050. as can the GNU linker for PowerPC/64. It is planned to add this feature
  1051. to the GNU linker for 32-bit PowerPC systems as well.
  1052. </p>
  1053. <p>On PowerPC64 ELFv2 and 32-bit PowerPC systems with newer GNU linkers,
  1054. GCC can generate long calls using an inline PLT call sequence (see
  1055. <samp>-mpltseq</samp>). PowerPC with <samp>-mbss-plt</samp> and PowerPC64
  1056. ELFv1 (big-endian) do not support inline PLT calls.
  1057. </p>
  1058. <p>On Darwin/PPC systems, <code>#pragma longcall</code> generates <code>jbsr
  1059. callee, L42</code>, plus a <em>branch island</em> (glue code). The two target
  1060. addresses represent the callee and the branch island. The
  1061. Darwin/PPC linker prefers the first address and generates a <code>bl
  1062. callee</code> if the PPC <code>bl</code> instruction reaches the callee directly;
  1063. otherwise, the linker generates <code>bl L42</code> to call the branch
  1064. island. The branch island is appended to the body of the
  1065. calling function; it computes the full 32-bit address of the callee
  1066. and jumps to it.
  1067. </p>
  1068. <p>On Mach-O (Darwin) systems, this option directs the compiler emit to
  1069. the glue for every direct call, and the Darwin linker decides whether
  1070. to use or discard it.
  1071. </p>
  1072. <p>In the future, GCC may ignore all longcall specifications
  1073. when the linker is known to generate glue.
  1074. </p>
  1075. </dd>
  1076. <dt><code>-mpltseq</code></dt>
  1077. <dt><code>-mno-pltseq</code></dt>
  1078. <dd><a name="index-mpltseq"></a>
  1079. <a name="index-mno_002dpltseq"></a>
  1080. <p>Implement (do not implement) -fno-plt and long calls using an inline
  1081. PLT call sequence that supports lazy linking and long calls to
  1082. functions in dlopen&rsquo;d shared libraries. Inline PLT calls are only
  1083. supported on PowerPC64 ELFv2 and 32-bit PowerPC systems with newer GNU
  1084. linkers, and are enabled by default if the support is detected when
  1085. configuring GCC, and, in the case of 32-bit PowerPC, if GCC is
  1086. configured with <samp>--enable-secureplt</samp>. <samp>-mpltseq</samp> code
  1087. and <samp>-mbss-plt</samp> 32-bit PowerPC relocatable objects may not be
  1088. linked together.
  1089. </p>
  1090. </dd>
  1091. <dt><code>-mtls-markers</code></dt>
  1092. <dt><code>-mno-tls-markers</code></dt>
  1093. <dd><a name="index-mtls_002dmarkers"></a>
  1094. <a name="index-mno_002dtls_002dmarkers"></a>
  1095. <p>Mark (do not mark) calls to <code>__tls_get_addr</code> with a relocation
  1096. specifying the function argument. The relocation allows the linker to
  1097. reliably associate function call with argument setup instructions for
  1098. TLS optimization, which in turn allows GCC to better schedule the
  1099. sequence.
  1100. </p>
  1101. </dd>
  1102. <dt><code>-mrecip</code></dt>
  1103. <dt><code>-mno-recip</code></dt>
  1104. <dd><a name="index-mrecip"></a>
  1105. <p>This option enables use of the reciprocal estimate and
  1106. reciprocal square root estimate instructions with additional
  1107. Newton-Raphson steps to increase precision instead of doing a divide or
  1108. square root and divide for floating-point arguments. You should use
  1109. the <samp>-ffast-math</samp> option when using <samp>-mrecip</samp> (or at
  1110. least <samp>-funsafe-math-optimizations</samp>,
  1111. <samp>-ffinite-math-only</samp>, <samp>-freciprocal-math</samp> and
  1112. <samp>-fno-trapping-math</samp>). Note that while the throughput of the
  1113. sequence is generally higher than the throughput of the non-reciprocal
  1114. instruction, the precision of the sequence can be decreased by up to 2
  1115. ulp (i.e. the inverse of 1.0 equals 0.99999994) for reciprocal square
  1116. roots.
  1117. </p>
  1118. </dd>
  1119. <dt><code>-mrecip=<var>opt</var></code></dt>
  1120. <dd><a name="index-mrecip_003dopt"></a>
  1121. <p>This option controls which reciprocal estimate instructions
  1122. may be used. <var>opt</var> is a comma-separated list of options, which may
  1123. be preceded by a <code>!</code> to invert the option:
  1124. </p>
  1125. <dl compact="compact">
  1126. <dt>&lsquo;<samp>all</samp>&rsquo;</dt>
  1127. <dd><p>Enable all estimate instructions.
  1128. </p>
  1129. </dd>
  1130. <dt>&lsquo;<samp>default</samp>&rsquo;</dt>
  1131. <dd><p>Enable the default instructions, equivalent to <samp>-mrecip</samp>.
  1132. </p>
  1133. </dd>
  1134. <dt>&lsquo;<samp>none</samp>&rsquo;</dt>
  1135. <dd><p>Disable all estimate instructions, equivalent to <samp>-mno-recip</samp>.
  1136. </p>
  1137. </dd>
  1138. <dt>&lsquo;<samp>div</samp>&rsquo;</dt>
  1139. <dd><p>Enable the reciprocal approximation instructions for both
  1140. single and double precision.
  1141. </p>
  1142. </dd>
  1143. <dt>&lsquo;<samp>divf</samp>&rsquo;</dt>
  1144. <dd><p>Enable the single-precision reciprocal approximation instructions.
  1145. </p>
  1146. </dd>
  1147. <dt>&lsquo;<samp>divd</samp>&rsquo;</dt>
  1148. <dd><p>Enable the double-precision reciprocal approximation instructions.
  1149. </p>
  1150. </dd>
  1151. <dt>&lsquo;<samp>rsqrt</samp>&rsquo;</dt>
  1152. <dd><p>Enable the reciprocal square root approximation instructions for both
  1153. single and double precision.
  1154. </p>
  1155. </dd>
  1156. <dt>&lsquo;<samp>rsqrtf</samp>&rsquo;</dt>
  1157. <dd><p>Enable the single-precision reciprocal square root approximation instructions.
  1158. </p>
  1159. </dd>
  1160. <dt>&lsquo;<samp>rsqrtd</samp>&rsquo;</dt>
  1161. <dd><p>Enable the double-precision reciprocal square root approximation instructions.
  1162. </p>
  1163. </dd>
  1164. </dl>
  1165. <p>So, for example, <samp>-mrecip=all,!rsqrtd</samp> enables
  1166. all of the reciprocal estimate instructions, except for the
  1167. <code>FRSQRTE</code>, <code>XSRSQRTEDP</code>, and <code>XVRSQRTEDP</code> instructions
  1168. which handle the double-precision reciprocal square root calculations.
  1169. </p>
  1170. </dd>
  1171. <dt><code>-mrecip-precision</code></dt>
  1172. <dt><code>-mno-recip-precision</code></dt>
  1173. <dd><a name="index-mrecip_002dprecision"></a>
  1174. <p>Assume (do not assume) that the reciprocal estimate instructions
  1175. provide higher-precision estimates than is mandated by the PowerPC
  1176. ABI. Selecting <samp>-mcpu=power6</samp>, <samp>-mcpu=power7</samp> or
  1177. <samp>-mcpu=power8</samp> automatically selects <samp>-mrecip-precision</samp>.
  1178. The double-precision square root estimate instructions are not generated by
  1179. default on low-precision machines, since they do not provide an
  1180. estimate that converges after three steps.
  1181. </p>
  1182. </dd>
  1183. <dt><code>-mveclibabi=<var>type</var></code></dt>
  1184. <dd><a name="index-mveclibabi"></a>
  1185. <p>Specifies the ABI type to use for vectorizing intrinsics using an
  1186. external library. The only type supported at present is &lsquo;<samp>mass</samp>&rsquo;,
  1187. which specifies to use IBM&rsquo;s Mathematical Acceleration Subsystem
  1188. (MASS) libraries for vectorizing intrinsics using external libraries.
  1189. GCC currently emits calls to <code>acosd2</code>, <code>acosf4</code>,
  1190. <code>acoshd2</code>, <code>acoshf4</code>, <code>asind2</code>, <code>asinf4</code>,
  1191. <code>asinhd2</code>, <code>asinhf4</code>, <code>atan2d2</code>, <code>atan2f4</code>,
  1192. <code>atand2</code>, <code>atanf4</code>, <code>atanhd2</code>, <code>atanhf4</code>,
  1193. <code>cbrtd2</code>, <code>cbrtf4</code>, <code>cosd2</code>, <code>cosf4</code>,
  1194. <code>coshd2</code>, <code>coshf4</code>, <code>erfcd2</code>, <code>erfcf4</code>,
  1195. <code>erfd2</code>, <code>erff4</code>, <code>exp2d2</code>, <code>exp2f4</code>,
  1196. <code>expd2</code>, <code>expf4</code>, <code>expm1d2</code>, <code>expm1f4</code>,
  1197. <code>hypotd2</code>, <code>hypotf4</code>, <code>lgammad2</code>, <code>lgammaf4</code>,
  1198. <code>log10d2</code>, <code>log10f4</code>, <code>log1pd2</code>, <code>log1pf4</code>,
  1199. <code>log2d2</code>, <code>log2f4</code>, <code>logd2</code>, <code>logf4</code>,
  1200. <code>powd2</code>, <code>powf4</code>, <code>sind2</code>, <code>sinf4</code>, <code>sinhd2</code>,
  1201. <code>sinhf4</code>, <code>sqrtd2</code>, <code>sqrtf4</code>, <code>tand2</code>,
  1202. <code>tanf4</code>, <code>tanhd2</code>, and <code>tanhf4</code> when generating code
  1203. for power7. Both <samp>-ftree-vectorize</samp> and
  1204. <samp>-funsafe-math-optimizations</samp> must also be enabled. The MASS
  1205. libraries must be specified at link time.
  1206. </p>
  1207. </dd>
  1208. <dt><code>-mfriz</code></dt>
  1209. <dt><code>-mno-friz</code></dt>
  1210. <dd><a name="index-mfriz"></a>
  1211. <p>Generate (do not generate) the <code>friz</code> instruction when the
  1212. <samp>-funsafe-math-optimizations</samp> option is used to optimize
  1213. rounding of floating-point values to 64-bit integer and back to floating
  1214. point. The <code>friz</code> instruction does not return the same value if
  1215. the floating-point number is too large to fit in an integer.
  1216. </p>
  1217. </dd>
  1218. <dt><code>-mpointers-to-nested-functions</code></dt>
  1219. <dt><code>-mno-pointers-to-nested-functions</code></dt>
  1220. <dd><a name="index-mpointers_002dto_002dnested_002dfunctions"></a>
  1221. <p>Generate (do not generate) code to load up the static chain register
  1222. (<code>r11</code>) when calling through a pointer on AIX and 64-bit Linux
  1223. systems where a function pointer points to a 3-word descriptor giving
  1224. the function address, TOC value to be loaded in register <code>r2</code>, and
  1225. static chain value to be loaded in register <code>r11</code>. The
  1226. <samp>-mpointers-to-nested-functions</samp> is on by default. You cannot
  1227. call through pointers to nested functions or pointers
  1228. to functions compiled in other languages that use the static chain if
  1229. you use <samp>-mno-pointers-to-nested-functions</samp>.
  1230. </p>
  1231. </dd>
  1232. <dt><code>-msave-toc-indirect</code></dt>
  1233. <dt><code>-mno-save-toc-indirect</code></dt>
  1234. <dd><a name="index-msave_002dtoc_002dindirect"></a>
  1235. <p>Generate (do not generate) code to save the TOC value in the reserved
  1236. stack location in the function prologue if the function calls through
  1237. a pointer on AIX and 64-bit Linux systems. If the TOC value is not
  1238. saved in the prologue, it is saved just before the call through the
  1239. pointer. The <samp>-mno-save-toc-indirect</samp> option is the default.
  1240. </p>
  1241. </dd>
  1242. <dt><code>-mcompat-align-parm</code></dt>
  1243. <dt><code>-mno-compat-align-parm</code></dt>
  1244. <dd><a name="index-mcompat_002dalign_002dparm"></a>
  1245. <p>Generate (do not generate) code to pass structure parameters with a
  1246. maximum alignment of 64 bits, for compatibility with older versions
  1247. of GCC.
  1248. </p>
  1249. <p>Older versions of GCC (prior to 4.9.0) incorrectly did not align a
  1250. structure parameter on a 128-bit boundary when that structure contained
  1251. a member requiring 128-bit alignment. This is corrected in more
  1252. recent versions of GCC. This option may be used to generate code
  1253. that is compatible with functions compiled with older versions of
  1254. GCC.
  1255. </p>
  1256. <p>The <samp>-mno-compat-align-parm</samp> option is the default.
  1257. </p>
  1258. </dd>
  1259. <dt><code>-mstack-protector-guard=<var>guard</var></code></dt>
  1260. <dt><code>-mstack-protector-guard-reg=<var>reg</var></code></dt>
  1261. <dt><code>-mstack-protector-guard-offset=<var>offset</var></code></dt>
  1262. <dt><code>-mstack-protector-guard-symbol=<var>symbol</var></code></dt>
  1263. <dd><a name="index-mstack_002dprotector_002dguard-2"></a>
  1264. <a name="index-mstack_002dprotector_002dguard_002dreg-2"></a>
  1265. <a name="index-mstack_002dprotector_002dguard_002doffset-2"></a>
  1266. <a name="index-mstack_002dprotector_002dguard_002dsymbol"></a>
  1267. <p>Generate stack protection code using canary at <var>guard</var>. Supported
  1268. locations are &lsquo;<samp>global</samp>&rsquo; for global canary or &lsquo;<samp>tls</samp>&rsquo; for per-thread
  1269. canary in the TLS block (the default with GNU libc version 2.4 or later).
  1270. </p>
  1271. <p>With the latter choice the options
  1272. <samp>-mstack-protector-guard-reg=<var>reg</var></samp> and
  1273. <samp>-mstack-protector-guard-offset=<var>offset</var></samp> furthermore specify
  1274. which register to use as base register for reading the canary, and from what
  1275. offset from that base register. The default for those is as specified in the
  1276. relevant ABI. <samp>-mstack-protector-guard-symbol=<var>symbol</var></samp> overrides
  1277. the offset with a symbol reference to a canary in the TLS block.
  1278. </p>
  1279. </dd>
  1280. <dt><code>-mpcrel</code></dt>
  1281. <dt><code>-mno-pcrel</code></dt>
  1282. <dd><a name="index-mpcrel-1"></a>
  1283. <a name="index-mno_002dpcrel"></a>
  1284. <p>Generate (do not generate) pc-relative addressing when the option
  1285. <samp>-mcpu=future</samp> is used. The <samp>-mpcrel</samp> option requires
  1286. that the medium code model (<samp>-mcmodel=medium</samp>) and prefixed
  1287. addressing (<samp>-mprefixed</samp>) options are enabled.
  1288. </p>
  1289. </dd>
  1290. <dt><code>-mprefixed</code></dt>
  1291. <dt><code>-mno-prefixed</code></dt>
  1292. <dd><a name="index-mprefixed"></a>
  1293. <a name="index-mno_002dprefixed"></a>
  1294. <p>Generate (do not generate) addressing modes using prefixed load and
  1295. store instructions when the option <samp>-mcpu=future</samp> is used.
  1296. </p>
  1297. </dd>
  1298. <dt><code>-mmma</code></dt>
  1299. <dt><code>-mno-mma</code></dt>
  1300. <dd><a name="index-mmma"></a>
  1301. <a name="index-mno_002dmma"></a>
  1302. <p>Generate (do not generate) the MMA instructions when the option
  1303. <samp>-mcpu=future</samp> is used.
  1304. </p></dd>
  1305. </dl>
  1306. <hr>
  1307. <div class="header">
  1308. <p>
  1309. Next: <a href="RX-Options.html#RX-Options" accesskey="n" rel="next">RX Options</a>, Previous: <a href="RL78-Options.html#RL78-Options" accesskey="p" rel="prev">RL78 Options</a>, Up: <a href="Submodel-Options.html#Submodel-Options" accesskey="u" rel="up">Submodel Options</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Option-Index.html#Option-Index" title="Index" rel="index">Index</a>]</p>
  1310. </div>
  1311. </body>
  1312. </html>