選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

1269 行
56KB

  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>ARM Options (Using the GNU Compiler Collection (GCC))</title>
  21. <meta name="description" content="ARM Options (Using the GNU Compiler Collection (GCC))">
  22. <meta name="keywords" content="ARM 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="AVR-Options.html#AVR-Options" rel="next" title="AVR Options">
  31. <link href="ARC-Options.html#ARC-Options" rel="prev" title="ARC 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="ARM-Options"></a>
  62. <div class="header">
  63. <p>
  64. Next: <a href="AVR-Options.html#AVR-Options" accesskey="n" rel="next">AVR Options</a>, Previous: <a href="ARC-Options.html#ARC-Options" accesskey="p" rel="prev">ARC 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="ARM-Options-1"></a>
  68. <h4 class="subsection">3.19.5 ARM Options</h4>
  69. <a name="index-ARM-options"></a>
  70. <p>These &lsquo;<samp>-m</samp>&rsquo; options are defined for the ARM port:
  71. </p>
  72. <dl compact="compact">
  73. <dt><code>-mabi=<var>name</var></code></dt>
  74. <dd><a name="index-mabi-1"></a>
  75. <p>Generate code for the specified ABI. Permissible values are: &lsquo;<samp>apcs-gnu</samp>&rsquo;,
  76. &lsquo;<samp>atpcs</samp>&rsquo;, &lsquo;<samp>aapcs</samp>&rsquo;, &lsquo;<samp>aapcs-linux</samp>&rsquo; and &lsquo;<samp>iwmmxt</samp>&rsquo;.
  77. </p>
  78. </dd>
  79. <dt><code>-mapcs-frame</code></dt>
  80. <dd><a name="index-mapcs_002dframe"></a>
  81. <p>Generate a stack frame that is compliant with the ARM Procedure Call
  82. Standard for all functions, even if this is not strictly necessary for
  83. correct execution of the code. Specifying <samp>-fomit-frame-pointer</samp>
  84. with this option causes the stack frames not to be generated for
  85. leaf functions. The default is <samp>-mno-apcs-frame</samp>.
  86. This option is deprecated.
  87. </p>
  88. </dd>
  89. <dt><code>-mapcs</code></dt>
  90. <dd><a name="index-mapcs"></a>
  91. <p>This is a synonym for <samp>-mapcs-frame</samp> and is deprecated.
  92. </p>
  93. </dd>
  94. <dt><code>-mthumb-interwork</code></dt>
  95. <dd><a name="index-mthumb_002dinterwork"></a>
  96. <p>Generate code that supports calling between the ARM and Thumb
  97. instruction sets. Without this option, on pre-v5 architectures, the
  98. two instruction sets cannot be reliably used inside one program. The
  99. default is <samp>-mno-thumb-interwork</samp>, since slightly larger code
  100. is generated when <samp>-mthumb-interwork</samp> is specified. In AAPCS
  101. configurations this option is meaningless.
  102. </p>
  103. </dd>
  104. <dt><code>-mno-sched-prolog</code></dt>
  105. <dd><a name="index-mno_002dsched_002dprolog"></a>
  106. <a name="index-msched_002dprolog"></a>
  107. <p>Prevent the reordering of instructions in the function prologue, or the
  108. merging of those instruction with the instructions in the function&rsquo;s
  109. body. This means that all functions start with a recognizable set
  110. of instructions (or in fact one of a choice from a small set of
  111. different function prologues), and this information can be used to
  112. locate the start of functions inside an executable piece of code. The
  113. default is <samp>-msched-prolog</samp>.
  114. </p>
  115. </dd>
  116. <dt><code>-mfloat-abi=<var>name</var></code></dt>
  117. <dd><a name="index-mfloat_002dabi"></a>
  118. <p>Specifies which floating-point ABI to use. Permissible values
  119. are: &lsquo;<samp>soft</samp>&rsquo;, &lsquo;<samp>softfp</samp>&rsquo; and &lsquo;<samp>hard</samp>&rsquo;.
  120. </p>
  121. <p>Specifying &lsquo;<samp>soft</samp>&rsquo; causes GCC to generate output containing
  122. library calls for floating-point operations.
  123. &lsquo;<samp>softfp</samp>&rsquo; allows the generation of code using hardware floating-point
  124. instructions, but still uses the soft-float calling conventions.
  125. &lsquo;<samp>hard</samp>&rsquo; allows generation of floating-point instructions
  126. and uses FPU-specific calling conventions.
  127. </p>
  128. <p>The default depends on the specific target configuration. Note that
  129. the hard-float and soft-float ABIs are not link-compatible; you must
  130. compile your entire program with the same ABI, and link with a
  131. compatible set of libraries.
  132. </p>
  133. </dd>
  134. <dt><code>-mgeneral-regs-only</code></dt>
  135. <dd><a name="index-mgeneral_002dregs_002donly-1"></a>
  136. <p>Generate code which uses only the general-purpose registers. This will prevent
  137. the compiler from using floating-point and Advanced SIMD registers but will not
  138. impose any restrictions on the assembler.
  139. </p>
  140. </dd>
  141. <dt><code>-mlittle-endian</code></dt>
  142. <dd><a name="index-mlittle_002dendian-2"></a>
  143. <p>Generate code for a processor running in little-endian mode. This is
  144. the default for all standard configurations.
  145. </p>
  146. </dd>
  147. <dt><code>-mbig-endian</code></dt>
  148. <dd><a name="index-mbig_002dendian-2"></a>
  149. <p>Generate code for a processor running in big-endian mode; the default is
  150. to compile code for a little-endian processor.
  151. </p>
  152. </dd>
  153. <dt><code>-mbe8</code></dt>
  154. <dt><code>-mbe32</code></dt>
  155. <dd><a name="index-mbe8"></a>
  156. <p>When linking a big-endian image select between BE8 and BE32 formats.
  157. The option has no effect for little-endian images and is ignored. The
  158. default is dependent on the selected target architecture. For ARMv6
  159. and later architectures the default is BE8, for older architectures
  160. the default is BE32. BE32 format has been deprecated by ARM.
  161. </p>
  162. </dd>
  163. <dt><code>-march=<var>name</var><span class="roman">[</span>+extension&hellip;<span class="roman">]</span></code></dt>
  164. <dd><a name="index-march-2"></a>
  165. <p>This specifies the name of the target ARM architecture. GCC uses this
  166. name to determine what kind of instructions it can emit when generating
  167. assembly code. This option can be used in conjunction with or instead
  168. of the <samp>-mcpu=</samp> option.
  169. </p>
  170. <p>Permissible names are:
  171. &lsquo;<samp>armv4t</samp>&rsquo;,
  172. &lsquo;<samp>armv5t</samp>&rsquo;, &lsquo;<samp>armv5te</samp>&rsquo;,
  173. &lsquo;<samp>armv6</samp>&rsquo;, &lsquo;<samp>armv6j</samp>&rsquo;, &lsquo;<samp>armv6k</samp>&rsquo;, &lsquo;<samp>armv6kz</samp>&rsquo;, &lsquo;<samp>armv6t2</samp>&rsquo;,
  174. &lsquo;<samp>armv6z</samp>&rsquo;, &lsquo;<samp>armv6zk</samp>&rsquo;,
  175. &lsquo;<samp>armv7</samp>&rsquo;, &lsquo;<samp>armv7-a</samp>&rsquo;, &lsquo;<samp>armv7ve</samp>&rsquo;,
  176. &lsquo;<samp>armv8-a</samp>&rsquo;, &lsquo;<samp>armv8.1-a</samp>&rsquo;, &lsquo;<samp>armv8.2-a</samp>&rsquo;, &lsquo;<samp>armv8.3-a</samp>&rsquo;,
  177. &lsquo;<samp>armv8.4-a</samp>&rsquo;,
  178. &lsquo;<samp>armv8.5-a</samp>&rsquo;,
  179. &lsquo;<samp>armv8.6-a</samp>&rsquo;,
  180. &lsquo;<samp>armv7-r</samp>&rsquo;,
  181. &lsquo;<samp>armv8-r</samp>&rsquo;,
  182. &lsquo;<samp>armv6-m</samp>&rsquo;, &lsquo;<samp>armv6s-m</samp>&rsquo;,
  183. &lsquo;<samp>armv7-m</samp>&rsquo;, &lsquo;<samp>armv7e-m</samp>&rsquo;,
  184. &lsquo;<samp>armv8-m.base</samp>&rsquo;, &lsquo;<samp>armv8-m.main</samp>&rsquo;,
  185. &lsquo;<samp>armv8.1-m.main</samp>&rsquo;,
  186. &lsquo;<samp>iwmmxt</samp>&rsquo; and &lsquo;<samp>iwmmxt2</samp>&rsquo;.
  187. </p>
  188. <p>Additionally, the following architectures, which lack support for the
  189. Thumb execution state, are recognized but support is deprecated: &lsquo;<samp>armv4</samp>&rsquo;.
  190. </p>
  191. <p>Many of the architectures support extensions. These can be added by
  192. appending &lsquo;<samp>+<var>extension</var></samp>&rsquo; to the architecture name. Extension
  193. options are processed in order and capabilities accumulate. An extension
  194. will also enable any necessary base extensions
  195. upon which it depends. For example, the &lsquo;<samp>+crypto</samp>&rsquo; extension
  196. will always enable the &lsquo;<samp>+simd</samp>&rsquo; extension. The exception to the
  197. additive construction is for extensions that are prefixed with
  198. &lsquo;<samp>+no&hellip;</samp>&rsquo;: these extensions disable the specified option and
  199. any other extensions that may depend on the presence of that
  200. extension.
  201. </p>
  202. <p>For example, &lsquo;<samp>-march=armv7-a+simd+nofp+vfpv4</samp>&rsquo; is equivalent to
  203. writing &lsquo;<samp>-march=armv7-a+vfpv4</samp>&rsquo; since the &lsquo;<samp>+simd</samp>&rsquo; option is
  204. entirely disabled by the &lsquo;<samp>+nofp</samp>&rsquo; option that follows it.
  205. </p>
  206. <p>Most extension names are generically named, but have an effect that is
  207. dependent upon the architecture to which it is applied. For example,
  208. the &lsquo;<samp>+simd</samp>&rsquo; option can be applied to both &lsquo;<samp>armv7-a</samp>&rsquo; and
  209. &lsquo;<samp>armv8-a</samp>&rsquo; architectures, but will enable the original ARMv7-A
  210. Advanced SIMD (Neon) extensions for &lsquo;<samp>armv7-a</samp>&rsquo; and the ARMv8-A
  211. variant for &lsquo;<samp>armv8-a</samp>&rsquo;.
  212. </p>
  213. <p>The table below lists the supported extensions for each architecture.
  214. Architectures not mentioned do not support any extensions.
  215. </p>
  216. <dl compact="compact">
  217. <dt>&lsquo;<samp>armv5te</samp>&rsquo;</dt>
  218. <dt>&lsquo;<samp>armv6</samp>&rsquo;</dt>
  219. <dt>&lsquo;<samp>armv6j</samp>&rsquo;</dt>
  220. <dt>&lsquo;<samp>armv6k</samp>&rsquo;</dt>
  221. <dt>&lsquo;<samp>armv6kz</samp>&rsquo;</dt>
  222. <dt>&lsquo;<samp>armv6t2</samp>&rsquo;</dt>
  223. <dt>&lsquo;<samp>armv6z</samp>&rsquo;</dt>
  224. <dt>&lsquo;<samp>armv6zk</samp>&rsquo;</dt>
  225. <dd><dl compact="compact">
  226. <dt>&lsquo;<samp>+fp</samp>&rsquo;</dt>
  227. <dd><p>The VFPv2 floating-point instructions. The extension &lsquo;<samp>+vfpv2</samp>&rsquo; can be
  228. used as an alias for this extension.
  229. </p>
  230. </dd>
  231. <dt>&lsquo;<samp>+nofp</samp>&rsquo;</dt>
  232. <dd><p>Disable the floating-point instructions.
  233. </p></dd>
  234. </dl>
  235. </dd>
  236. <dt>&lsquo;<samp>armv7</samp>&rsquo;</dt>
  237. <dd><p>The common subset of the ARMv7-A, ARMv7-R and ARMv7-M architectures.
  238. </p><dl compact="compact">
  239. <dt>&lsquo;<samp>+fp</samp>&rsquo;</dt>
  240. <dd><p>The VFPv3 floating-point instructions, with 16 double-precision
  241. registers. The extension &lsquo;<samp>+vfpv3-d16</samp>&rsquo; can be used as an alias
  242. for this extension. Note that floating-point is not supported by the
  243. base ARMv7-M architecture, but is compatible with both the ARMv7-A and
  244. ARMv7-R architectures.
  245. </p>
  246. </dd>
  247. <dt>&lsquo;<samp>+nofp</samp>&rsquo;</dt>
  248. <dd><p>Disable the floating-point instructions.
  249. </p></dd>
  250. </dl>
  251. </dd>
  252. <dt>&lsquo;<samp>armv7-a</samp>&rsquo;</dt>
  253. <dd><dl compact="compact">
  254. <dt>&lsquo;<samp>+mp</samp>&rsquo;</dt>
  255. <dd><p>The multiprocessing extension.
  256. </p>
  257. </dd>
  258. <dt>&lsquo;<samp>+sec</samp>&rsquo;</dt>
  259. <dd><p>The security extension.
  260. </p>
  261. </dd>
  262. <dt>&lsquo;<samp>+fp</samp>&rsquo;</dt>
  263. <dd><p>The VFPv3 floating-point instructions, with 16 double-precision
  264. registers. The extension &lsquo;<samp>+vfpv3-d16</samp>&rsquo; can be used as an alias
  265. for this extension.
  266. </p>
  267. </dd>
  268. <dt>&lsquo;<samp>+simd</samp>&rsquo;</dt>
  269. <dd><p>The Advanced SIMD (Neon) v1 and the VFPv3 floating-point instructions.
  270. The extensions &lsquo;<samp>+neon</samp>&rsquo; and &lsquo;<samp>+neon-vfpv3</samp>&rsquo; can be used as aliases
  271. for this extension.
  272. </p>
  273. </dd>
  274. <dt>&lsquo;<samp>+vfpv3</samp>&rsquo;</dt>
  275. <dd><p>The VFPv3 floating-point instructions, with 32 double-precision
  276. registers.
  277. </p>
  278. </dd>
  279. <dt>&lsquo;<samp>+vfpv3-d16-fp16</samp>&rsquo;</dt>
  280. <dd><p>The VFPv3 floating-point instructions, with 16 double-precision
  281. registers and the half-precision floating-point conversion operations.
  282. </p>
  283. </dd>
  284. <dt>&lsquo;<samp>+vfpv3-fp16</samp>&rsquo;</dt>
  285. <dd><p>The VFPv3 floating-point instructions, with 32 double-precision
  286. registers and the half-precision floating-point conversion operations.
  287. </p>
  288. </dd>
  289. <dt>&lsquo;<samp>+vfpv4-d16</samp>&rsquo;</dt>
  290. <dd><p>The VFPv4 floating-point instructions, with 16 double-precision
  291. registers.
  292. </p>
  293. </dd>
  294. <dt>&lsquo;<samp>+vfpv4</samp>&rsquo;</dt>
  295. <dd><p>The VFPv4 floating-point instructions, with 32 double-precision
  296. registers.
  297. </p>
  298. </dd>
  299. <dt>&lsquo;<samp>+neon-fp16</samp>&rsquo;</dt>
  300. <dd><p>The Advanced SIMD (Neon) v1 and the VFPv3 floating-point instructions, with
  301. the half-precision floating-point conversion operations.
  302. </p>
  303. </dd>
  304. <dt>&lsquo;<samp>+neon-vfpv4</samp>&rsquo;</dt>
  305. <dd><p>The Advanced SIMD (Neon) v2 and the VFPv4 floating-point instructions.
  306. </p>
  307. </dd>
  308. <dt>&lsquo;<samp>+nosimd</samp>&rsquo;</dt>
  309. <dd><p>Disable the Advanced SIMD instructions (does not disable floating point).
  310. </p>
  311. </dd>
  312. <dt>&lsquo;<samp>+nofp</samp>&rsquo;</dt>
  313. <dd><p>Disable the floating-point and Advanced SIMD instructions.
  314. </p></dd>
  315. </dl>
  316. </dd>
  317. <dt>&lsquo;<samp>armv7ve</samp>&rsquo;</dt>
  318. <dd><p>The extended version of the ARMv7-A architecture with support for
  319. virtualization.
  320. </p><dl compact="compact">
  321. <dt>&lsquo;<samp>+fp</samp>&rsquo;</dt>
  322. <dd><p>The VFPv4 floating-point instructions, with 16 double-precision registers.
  323. The extension &lsquo;<samp>+vfpv4-d16</samp>&rsquo; can be used as an alias for this extension.
  324. </p>
  325. </dd>
  326. <dt>&lsquo;<samp>+simd</samp>&rsquo;</dt>
  327. <dd><p>The Advanced SIMD (Neon) v2 and the VFPv4 floating-point instructions. The
  328. extension &lsquo;<samp>+neon-vfpv4</samp>&rsquo; can be used as an alias for this extension.
  329. </p>
  330. </dd>
  331. <dt>&lsquo;<samp>+vfpv3-d16</samp>&rsquo;</dt>
  332. <dd><p>The VFPv3 floating-point instructions, with 16 double-precision
  333. registers.
  334. </p>
  335. </dd>
  336. <dt>&lsquo;<samp>+vfpv3</samp>&rsquo;</dt>
  337. <dd><p>The VFPv3 floating-point instructions, with 32 double-precision
  338. registers.
  339. </p>
  340. </dd>
  341. <dt>&lsquo;<samp>+vfpv3-d16-fp16</samp>&rsquo;</dt>
  342. <dd><p>The VFPv3 floating-point instructions, with 16 double-precision
  343. registers and the half-precision floating-point conversion operations.
  344. </p>
  345. </dd>
  346. <dt>&lsquo;<samp>+vfpv3-fp16</samp>&rsquo;</dt>
  347. <dd><p>The VFPv3 floating-point instructions, with 32 double-precision
  348. registers and the half-precision floating-point conversion operations.
  349. </p>
  350. </dd>
  351. <dt>&lsquo;<samp>+vfpv4-d16</samp>&rsquo;</dt>
  352. <dd><p>The VFPv4 floating-point instructions, with 16 double-precision
  353. registers.
  354. </p>
  355. </dd>
  356. <dt>&lsquo;<samp>+vfpv4</samp>&rsquo;</dt>
  357. <dd><p>The VFPv4 floating-point instructions, with 32 double-precision
  358. registers.
  359. </p>
  360. </dd>
  361. <dt>&lsquo;<samp>+neon</samp>&rsquo;</dt>
  362. <dd><p>The Advanced SIMD (Neon) v1 and the VFPv3 floating-point instructions.
  363. The extension &lsquo;<samp>+neon-vfpv3</samp>&rsquo; can be used as an alias for this extension.
  364. </p>
  365. </dd>
  366. <dt>&lsquo;<samp>+neon-fp16</samp>&rsquo;</dt>
  367. <dd><p>The Advanced SIMD (Neon) v1 and the VFPv3 floating-point instructions, with
  368. the half-precision floating-point conversion operations.
  369. </p>
  370. </dd>
  371. <dt>&lsquo;<samp>+nosimd</samp>&rsquo;</dt>
  372. <dd><p>Disable the Advanced SIMD instructions (does not disable floating point).
  373. </p>
  374. </dd>
  375. <dt>&lsquo;<samp>+nofp</samp>&rsquo;</dt>
  376. <dd><p>Disable the floating-point and Advanced SIMD instructions.
  377. </p></dd>
  378. </dl>
  379. </dd>
  380. <dt>&lsquo;<samp>armv8-a</samp>&rsquo;</dt>
  381. <dd><dl compact="compact">
  382. <dt>&lsquo;<samp>+crc</samp>&rsquo;</dt>
  383. <dd><p>The Cyclic Redundancy Check (CRC) instructions.
  384. </p></dd>
  385. <dt>&lsquo;<samp>+simd</samp>&rsquo;</dt>
  386. <dd><p>The ARMv8-A Advanced SIMD and floating-point instructions.
  387. </p></dd>
  388. <dt>&lsquo;<samp>+crypto</samp>&rsquo;</dt>
  389. <dd><p>The cryptographic instructions.
  390. </p></dd>
  391. <dt>&lsquo;<samp>+nocrypto</samp>&rsquo;</dt>
  392. <dd><p>Disable the cryptographic instructions.
  393. </p></dd>
  394. <dt>&lsquo;<samp>+nofp</samp>&rsquo;</dt>
  395. <dd><p>Disable the floating-point, Advanced SIMD and cryptographic instructions.
  396. </p></dd>
  397. <dt>&lsquo;<samp>+sb</samp>&rsquo;</dt>
  398. <dd><p>Speculation Barrier Instruction.
  399. </p></dd>
  400. <dt>&lsquo;<samp>+predres</samp>&rsquo;</dt>
  401. <dd><p>Execution and Data Prediction Restriction Instructions.
  402. </p></dd>
  403. </dl>
  404. </dd>
  405. <dt>&lsquo;<samp>armv8.1-a</samp>&rsquo;</dt>
  406. <dd><dl compact="compact">
  407. <dt>&lsquo;<samp>+simd</samp>&rsquo;</dt>
  408. <dd><p>The ARMv8.1-A Advanced SIMD and floating-point instructions.
  409. </p>
  410. </dd>
  411. <dt>&lsquo;<samp>+crypto</samp>&rsquo;</dt>
  412. <dd><p>The cryptographic instructions. This also enables the Advanced SIMD and
  413. floating-point instructions.
  414. </p>
  415. </dd>
  416. <dt>&lsquo;<samp>+nocrypto</samp>&rsquo;</dt>
  417. <dd><p>Disable the cryptographic instructions.
  418. </p>
  419. </dd>
  420. <dt>&lsquo;<samp>+nofp</samp>&rsquo;</dt>
  421. <dd><p>Disable the floating-point, Advanced SIMD and cryptographic instructions.
  422. </p>
  423. </dd>
  424. <dt>&lsquo;<samp>+sb</samp>&rsquo;</dt>
  425. <dd><p>Speculation Barrier Instruction.
  426. </p>
  427. </dd>
  428. <dt>&lsquo;<samp>+predres</samp>&rsquo;</dt>
  429. <dd><p>Execution and Data Prediction Restriction Instructions.
  430. </p></dd>
  431. </dl>
  432. </dd>
  433. <dt>&lsquo;<samp>armv8.2-a</samp>&rsquo;</dt>
  434. <dt>&lsquo;<samp>armv8.3-a</samp>&rsquo;</dt>
  435. <dd><dl compact="compact">
  436. <dt>&lsquo;<samp>+fp16</samp>&rsquo;</dt>
  437. <dd><p>The half-precision floating-point data processing instructions.
  438. This also enables the Advanced SIMD and floating-point instructions.
  439. </p>
  440. </dd>
  441. <dt>&lsquo;<samp>+fp16fml</samp>&rsquo;</dt>
  442. <dd><p>The half-precision floating-point fmla extension. This also enables
  443. the half-precision floating-point extension and Advanced SIMD and
  444. floating-point instructions.
  445. </p>
  446. </dd>
  447. <dt>&lsquo;<samp>+simd</samp>&rsquo;</dt>
  448. <dd><p>The ARMv8.1-A Advanced SIMD and floating-point instructions.
  449. </p>
  450. </dd>
  451. <dt>&lsquo;<samp>+crypto</samp>&rsquo;</dt>
  452. <dd><p>The cryptographic instructions. This also enables the Advanced SIMD and
  453. floating-point instructions.
  454. </p>
  455. </dd>
  456. <dt>&lsquo;<samp>+dotprod</samp>&rsquo;</dt>
  457. <dd><p>Enable the Dot Product extension. This also enables Advanced SIMD instructions.
  458. </p>
  459. </dd>
  460. <dt>&lsquo;<samp>+nocrypto</samp>&rsquo;</dt>
  461. <dd><p>Disable the cryptographic extension.
  462. </p>
  463. </dd>
  464. <dt>&lsquo;<samp>+nofp</samp>&rsquo;</dt>
  465. <dd><p>Disable the floating-point, Advanced SIMD and cryptographic instructions.
  466. </p>
  467. </dd>
  468. <dt>&lsquo;<samp>+sb</samp>&rsquo;</dt>
  469. <dd><p>Speculation Barrier Instruction.
  470. </p>
  471. </dd>
  472. <dt>&lsquo;<samp>+predres</samp>&rsquo;</dt>
  473. <dd><p>Execution and Data Prediction Restriction Instructions.
  474. </p>
  475. </dd>
  476. <dt>&lsquo;<samp>+i8mm</samp>&rsquo;</dt>
  477. <dd><p>8-bit Integer Matrix Multiply instructions.
  478. This also enables Advanced SIMD and floating-point instructions.
  479. </p>
  480. </dd>
  481. <dt>&lsquo;<samp>+bf16</samp>&rsquo;</dt>
  482. <dd><p>Brain half-precision floating-point instructions.
  483. This also enables Advanced SIMD and floating-point instructions.
  484. </p></dd>
  485. </dl>
  486. </dd>
  487. <dt>&lsquo;<samp>armv8.4-a</samp>&rsquo;</dt>
  488. <dd><dl compact="compact">
  489. <dt>&lsquo;<samp>+fp16</samp>&rsquo;</dt>
  490. <dd><p>The half-precision floating-point data processing instructions.
  491. This also enables the Advanced SIMD and floating-point instructions as well
  492. as the Dot Product extension and the half-precision floating-point fmla
  493. extension.
  494. </p>
  495. </dd>
  496. <dt>&lsquo;<samp>+simd</samp>&rsquo;</dt>
  497. <dd><p>The ARMv8.3-A Advanced SIMD and floating-point instructions as well as the
  498. Dot Product extension.
  499. </p>
  500. </dd>
  501. <dt>&lsquo;<samp>+crypto</samp>&rsquo;</dt>
  502. <dd><p>The cryptographic instructions. This also enables the Advanced SIMD and
  503. floating-point instructions as well as the Dot Product extension.
  504. </p>
  505. </dd>
  506. <dt>&lsquo;<samp>+nocrypto</samp>&rsquo;</dt>
  507. <dd><p>Disable the cryptographic extension.
  508. </p>
  509. </dd>
  510. <dt>&lsquo;<samp>+nofp</samp>&rsquo;</dt>
  511. <dd><p>Disable the floating-point, Advanced SIMD and cryptographic instructions.
  512. </p>
  513. </dd>
  514. <dt>&lsquo;<samp>+sb</samp>&rsquo;</dt>
  515. <dd><p>Speculation Barrier Instruction.
  516. </p>
  517. </dd>
  518. <dt>&lsquo;<samp>+predres</samp>&rsquo;</dt>
  519. <dd><p>Execution and Data Prediction Restriction Instructions.
  520. </p>
  521. </dd>
  522. <dt>&lsquo;<samp>+i8mm</samp>&rsquo;</dt>
  523. <dd><p>8-bit Integer Matrix Multiply instructions.
  524. This also enables Advanced SIMD and floating-point instructions.
  525. </p>
  526. </dd>
  527. <dt>&lsquo;<samp>+bf16</samp>&rsquo;</dt>
  528. <dd><p>Brain half-precision floating-point instructions.
  529. This also enables Advanced SIMD and floating-point instructions.
  530. </p></dd>
  531. </dl>
  532. </dd>
  533. <dt>&lsquo;<samp>armv8.5-a</samp>&rsquo;</dt>
  534. <dd><dl compact="compact">
  535. <dt>&lsquo;<samp>+fp16</samp>&rsquo;</dt>
  536. <dd><p>The half-precision floating-point data processing instructions.
  537. This also enables the Advanced SIMD and floating-point instructions as well
  538. as the Dot Product extension and the half-precision floating-point fmla
  539. extension.
  540. </p>
  541. </dd>
  542. <dt>&lsquo;<samp>+simd</samp>&rsquo;</dt>
  543. <dd><p>The ARMv8.3-A Advanced SIMD and floating-point instructions as well as the
  544. Dot Product extension.
  545. </p>
  546. </dd>
  547. <dt>&lsquo;<samp>+crypto</samp>&rsquo;</dt>
  548. <dd><p>The cryptographic instructions. This also enables the Advanced SIMD and
  549. floating-point instructions as well as the Dot Product extension.
  550. </p>
  551. </dd>
  552. <dt>&lsquo;<samp>+nocrypto</samp>&rsquo;</dt>
  553. <dd><p>Disable the cryptographic extension.
  554. </p>
  555. </dd>
  556. <dt>&lsquo;<samp>+nofp</samp>&rsquo;</dt>
  557. <dd><p>Disable the floating-point, Advanced SIMD and cryptographic instructions.
  558. </p>
  559. </dd>
  560. <dt>&lsquo;<samp>+i8mm</samp>&rsquo;</dt>
  561. <dd><p>8-bit Integer Matrix Multiply instructions.
  562. This also enables Advanced SIMD and floating-point instructions.
  563. </p>
  564. </dd>
  565. <dt>&lsquo;<samp>+bf16</samp>&rsquo;</dt>
  566. <dd><p>Brain half-precision floating-point instructions.
  567. This also enables Advanced SIMD and floating-point instructions.
  568. </p></dd>
  569. </dl>
  570. </dd>
  571. <dt>&lsquo;<samp>armv8.6-a</samp>&rsquo;</dt>
  572. <dd><dl compact="compact">
  573. <dt>&lsquo;<samp>+fp16</samp>&rsquo;</dt>
  574. <dd><p>The half-precision floating-point data processing instructions.
  575. This also enables the Advanced SIMD and floating-point instructions as well
  576. as the Dot Product extension and the half-precision floating-point fmla
  577. extension.
  578. </p>
  579. </dd>
  580. <dt>&lsquo;<samp>+simd</samp>&rsquo;</dt>
  581. <dd><p>The ARMv8.3-A Advanced SIMD and floating-point instructions as well as the
  582. Dot Product extension.
  583. </p>
  584. </dd>
  585. <dt>&lsquo;<samp>+crypto</samp>&rsquo;</dt>
  586. <dd><p>The cryptographic instructions. This also enables the Advanced SIMD and
  587. floating-point instructions as well as the Dot Product extension.
  588. </p>
  589. </dd>
  590. <dt>&lsquo;<samp>+nocrypto</samp>&rsquo;</dt>
  591. <dd><p>Disable the cryptographic extension.
  592. </p>
  593. </dd>
  594. <dt>&lsquo;<samp>+nofp</samp>&rsquo;</dt>
  595. <dd><p>Disable the floating-point, Advanced SIMD and cryptographic instructions.
  596. </p>
  597. </dd>
  598. <dt>&lsquo;<samp>+i8mm</samp>&rsquo;</dt>
  599. <dd><p>8-bit Integer Matrix Multiply instructions.
  600. This also enables Advanced SIMD and floating-point instructions.
  601. </p>
  602. </dd>
  603. <dt>&lsquo;<samp>+bf16</samp>&rsquo;</dt>
  604. <dd><p>Brain half-precision floating-point instructions.
  605. This also enables Advanced SIMD and floating-point instructions.
  606. </p></dd>
  607. </dl>
  608. </dd>
  609. <dt>&lsquo;<samp>armv7-r</samp>&rsquo;</dt>
  610. <dd><dl compact="compact">
  611. <dt>&lsquo;<samp>+fp.sp</samp>&rsquo;</dt>
  612. <dd><p>The single-precision VFPv3 floating-point instructions. The extension
  613. &lsquo;<samp>+vfpv3xd</samp>&rsquo; can be used as an alias for this extension.
  614. </p>
  615. </dd>
  616. <dt>&lsquo;<samp>+fp</samp>&rsquo;</dt>
  617. <dd><p>The VFPv3 floating-point instructions with 16 double-precision registers.
  618. The extension +vfpv3-d16 can be used as an alias for this extension.
  619. </p>
  620. </dd>
  621. <dt>&lsquo;<samp>+vfpv3xd-d16-fp16</samp>&rsquo;</dt>
  622. <dd><p>The single-precision VFPv3 floating-point instructions with 16 double-precision
  623. registers and the half-precision floating-point conversion operations.
  624. </p>
  625. </dd>
  626. <dt>&lsquo;<samp>+vfpv3-d16-fp16</samp>&rsquo;</dt>
  627. <dd><p>The VFPv3 floating-point instructions with 16 double-precision
  628. registers and the half-precision floating-point conversion operations.
  629. </p>
  630. </dd>
  631. <dt>&lsquo;<samp>+nofp</samp>&rsquo;</dt>
  632. <dd><p>Disable the floating-point extension.
  633. </p>
  634. </dd>
  635. <dt>&lsquo;<samp>+idiv</samp>&rsquo;</dt>
  636. <dd><p>The ARM-state integer division instructions.
  637. </p>
  638. </dd>
  639. <dt>&lsquo;<samp>+noidiv</samp>&rsquo;</dt>
  640. <dd><p>Disable the ARM-state integer division extension.
  641. </p></dd>
  642. </dl>
  643. </dd>
  644. <dt>&lsquo;<samp>armv7e-m</samp>&rsquo;</dt>
  645. <dd><dl compact="compact">
  646. <dt>&lsquo;<samp>+fp</samp>&rsquo;</dt>
  647. <dd><p>The single-precision VFPv4 floating-point instructions.
  648. </p>
  649. </dd>
  650. <dt>&lsquo;<samp>+fpv5</samp>&rsquo;</dt>
  651. <dd><p>The single-precision FPv5 floating-point instructions.
  652. </p>
  653. </dd>
  654. <dt>&lsquo;<samp>+fp.dp</samp>&rsquo;</dt>
  655. <dd><p>The single- and double-precision FPv5 floating-point instructions.
  656. </p>
  657. </dd>
  658. <dt>&lsquo;<samp>+nofp</samp>&rsquo;</dt>
  659. <dd><p>Disable the floating-point extensions.
  660. </p></dd>
  661. </dl>
  662. </dd>
  663. <dt>&lsquo;<samp>armv8.1-m.main</samp>&rsquo;</dt>
  664. <dd><dl compact="compact">
  665. <dt>&lsquo;<samp>+dsp</samp>&rsquo;</dt>
  666. <dd><p>The DSP instructions.
  667. </p>
  668. </dd>
  669. <dt>&lsquo;<samp>+mve</samp>&rsquo;</dt>
  670. <dd><p>The M-Profile Vector Extension (MVE) integer instructions.
  671. </p>
  672. </dd>
  673. <dt>&lsquo;<samp>+mve.fp</samp>&rsquo;</dt>
  674. <dd><p>The M-Profile Vector Extension (MVE) integer and single precision
  675. floating-point instructions.
  676. </p>
  677. </dd>
  678. <dt>&lsquo;<samp>+fp</samp>&rsquo;</dt>
  679. <dd><p>The single-precision floating-point instructions.
  680. </p>
  681. </dd>
  682. <dt>&lsquo;<samp>+fp.dp</samp>&rsquo;</dt>
  683. <dd><p>The single- and double-precision floating-point instructions.
  684. </p>
  685. </dd>
  686. <dt>&lsquo;<samp>+nofp</samp>&rsquo;</dt>
  687. <dd><p>Disable the floating-point extension.
  688. </p>
  689. </dd>
  690. <dt>&lsquo;<samp>+cdecp0, +cdecp1, ... , +cdecp7</samp>&rsquo;</dt>
  691. <dd><p>Enable the Custom Datapath Extension (CDE) on selected coprocessors according
  692. to the numbers given in the options in the range 0 to 7.
  693. </p></dd>
  694. </dl>
  695. </dd>
  696. <dt>&lsquo;<samp>armv8-m.main</samp>&rsquo;</dt>
  697. <dd><dl compact="compact">
  698. <dt>&lsquo;<samp>+dsp</samp>&rsquo;</dt>
  699. <dd><p>The DSP instructions.
  700. </p>
  701. </dd>
  702. <dt>&lsquo;<samp>+nodsp</samp>&rsquo;</dt>
  703. <dd><p>Disable the DSP extension.
  704. </p>
  705. </dd>
  706. <dt>&lsquo;<samp>+fp</samp>&rsquo;</dt>
  707. <dd><p>The single-precision floating-point instructions.
  708. </p>
  709. </dd>
  710. <dt>&lsquo;<samp>+fp.dp</samp>&rsquo;</dt>
  711. <dd><p>The single- and double-precision floating-point instructions.
  712. </p>
  713. </dd>
  714. <dt>&lsquo;<samp>+nofp</samp>&rsquo;</dt>
  715. <dd><p>Disable the floating-point extension.
  716. </p>
  717. </dd>
  718. <dt>&lsquo;<samp>+cdecp0, +cdecp1, ... , +cdecp7</samp>&rsquo;</dt>
  719. <dd><p>Enable the Custom Datapath Extension (CDE) on selected coprocessors according
  720. to the numbers given in the options in the range 0 to 7.
  721. </p></dd>
  722. </dl>
  723. </dd>
  724. <dt>&lsquo;<samp>armv8-r</samp>&rsquo;</dt>
  725. <dd><dl compact="compact">
  726. <dt>&lsquo;<samp>+crc</samp>&rsquo;</dt>
  727. <dd><p>The Cyclic Redundancy Check (CRC) instructions.
  728. </p></dd>
  729. <dt>&lsquo;<samp>+fp.sp</samp>&rsquo;</dt>
  730. <dd><p>The single-precision FPv5 floating-point instructions.
  731. </p></dd>
  732. <dt>&lsquo;<samp>+simd</samp>&rsquo;</dt>
  733. <dd><p>The ARMv8-A Advanced SIMD and floating-point instructions.
  734. </p></dd>
  735. <dt>&lsquo;<samp>+crypto</samp>&rsquo;</dt>
  736. <dd><p>The cryptographic instructions.
  737. </p></dd>
  738. <dt>&lsquo;<samp>+nocrypto</samp>&rsquo;</dt>
  739. <dd><p>Disable the cryptographic instructions.
  740. </p></dd>
  741. <dt>&lsquo;<samp>+nofp</samp>&rsquo;</dt>
  742. <dd><p>Disable the floating-point, Advanced SIMD and cryptographic instructions.
  743. </p></dd>
  744. </dl>
  745. </dd>
  746. </dl>
  747. <p><samp>-march=native</samp> causes the compiler to auto-detect the architecture
  748. of the build computer. At present, this feature is only supported on
  749. GNU/Linux, and not all architectures are recognized. If the auto-detect
  750. is unsuccessful the option has no effect.
  751. </p>
  752. </dd>
  753. <dt><code>-mtune=<var>name</var></code></dt>
  754. <dd><a name="index-mtune-4"></a>
  755. <p>This option specifies the name of the target ARM processor for
  756. which GCC should tune the performance of the code.
  757. For some ARM implementations better performance can be obtained by using
  758. this option.
  759. Permissible names are: &lsquo;<samp>arm7tdmi</samp>&rsquo;, &lsquo;<samp>arm7tdmi-s</samp>&rsquo;, &lsquo;<samp>arm710t</samp>&rsquo;,
  760. &lsquo;<samp>arm720t</samp>&rsquo;, &lsquo;<samp>arm740t</samp>&rsquo;, &lsquo;<samp>strongarm</samp>&rsquo;, &lsquo;<samp>strongarm110</samp>&rsquo;,
  761. &lsquo;<samp>strongarm1100</samp>&rsquo;, 0&lsquo;<samp>strongarm1110</samp>&rsquo;, &lsquo;<samp>arm8</samp>&rsquo;, &lsquo;<samp>arm810</samp>&rsquo;,
  762. &lsquo;<samp>arm9</samp>&rsquo;, &lsquo;<samp>arm9e</samp>&rsquo;, &lsquo;<samp>arm920</samp>&rsquo;, &lsquo;<samp>arm920t</samp>&rsquo;, &lsquo;<samp>arm922t</samp>&rsquo;,
  763. &lsquo;<samp>arm946e-s</samp>&rsquo;, &lsquo;<samp>arm966e-s</samp>&rsquo;, &lsquo;<samp>arm968e-s</samp>&rsquo;, &lsquo;<samp>arm926ej-s</samp>&rsquo;,
  764. &lsquo;<samp>arm940t</samp>&rsquo;, &lsquo;<samp>arm9tdmi</samp>&rsquo;, &lsquo;<samp>arm10tdmi</samp>&rsquo;, &lsquo;<samp>arm1020t</samp>&rsquo;,
  765. &lsquo;<samp>arm1026ej-s</samp>&rsquo;, &lsquo;<samp>arm10e</samp>&rsquo;, &lsquo;<samp>arm1020e</samp>&rsquo;, &lsquo;<samp>arm1022e</samp>&rsquo;,
  766. &lsquo;<samp>arm1136j-s</samp>&rsquo;, &lsquo;<samp>arm1136jf-s</samp>&rsquo;, &lsquo;<samp>mpcore</samp>&rsquo;, &lsquo;<samp>mpcorenovfp</samp>&rsquo;,
  767. &lsquo;<samp>arm1156t2-s</samp>&rsquo;, &lsquo;<samp>arm1156t2f-s</samp>&rsquo;, &lsquo;<samp>arm1176jz-s</samp>&rsquo;, &lsquo;<samp>arm1176jzf-s</samp>&rsquo;,
  768. &lsquo;<samp>generic-armv7-a</samp>&rsquo;, &lsquo;<samp>cortex-a5</samp>&rsquo;, &lsquo;<samp>cortex-a7</samp>&rsquo;, &lsquo;<samp>cortex-a8</samp>&rsquo;,
  769. &lsquo;<samp>cortex-a9</samp>&rsquo;, &lsquo;<samp>cortex-a12</samp>&rsquo;, &lsquo;<samp>cortex-a15</samp>&rsquo;, &lsquo;<samp>cortex-a17</samp>&rsquo;,
  770. &lsquo;<samp>cortex-a32</samp>&rsquo;, &lsquo;<samp>cortex-a35</samp>&rsquo;, &lsquo;<samp>cortex-a53</samp>&rsquo;, &lsquo;<samp>cortex-a55</samp>&rsquo;,
  771. &lsquo;<samp>cortex-a57</samp>&rsquo;, &lsquo;<samp>cortex-a72</samp>&rsquo;, &lsquo;<samp>cortex-a73</samp>&rsquo;, &lsquo;<samp>cortex-a75</samp>&rsquo;,
  772. &lsquo;<samp>cortex-a76</samp>&rsquo;, &lsquo;<samp>cortex-a76ae</samp>&rsquo;, &lsquo;<samp>cortex-a77</samp>&rsquo;,
  773. &lsquo;<samp>ares</samp>&rsquo;, &lsquo;<samp>cortex-r4</samp>&rsquo;, &lsquo;<samp>cortex-r4f</samp>&rsquo;,
  774. &lsquo;<samp>cortex-r5</samp>&rsquo;, &lsquo;<samp>cortex-r7</samp>&rsquo;, &lsquo;<samp>cortex-r8</samp>&rsquo;, &lsquo;<samp>cortex-r52</samp>&rsquo;,
  775. &lsquo;<samp>cortex-m0</samp>&rsquo;, &lsquo;<samp>cortex-m0plus</samp>&rsquo;, &lsquo;<samp>cortex-m1</samp>&rsquo;, &lsquo;<samp>cortex-m3</samp>&rsquo;,
  776. &lsquo;<samp>cortex-m4</samp>&rsquo;, &lsquo;<samp>cortex-m7</samp>&rsquo;, &lsquo;<samp>cortex-m23</samp>&rsquo;, &lsquo;<samp>cortex-m33</samp>&rsquo;,
  777. &lsquo;<samp>cortex-m35p</samp>&rsquo;, &lsquo;<samp>cortex-m55</samp>&rsquo;,
  778. &lsquo;<samp>cortex-m1.small-multiply</samp>&rsquo;, &lsquo;<samp>cortex-m0.small-multiply</samp>&rsquo;,
  779. &lsquo;<samp>cortex-m0plus.small-multiply</samp>&rsquo;, &lsquo;<samp>exynos-m1</samp>&rsquo;, &lsquo;<samp>marvell-pj4</samp>&rsquo;,
  780. &lsquo;<samp>neoverse-n1</samp>&rsquo;, &lsquo;<samp>neoverse-n2</samp>&rsquo;, &lsquo;<samp>neoverse-v1</samp>&rsquo;, &lsquo;<samp>xscale</samp>&rsquo;,
  781. &lsquo;<samp>iwmmxt</samp>&rsquo;, &lsquo;<samp>iwmmxt2</samp>&rsquo;, &lsquo;<samp>ep9312</samp>&rsquo;, &lsquo;<samp>fa526</samp>&rsquo;, &lsquo;<samp>fa626</samp>&rsquo;,
  782. &lsquo;<samp>fa606te</samp>&rsquo;, &lsquo;<samp>fa626te</samp>&rsquo;, &lsquo;<samp>fmp626</samp>&rsquo;, &lsquo;<samp>fa726te</samp>&rsquo;, &lsquo;<samp>xgene1</samp>&rsquo;.
  783. </p>
  784. <p>Additionally, this option can specify that GCC should tune the performance
  785. of the code for a big.LITTLE system. Permissible names are:
  786. &lsquo;<samp>cortex-a15.cortex-a7</samp>&rsquo;, &lsquo;<samp>cortex-a17.cortex-a7</samp>&rsquo;,
  787. &lsquo;<samp>cortex-a57.cortex-a53</samp>&rsquo;, &lsquo;<samp>cortex-a72.cortex-a53</samp>&rsquo;,
  788. &lsquo;<samp>cortex-a72.cortex-a35</samp>&rsquo;, &lsquo;<samp>cortex-a73.cortex-a53</samp>&rsquo;,
  789. &lsquo;<samp>cortex-a75.cortex-a55</samp>&rsquo;, &lsquo;<samp>cortex-a76.cortex-a55</samp>&rsquo;.
  790. </p>
  791. <p><samp>-mtune=generic-<var>arch</var></samp> specifies that GCC should tune the
  792. performance for a blend of processors within architecture <var>arch</var>.
  793. The aim is to generate code that run well on the current most popular
  794. processors, balancing between optimizations that benefit some CPUs in the
  795. range, and avoiding performance pitfalls of other CPUs. The effects of
  796. this option may change in future GCC versions as CPU models come and go.
  797. </p>
  798. <p><samp>-mtune</samp> permits the same extension options as <samp>-mcpu</samp>, but
  799. the extension options do not affect the tuning of the generated code.
  800. </p>
  801. <p><samp>-mtune=native</samp> causes the compiler to auto-detect the CPU
  802. of the build computer. At present, this feature is only supported on
  803. GNU/Linux, and not all architectures are recognized. If the auto-detect is
  804. unsuccessful the option has no effect.
  805. </p>
  806. </dd>
  807. <dt><code>-mcpu=<var>name</var><span class="roman">[</span>+extension&hellip;<span class="roman">]</span></code></dt>
  808. <dd><a name="index-mcpu-2"></a>
  809. <p>This specifies the name of the target ARM processor. GCC uses this name
  810. to derive the name of the target ARM architecture (as if specified
  811. by <samp>-march</samp>) and the ARM processor type for which to tune for
  812. performance (as if specified by <samp>-mtune</samp>). Where this option
  813. is used in conjunction with <samp>-march</samp> or <samp>-mtune</samp>,
  814. those options take precedence over the appropriate part of this option.
  815. </p>
  816. <p>Many of the supported CPUs implement optional architectural
  817. extensions. Where this is so the architectural extensions are
  818. normally enabled by default. If implementations that lack the
  819. extension exist, then the extension syntax can be used to disable
  820. those extensions that have been omitted. For floating-point and
  821. Advanced SIMD (Neon) instructions, the settings of the options
  822. <samp>-mfloat-abi</samp> and <samp>-mfpu</samp> must also be considered:
  823. floating-point and Advanced SIMD instructions will only be used if
  824. <samp>-mfloat-abi</samp> is not set to &lsquo;<samp>soft</samp>&rsquo;; and any setting of
  825. <samp>-mfpu</samp> other than &lsquo;<samp>auto</samp>&rsquo; will override the available
  826. floating-point and SIMD extension instructions.
  827. </p>
  828. <p>For example, &lsquo;<samp>cortex-a9</samp>&rsquo; can be found in three major
  829. configurations: integer only, with just a floating-point unit or with
  830. floating-point and Advanced SIMD. The default is to enable all the
  831. instructions, but the extensions &lsquo;<samp>+nosimd</samp>&rsquo; and &lsquo;<samp>+nofp</samp>&rsquo; can
  832. be used to disable just the SIMD or both the SIMD and floating-point
  833. instructions respectively.
  834. </p>
  835. <p>Permissible names for this option are the same as those for
  836. <samp>-mtune</samp>.
  837. </p>
  838. <p>The following extension options are common to the listed CPUs:
  839. </p>
  840. <dl compact="compact">
  841. <dt>&lsquo;<samp>+nodsp</samp>&rsquo;</dt>
  842. <dd><p>Disable the DSP instructions on &lsquo;<samp>cortex-m33</samp>&rsquo;, &lsquo;<samp>cortex-m35p</samp>&rsquo;.
  843. </p>
  844. </dd>
  845. <dt>&lsquo;<samp>+nofp</samp>&rsquo;</dt>
  846. <dd><p>Disables the floating-point instructions on &lsquo;<samp>arm9e</samp>&rsquo;,
  847. &lsquo;<samp>arm946e-s</samp>&rsquo;, &lsquo;<samp>arm966e-s</samp>&rsquo;, &lsquo;<samp>arm968e-s</samp>&rsquo;, &lsquo;<samp>arm10e</samp>&rsquo;,
  848. &lsquo;<samp>arm1020e</samp>&rsquo;, &lsquo;<samp>arm1022e</samp>&rsquo;, &lsquo;<samp>arm926ej-s</samp>&rsquo;,
  849. &lsquo;<samp>arm1026ej-s</samp>&rsquo;, &lsquo;<samp>cortex-r5</samp>&rsquo;, &lsquo;<samp>cortex-r7</samp>&rsquo;, &lsquo;<samp>cortex-r8</samp>&rsquo;,
  850. &lsquo;<samp>cortex-m4</samp>&rsquo;, &lsquo;<samp>cortex-m7</samp>&rsquo;, &lsquo;<samp>cortex-m33</samp>&rsquo; and &lsquo;<samp>cortex-m35p</samp>&rsquo;.
  851. Disables the floating-point and SIMD instructions on
  852. &lsquo;<samp>generic-armv7-a</samp>&rsquo;, &lsquo;<samp>cortex-a5</samp>&rsquo;, &lsquo;<samp>cortex-a7</samp>&rsquo;,
  853. &lsquo;<samp>cortex-a8</samp>&rsquo;, &lsquo;<samp>cortex-a9</samp>&rsquo;, &lsquo;<samp>cortex-a12</samp>&rsquo;,
  854. &lsquo;<samp>cortex-a15</samp>&rsquo;, &lsquo;<samp>cortex-a17</samp>&rsquo;, &lsquo;<samp>cortex-a15.cortex-a7</samp>&rsquo;,
  855. &lsquo;<samp>cortex-a17.cortex-a7</samp>&rsquo;, &lsquo;<samp>cortex-a32</samp>&rsquo;, &lsquo;<samp>cortex-a35</samp>&rsquo;,
  856. &lsquo;<samp>cortex-a53</samp>&rsquo; and &lsquo;<samp>cortex-a55</samp>&rsquo;.
  857. </p>
  858. </dd>
  859. <dt>&lsquo;<samp>+nofp.dp</samp>&rsquo;</dt>
  860. <dd><p>Disables the double-precision component of the floating-point instructions
  861. on &lsquo;<samp>cortex-r5</samp>&rsquo;, &lsquo;<samp>cortex-r7</samp>&rsquo;, &lsquo;<samp>cortex-r8</samp>&rsquo;, &lsquo;<samp>cortex-r52</samp>&rsquo; and
  862. &lsquo;<samp>cortex-m7</samp>&rsquo;.
  863. </p>
  864. </dd>
  865. <dt>&lsquo;<samp>+nosimd</samp>&rsquo;</dt>
  866. <dd><p>Disables the SIMD (but not floating-point) instructions on
  867. &lsquo;<samp>generic-armv7-a</samp>&rsquo;, &lsquo;<samp>cortex-a5</samp>&rsquo;, &lsquo;<samp>cortex-a7</samp>&rsquo;
  868. and &lsquo;<samp>cortex-a9</samp>&rsquo;.
  869. </p>
  870. </dd>
  871. <dt>&lsquo;<samp>+crypto</samp>&rsquo;</dt>
  872. <dd><p>Enables the cryptographic instructions on &lsquo;<samp>cortex-a32</samp>&rsquo;,
  873. &lsquo;<samp>cortex-a35</samp>&rsquo;, &lsquo;<samp>cortex-a53</samp>&rsquo;, &lsquo;<samp>cortex-a55</samp>&rsquo;, &lsquo;<samp>cortex-a57</samp>&rsquo;,
  874. &lsquo;<samp>cortex-a72</samp>&rsquo;, &lsquo;<samp>cortex-a73</samp>&rsquo;, &lsquo;<samp>cortex-a75</samp>&rsquo;, &lsquo;<samp>exynos-m1</samp>&rsquo;,
  875. &lsquo;<samp>xgene1</samp>&rsquo;, &lsquo;<samp>cortex-a57.cortex-a53</samp>&rsquo;, &lsquo;<samp>cortex-a72.cortex-a53</samp>&rsquo;,
  876. &lsquo;<samp>cortex-a73.cortex-a35</samp>&rsquo;, &lsquo;<samp>cortex-a73.cortex-a53</samp>&rsquo; and
  877. &lsquo;<samp>cortex-a75.cortex-a55</samp>&rsquo;.
  878. </p></dd>
  879. </dl>
  880. <p>Additionally the &lsquo;<samp>generic-armv7-a</samp>&rsquo; pseudo target defaults to
  881. VFPv3 with 16 double-precision registers. It supports the following
  882. extension options: &lsquo;<samp>mp</samp>&rsquo;, &lsquo;<samp>sec</samp>&rsquo;, &lsquo;<samp>vfpv3-d16</samp>&rsquo;,
  883. &lsquo;<samp>vfpv3</samp>&rsquo;, &lsquo;<samp>vfpv3-d16-fp16</samp>&rsquo;, &lsquo;<samp>vfpv3-fp16</samp>&rsquo;,
  884. &lsquo;<samp>vfpv4-d16</samp>&rsquo;, &lsquo;<samp>vfpv4</samp>&rsquo;, &lsquo;<samp>neon</samp>&rsquo;, &lsquo;<samp>neon-vfpv3</samp>&rsquo;,
  885. &lsquo;<samp>neon-fp16</samp>&rsquo;, &lsquo;<samp>neon-vfpv4</samp>&rsquo;. The meanings are the same as for
  886. the extensions to <samp>-march=armv7-a</samp>.
  887. </p>
  888. <p><samp>-mcpu=generic-<var>arch</var></samp> is also permissible, and is
  889. equivalent to <samp>-march=<var>arch</var> -mtune=generic-<var>arch</var></samp>.
  890. See <samp>-mtune</samp> for more information.
  891. </p>
  892. <p><samp>-mcpu=native</samp> causes the compiler to auto-detect the CPU
  893. of the build computer. At present, this feature is only supported on
  894. GNU/Linux, and not all architectures are recognized. If the auto-detect
  895. is unsuccessful the option has no effect.
  896. </p>
  897. </dd>
  898. <dt><code>-mfpu=<var>name</var></code></dt>
  899. <dd><a name="index-mfpu-1"></a>
  900. <p>This specifies what floating-point hardware (or hardware emulation) is
  901. available on the target. Permissible names are: &lsquo;<samp>auto</samp>&rsquo;, &lsquo;<samp>vfpv2</samp>&rsquo;,
  902. &lsquo;<samp>vfpv3</samp>&rsquo;,
  903. &lsquo;<samp>vfpv3-fp16</samp>&rsquo;, &lsquo;<samp>vfpv3-d16</samp>&rsquo;, &lsquo;<samp>vfpv3-d16-fp16</samp>&rsquo;, &lsquo;<samp>vfpv3xd</samp>&rsquo;,
  904. &lsquo;<samp>vfpv3xd-fp16</samp>&rsquo;, &lsquo;<samp>neon-vfpv3</samp>&rsquo;, &lsquo;<samp>neon-fp16</samp>&rsquo;, &lsquo;<samp>vfpv4</samp>&rsquo;,
  905. &lsquo;<samp>vfpv4-d16</samp>&rsquo;, &lsquo;<samp>fpv4-sp-d16</samp>&rsquo;, &lsquo;<samp>neon-vfpv4</samp>&rsquo;,
  906. &lsquo;<samp>fpv5-d16</samp>&rsquo;, &lsquo;<samp>fpv5-sp-d16</samp>&rsquo;,
  907. &lsquo;<samp>fp-armv8</samp>&rsquo;, &lsquo;<samp>neon-fp-armv8</samp>&rsquo; and &lsquo;<samp>crypto-neon-fp-armv8</samp>&rsquo;.
  908. Note that &lsquo;<samp>neon</samp>&rsquo; is an alias for &lsquo;<samp>neon-vfpv3</samp>&rsquo; and &lsquo;<samp>vfp</samp>&rsquo;
  909. is an alias for &lsquo;<samp>vfpv2</samp>&rsquo;.
  910. </p>
  911. <p>The setting &lsquo;<samp>auto</samp>&rsquo; is the default and is special. It causes the
  912. compiler to select the floating-point and Advanced SIMD instructions
  913. based on the settings of <samp>-mcpu</samp> and <samp>-march</samp>.
  914. </p>
  915. <p>If the selected floating-point hardware includes the NEON extension
  916. (e.g. <samp>-mfpu=neon</samp>), note that floating-point
  917. operations are not generated by GCC&rsquo;s auto-vectorization pass unless
  918. <samp>-funsafe-math-optimizations</samp> is also specified. This is
  919. because NEON hardware does not fully implement the IEEE 754 standard for
  920. floating-point arithmetic (in particular denormal values are treated as
  921. zero), so the use of NEON instructions may lead to a loss of precision.
  922. </p>
  923. <p>You can also set the fpu name at function level by using the <code>target(&quot;fpu=&quot;)</code> function attributes (see <a href="ARM-Function-Attributes.html#ARM-Function-Attributes">ARM Function Attributes</a>) or pragmas (see <a href="Function-Specific-Option-Pragmas.html#Function-Specific-Option-Pragmas">Function Specific Option Pragmas</a>).
  924. </p>
  925. </dd>
  926. <dt><code>-mfp16-format=<var>name</var></code></dt>
  927. <dd><a name="index-mfp16_002dformat"></a>
  928. <p>Specify the format of the <code>__fp16</code> half-precision floating-point type.
  929. Permissible names are &lsquo;<samp>none</samp>&rsquo;, &lsquo;<samp>ieee</samp>&rsquo;, and &lsquo;<samp>alternative</samp>&rsquo;;
  930. the default is &lsquo;<samp>none</samp>&rsquo;, in which case the <code>__fp16</code> type is not
  931. defined. See <a href="Half_002dPrecision.html#Half_002dPrecision">Half-Precision</a>, for more information.
  932. </p>
  933. </dd>
  934. <dt><code>-mstructure-size-boundary=<var>n</var></code></dt>
  935. <dd><a name="index-mstructure_002dsize_002dboundary"></a>
  936. <p>The sizes of all structures and unions are rounded up to a multiple
  937. of the number of bits set by this option. Permissible values are 8, 32
  938. and 64. The default value varies for different toolchains. For the COFF
  939. targeted toolchain the default value is 8. A value of 64 is only allowed
  940. if the underlying ABI supports it.
  941. </p>
  942. <p>Specifying a larger number can produce faster, more efficient code, but
  943. can also increase the size of the program. Different values are potentially
  944. incompatible. Code compiled with one value cannot necessarily expect to
  945. work with code or libraries compiled with another value, if they exchange
  946. information using structures or unions.
  947. </p>
  948. <p>This option is deprecated.
  949. </p>
  950. </dd>
  951. <dt><code>-mabort-on-noreturn</code></dt>
  952. <dd><a name="index-mabort_002don_002dnoreturn"></a>
  953. <p>Generate a call to the function <code>abort</code> at the end of a
  954. <code>noreturn</code> function. It is executed if the function tries to
  955. return.
  956. </p>
  957. </dd>
  958. <dt><code>-mlong-calls</code></dt>
  959. <dt><code>-mno-long-calls</code></dt>
  960. <dd><a name="index-mlong_002dcalls-2"></a>
  961. <a name="index-mno_002dlong_002dcalls"></a>
  962. <p>Tells the compiler to perform function calls by first loading the
  963. address of the function into a register and then performing a subroutine
  964. call on this register. This switch is needed if the target function
  965. lies outside of the 64-megabyte addressing range of the offset-based
  966. version of subroutine call instruction.
  967. </p>
  968. <p>Even if this switch is enabled, not all function calls are turned
  969. into long calls. The heuristic is that static functions, functions
  970. that have the <code>short_call</code> attribute, functions that are inside
  971. the scope of a <code>#pragma no_long_calls</code> directive, and functions whose
  972. definitions have already been compiled within the current compilation
  973. unit are not turned into long calls. The exceptions to this rule are
  974. that weak function definitions, functions with the <code>long_call</code>
  975. attribute or the <code>section</code> attribute, and functions that are within
  976. the scope of a <code>#pragma long_calls</code> directive are always
  977. turned into long calls.
  978. </p>
  979. <p>This feature is not enabled by default. Specifying
  980. <samp>-mno-long-calls</samp> restores the default behavior, as does
  981. placing the function calls within the scope of a <code>#pragma
  982. long_calls_off</code> directive. Note these switches have no effect on how
  983. the compiler generates code to handle function calls via function
  984. pointers.
  985. </p>
  986. </dd>
  987. <dt><code>-msingle-pic-base</code></dt>
  988. <dd><a name="index-msingle_002dpic_002dbase"></a>
  989. <p>Treat the register used for PIC addressing as read-only, rather than
  990. loading it in the prologue for each function. The runtime system is
  991. responsible for initializing this register with an appropriate value
  992. before execution begins.
  993. </p>
  994. </dd>
  995. <dt><code>-mpic-register=<var>reg</var></code></dt>
  996. <dd><a name="index-mpic_002dregister"></a>
  997. <p>Specify the register to be used for PIC addressing.
  998. For standard PIC base case, the default is any suitable register
  999. determined by compiler. For single PIC base case, the default is
  1000. &lsquo;<samp>R9</samp>&rsquo; if target is EABI based or stack-checking is enabled,
  1001. otherwise the default is &lsquo;<samp>R10</samp>&rsquo;.
  1002. </p>
  1003. </dd>
  1004. <dt><code>-mpic-data-is-text-relative</code></dt>
  1005. <dd><a name="index-mpic_002ddata_002dis_002dtext_002drelative"></a>
  1006. <p>Assume that the displacement between the text and data segments is fixed
  1007. at static link time. This permits using PC-relative addressing
  1008. operations to access data known to be in the data segment. For
  1009. non-VxWorks RTP targets, this option is enabled by default. When
  1010. disabled on such targets, it will enable <samp>-msingle-pic-base</samp> by
  1011. default.
  1012. </p>
  1013. </dd>
  1014. <dt><code>-mpoke-function-name</code></dt>
  1015. <dd><a name="index-mpoke_002dfunction_002dname"></a>
  1016. <p>Write the name of each function into the text section, directly
  1017. preceding the function prologue. The generated code is similar to this:
  1018. </p>
  1019. <div class="smallexample">
  1020. <pre class="smallexample"> t0
  1021. .ascii &quot;arm_poke_function_name&quot;, 0
  1022. .align
  1023. t1
  1024. .word 0xff000000 + (t1 - t0)
  1025. arm_poke_function_name
  1026. mov ip, sp
  1027. stmfd sp!, {fp, ip, lr, pc}
  1028. sub fp, ip, #4
  1029. </pre></div>
  1030. <p>When performing a stack backtrace, code can inspect the value of
  1031. <code>pc</code> stored at <code>fp + 0</code>. If the trace function then looks at
  1032. location <code>pc - 12</code> and the top 8 bits are set, then we know that
  1033. there is a function name embedded immediately preceding this location
  1034. and has length <code>((pc[-3]) &amp; 0xff000000)</code>.
  1035. </p>
  1036. </dd>
  1037. <dt><code>-mthumb</code></dt>
  1038. <dt><code>-marm</code></dt>
  1039. <dd><a name="index-marm"></a>
  1040. <a name="index-mthumb"></a>
  1041. <p>Select between generating code that executes in ARM and Thumb
  1042. states. The default for most configurations is to generate code
  1043. that executes in ARM state, but the default can be changed by
  1044. configuring GCC with the <samp>--with-mode=</samp><var>state</var>
  1045. configure option.
  1046. </p>
  1047. <p>You can also override the ARM and Thumb mode for each function
  1048. by using the <code>target(&quot;thumb&quot;)</code> and <code>target(&quot;arm&quot;)</code> function attributes
  1049. (see <a href="ARM-Function-Attributes.html#ARM-Function-Attributes">ARM Function Attributes</a>) or pragmas (see <a href="Function-Specific-Option-Pragmas.html#Function-Specific-Option-Pragmas">Function Specific Option Pragmas</a>).
  1050. </p>
  1051. </dd>
  1052. <dt><code>-mflip-thumb</code></dt>
  1053. <dd><a name="index-mflip_002dthumb"></a>
  1054. <p>Switch ARM/Thumb modes on alternating functions.
  1055. This option is provided for regression testing of mixed Thumb/ARM code
  1056. generation, and is not intended for ordinary use in compiling code.
  1057. </p>
  1058. </dd>
  1059. <dt><code>-mtpcs-frame</code></dt>
  1060. <dd><a name="index-mtpcs_002dframe"></a>
  1061. <p>Generate a stack frame that is compliant with the Thumb Procedure Call
  1062. Standard for all non-leaf functions. (A leaf function is one that does
  1063. not call any other functions.) The default is <samp>-mno-tpcs-frame</samp>.
  1064. </p>
  1065. </dd>
  1066. <dt><code>-mtpcs-leaf-frame</code></dt>
  1067. <dd><a name="index-mtpcs_002dleaf_002dframe"></a>
  1068. <p>Generate a stack frame that is compliant with the Thumb Procedure Call
  1069. Standard for all leaf functions. (A leaf function is one that does
  1070. not call any other functions.) The default is <samp>-mno-apcs-leaf-frame</samp>.
  1071. </p>
  1072. </dd>
  1073. <dt><code>-mcallee-super-interworking</code></dt>
  1074. <dd><a name="index-mcallee_002dsuper_002dinterworking"></a>
  1075. <p>Gives all externally visible functions in the file being compiled an ARM
  1076. instruction set header which switches to Thumb mode before executing the
  1077. rest of the function. This allows these functions to be called from
  1078. non-interworking code. This option is not valid in AAPCS configurations
  1079. because interworking is enabled by default.
  1080. </p>
  1081. </dd>
  1082. <dt><code>-mcaller-super-interworking</code></dt>
  1083. <dd><a name="index-mcaller_002dsuper_002dinterworking"></a>
  1084. <p>Allows calls via function pointers (including virtual functions) to
  1085. execute correctly regardless of whether the target code has been
  1086. compiled for interworking or not. There is a small overhead in the cost
  1087. of executing a function pointer if this option is enabled. This option
  1088. is not valid in AAPCS configurations because interworking is enabled
  1089. by default.
  1090. </p>
  1091. </dd>
  1092. <dt><code>-mtp=<var>name</var></code></dt>
  1093. <dd><a name="index-mtp"></a>
  1094. <p>Specify the access model for the thread local storage pointer. The valid
  1095. models are &lsquo;<samp>soft</samp>&rsquo;, which generates calls to <code>__aeabi_read_tp</code>,
  1096. &lsquo;<samp>cp15</samp>&rsquo;, which fetches the thread pointer from <code>cp15</code> directly
  1097. (supported in the arm6k architecture), and &lsquo;<samp>auto</samp>&rsquo;, which uses the
  1098. best available method for the selected processor. The default setting is
  1099. &lsquo;<samp>auto</samp>&rsquo;.
  1100. </p>
  1101. </dd>
  1102. <dt><code>-mtls-dialect=<var>dialect</var></code></dt>
  1103. <dd><a name="index-mtls_002ddialect"></a>
  1104. <p>Specify the dialect to use for accessing thread local storage. Two
  1105. <var>dialect</var>s are supported&mdash;&lsquo;<samp>gnu</samp>&rsquo; and &lsquo;<samp>gnu2</samp>&rsquo;. The
  1106. &lsquo;<samp>gnu</samp>&rsquo; dialect selects the original GNU scheme for supporting
  1107. local and global dynamic TLS models. The &lsquo;<samp>gnu2</samp>&rsquo; dialect
  1108. selects the GNU descriptor scheme, which provides better performance
  1109. for shared libraries. The GNU descriptor scheme is compatible with
  1110. the original scheme, but does require new assembler, linker and
  1111. library support. Initial and local exec TLS models are unaffected by
  1112. this option and always use the original scheme.
  1113. </p>
  1114. </dd>
  1115. <dt><code>-mword-relocations</code></dt>
  1116. <dd><a name="index-mword_002drelocations"></a>
  1117. <p>Only generate absolute relocations on word-sized values (i.e. R_ARM_ABS32).
  1118. This is enabled by default on targets (uClinux, SymbianOS) where the runtime
  1119. loader imposes this restriction, and when <samp>-fpic</samp> or <samp>-fPIC</samp>
  1120. is specified. This option conflicts with <samp>-mslow-flash-data</samp>.
  1121. </p>
  1122. </dd>
  1123. <dt><code>-mfix-cortex-m3-ldrd</code></dt>
  1124. <dd><a name="index-mfix_002dcortex_002dm3_002dldrd"></a>
  1125. <p>Some Cortex-M3 cores can cause data corruption when <code>ldrd</code> instructions
  1126. with overlapping destination and base registers are used. This option avoids
  1127. generating these instructions. This option is enabled by default when
  1128. <samp>-mcpu=cortex-m3</samp> is specified.
  1129. </p>
  1130. </dd>
  1131. <dt><code>-munaligned-access</code></dt>
  1132. <dt><code>-mno-unaligned-access</code></dt>
  1133. <dd><a name="index-munaligned_002daccess"></a>
  1134. <a name="index-mno_002dunaligned_002daccess"></a>
  1135. <p>Enables (or disables) reading and writing of 16- and 32- bit values
  1136. from addresses that are not 16- or 32- bit aligned. By default
  1137. unaligned access is disabled for all pre-ARMv6, all ARMv6-M and for
  1138. ARMv8-M Baseline architectures, and enabled for all other
  1139. architectures. If unaligned access is not enabled then words in packed
  1140. data structures are accessed a byte at a time.
  1141. </p>
  1142. <p>The ARM attribute <code>Tag_CPU_unaligned_access</code> is set in the
  1143. generated object file to either true or false, depending upon the
  1144. setting of this option. If unaligned access is enabled then the
  1145. preprocessor symbol <code>__ARM_FEATURE_UNALIGNED</code> is also
  1146. defined.
  1147. </p>
  1148. </dd>
  1149. <dt><code>-mneon-for-64bits</code></dt>
  1150. <dd><a name="index-mneon_002dfor_002d64bits"></a>
  1151. <p>This option is deprecated and has no effect.
  1152. </p>
  1153. </dd>
  1154. <dt><code>-mslow-flash-data</code></dt>
  1155. <dd><a name="index-mslow_002dflash_002ddata"></a>
  1156. <p>Assume loading data from flash is slower than fetching instruction.
  1157. Therefore literal load is minimized for better performance.
  1158. This option is only supported when compiling for ARMv7 M-profile and
  1159. off by default. It conflicts with <samp>-mword-relocations</samp>.
  1160. </p>
  1161. </dd>
  1162. <dt><code>-masm-syntax-unified</code></dt>
  1163. <dd><a name="index-masm_002dsyntax_002dunified"></a>
  1164. <p>Assume inline assembler is using unified asm syntax. The default is
  1165. currently off which implies divided syntax. This option has no impact
  1166. on Thumb2. However, this may change in future releases of GCC.
  1167. Divided syntax should be considered deprecated.
  1168. </p>
  1169. </dd>
  1170. <dt><code>-mrestrict-it</code></dt>
  1171. <dd><a name="index-mrestrict_002dit"></a>
  1172. <p>Restricts generation of IT blocks to conform to the rules of ARMv8-A.
  1173. IT blocks can only contain a single 16-bit instruction from a select
  1174. set of instructions. This option is on by default for ARMv8-A Thumb mode.
  1175. </p>
  1176. </dd>
  1177. <dt><code>-mprint-tune-info</code></dt>
  1178. <dd><a name="index-mprint_002dtune_002dinfo"></a>
  1179. <p>Print CPU tuning information as comment in assembler file. This is
  1180. an option used only for regression testing of the compiler and not
  1181. intended for ordinary use in compiling code. This option is disabled
  1182. by default.
  1183. </p>
  1184. </dd>
  1185. <dt><code>-mverbose-cost-dump</code></dt>
  1186. <dd><a name="index-mverbose_002dcost_002ddump-1"></a>
  1187. <p>Enable verbose cost model dumping in the debug dump files. This option is
  1188. provided for use in debugging the compiler.
  1189. </p>
  1190. </dd>
  1191. <dt><code>-mpure-code</code></dt>
  1192. <dd><a name="index-mpure_002dcode"></a>
  1193. <p>Do not allow constant data to be placed in code sections.
  1194. Additionally, when compiling for ELF object format give all text sections the
  1195. ELF processor-specific section attribute <code>SHF_ARM_PURECODE</code>. This option
  1196. is only available when generating non-pic code for M-profile targets.
  1197. </p>
  1198. </dd>
  1199. <dt><code>-mcmse</code></dt>
  1200. <dd><a name="index-mcmse"></a>
  1201. <p>Generate secure code as per the &quot;ARMv8-M Security Extensions: Requirements on
  1202. Development Tools Engineering Specification&quot;, which can be found on
  1203. <a href="https://developer.arm.com/documentation/ecm0359818/latest/">https://developer.arm.com/documentation/ecm0359818/latest/</a>.
  1204. </p>
  1205. </dd>
  1206. <dt><code>-mfdpic</code></dt>
  1207. <dt><code>-mno-fdpic</code></dt>
  1208. <dd><a name="index-mfdpic"></a>
  1209. <a name="index-mno_002dfdpic"></a>
  1210. <p>Select the FDPIC ABI, which uses 64-bit function descriptors to
  1211. represent pointers to functions. When the compiler is configured for
  1212. <code>arm-*-uclinuxfdpiceabi</code> targets, this option is on by default
  1213. and implies <samp>-fPIE</samp> if none of the PIC/PIE-related options is
  1214. provided. On other targets, it only enables the FDPIC-specific code
  1215. generation features, and the user should explicitly provide the
  1216. PIC/PIE-related options as needed.
  1217. </p>
  1218. <p>Note that static linking is not supported because it would still
  1219. involve the dynamic linker when the program self-relocates. If such
  1220. behavior is acceptable, use -static and -Wl,-dynamic-linker options.
  1221. </p>
  1222. <p>The opposite <samp>-mno-fdpic</samp> option is useful (and required) to
  1223. build the Linux kernel using the same (<code>arm-*-uclinuxfdpiceabi</code>)
  1224. toolchain as the one used to build the userland programs.
  1225. </p>
  1226. </dd>
  1227. </dl>
  1228. <hr>
  1229. <div class="header">
  1230. <p>
  1231. Next: <a href="AVR-Options.html#AVR-Options" accesskey="n" rel="next">AVR Options</a>, Previous: <a href="ARC-Options.html#ARC-Options" accesskey="p" rel="prev">ARC 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>
  1232. </div>
  1233. </body>
  1234. </html>