V850-Options.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  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-2017 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 5.2, http://www.gnu.org/software/texinfo/ -->
  18. <head>
  19. <title>Using the GNU Compiler Collection (GCC): V850 Options</title>
  20. <meta name="description" content="Using the GNU Compiler Collection (GCC): V850 Options">
  21. <meta name="keywords" content="Using the GNU Compiler Collection (GCC): V850 Options">
  22. <meta name="resource-type" content="document">
  23. <meta name="distribution" content="global">
  24. <meta name="Generator" content="makeinfo">
  25. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  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="VAX-Options.html#VAX-Options" rel="next" title="VAX Options">
  31. <link href="TILEPro-Options.html#TILEPro-Options" rel="prev" title="TILEPro Options">
  32. <style type="text/css">
  33. <!--
  34. a.summary-letter {text-decoration: none}
  35. blockquote.smallquotation {font-size: smaller}
  36. div.display {margin-left: 3.2em}
  37. div.example {margin-left: 3.2em}
  38. div.indentedblock {margin-left: 3.2em}
  39. div.lisp {margin-left: 3.2em}
  40. div.smalldisplay {margin-left: 3.2em}
  41. div.smallexample {margin-left: 3.2em}
  42. div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
  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.nocodebreak {white-space:nowrap}
  54. span.nolinebreak {white-space:nowrap}
  55. span.roman {font-family:serif; font-weight:normal}
  56. span.sansserif {font-family:sans-serif; font-weight:normal}
  57. ul.no-bullet {list-style: none}
  58. -->
  59. </style>
  60. </head>
  61. <body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
  62. <a name="V850-Options"></a>
  63. <div class="header">
  64. <p>
  65. Next: <a href="VAX-Options.html#VAX-Options" accesskey="n" rel="next">VAX Options</a>, Previous: <a href="TILEPro-Options.html#TILEPro-Options" accesskey="p" rel="prev">TILEPro 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>
  66. </div>
  67. <hr>
  68. <a name="V850-Options-1"></a>
  69. <h4 class="subsection">3.18.50 V850 Options</h4>
  70. <a name="index-V850-Options"></a>
  71. <p>These &lsquo;<samp>-m</samp>&rsquo; options are defined for V850 implementations:
  72. </p>
  73. <dl compact="compact">
  74. <dt><code>-mlong-calls</code></dt>
  75. <dt><code>-mno-long-calls</code></dt>
  76. <dd><a name="index-mlong_002dcalls-6"></a>
  77. <a name="index-mno_002dlong_002dcalls-4"></a>
  78. <p>Treat all calls as being far away (near). If calls are assumed to be
  79. far away, the compiler always loads the function&rsquo;s address into a
  80. register, and calls indirect through the pointer.
  81. </p>
  82. </dd>
  83. <dt><code>-mno-ep</code></dt>
  84. <dt><code>-mep</code></dt>
  85. <dd><a name="index-mno_002dep"></a>
  86. <a name="index-mep"></a>
  87. <p>Do not optimize (do optimize) basic blocks that use the same index
  88. pointer 4 or more times to copy pointer into the <code>ep</code> register, and
  89. use the shorter <code>sld</code> and <code>sst</code> instructions. The <samp>-mep</samp>
  90. option is on by default if you optimize.
  91. </p>
  92. </dd>
  93. <dt><code>-mno-prolog-function</code></dt>
  94. <dt><code>-mprolog-function</code></dt>
  95. <dd><a name="index-mno_002dprolog_002dfunction"></a>
  96. <a name="index-mprolog_002dfunction"></a>
  97. <p>Do not use (do use) external functions to save and restore registers
  98. at the prologue and epilogue of a function. The external functions
  99. are slower, but use less code space if more than one function saves
  100. the same number of registers. The <samp>-mprolog-function</samp> option
  101. is on by default if you optimize.
  102. </p>
  103. </dd>
  104. <dt><code>-mspace</code></dt>
  105. <dd><a name="index-mspace"></a>
  106. <p>Try to make the code as small as possible. At present, this just turns
  107. on the <samp>-mep</samp> and <samp>-mprolog-function</samp> options.
  108. </p>
  109. </dd>
  110. <dt><code>-mtda=<var>n</var></code></dt>
  111. <dd><a name="index-mtda"></a>
  112. <p>Put static or global variables whose size is <var>n</var> bytes or less into
  113. the tiny data area that register <code>ep</code> points to. The tiny data
  114. area can hold up to 256 bytes in total (128 bytes for byte references).
  115. </p>
  116. </dd>
  117. <dt><code>-msda=<var>n</var></code></dt>
  118. <dd><a name="index-msda"></a>
  119. <p>Put static or global variables whose size is <var>n</var> bytes or less into
  120. the small data area that register <code>gp</code> points to. The small data
  121. area can hold up to 64 kilobytes.
  122. </p>
  123. </dd>
  124. <dt><code>-mzda=<var>n</var></code></dt>
  125. <dd><a name="index-mzda"></a>
  126. <p>Put static or global variables whose size is <var>n</var> bytes or less into
  127. the first 32 kilobytes of memory.
  128. </p>
  129. </dd>
  130. <dt><code>-mv850</code></dt>
  131. <dd><a name="index-mv850"></a>
  132. <p>Specify that the target processor is the V850.
  133. </p>
  134. </dd>
  135. <dt><code>-mv850e3v5</code></dt>
  136. <dd><a name="index-mv850e3v5"></a>
  137. <p>Specify that the target processor is the V850E3V5. The preprocessor
  138. constant <code>__v850e3v5__</code> is defined if this option is used.
  139. </p>
  140. </dd>
  141. <dt><code>-mv850e2v4</code></dt>
  142. <dd><a name="index-mv850e2v4"></a>
  143. <p>Specify that the target processor is the V850E3V5. This is an alias for
  144. the <samp>-mv850e3v5</samp> option.
  145. </p>
  146. </dd>
  147. <dt><code>-mv850e2v3</code></dt>
  148. <dd><a name="index-mv850e2v3"></a>
  149. <p>Specify that the target processor is the V850E2V3. The preprocessor
  150. constant <code>__v850e2v3__</code> is defined if this option is used.
  151. </p>
  152. </dd>
  153. <dt><code>-mv850e2</code></dt>
  154. <dd><a name="index-mv850e2"></a>
  155. <p>Specify that the target processor is the V850E2. The preprocessor
  156. constant <code>__v850e2__</code> is defined if this option is used.
  157. </p>
  158. </dd>
  159. <dt><code>-mv850e1</code></dt>
  160. <dd><a name="index-mv850e1"></a>
  161. <p>Specify that the target processor is the V850E1. The preprocessor
  162. constants <code>__v850e1__</code> and <code>__v850e__</code> are defined if
  163. this option is used.
  164. </p>
  165. </dd>
  166. <dt><code>-mv850es</code></dt>
  167. <dd><a name="index-mv850es"></a>
  168. <p>Specify that the target processor is the V850ES. This is an alias for
  169. the <samp>-mv850e1</samp> option.
  170. </p>
  171. </dd>
  172. <dt><code>-mv850e</code></dt>
  173. <dd><a name="index-mv850e"></a>
  174. <p>Specify that the target processor is the V850E. The preprocessor
  175. constant <code>__v850e__</code> is defined if this option is used.
  176. </p>
  177. <p>If neither <samp>-mv850</samp> nor <samp>-mv850e</samp> nor <samp>-mv850e1</samp>
  178. nor <samp>-mv850e2</samp> nor <samp>-mv850e2v3</samp> nor <samp>-mv850e3v5</samp>
  179. are defined then a default target processor is chosen and the
  180. relevant &lsquo;<samp>__v850*__</samp>&rsquo; preprocessor constant is defined.
  181. </p>
  182. <p>The preprocessor constants <code>__v850</code> and <code>__v851__</code> are always
  183. defined, regardless of which processor variant is the target.
  184. </p>
  185. </dd>
  186. <dt><code>-mdisable-callt</code></dt>
  187. <dt><code>-mno-disable-callt</code></dt>
  188. <dd><a name="index-mdisable_002dcallt"></a>
  189. <a name="index-mno_002ddisable_002dcallt"></a>
  190. <p>This option suppresses generation of the <code>CALLT</code> instruction for the
  191. v850e, v850e1, v850e2, v850e2v3 and v850e3v5 flavors of the v850
  192. architecture.
  193. </p>
  194. <p>This option is enabled by default when the RH850 ABI is
  195. in use (see <samp>-mrh850-abi</samp>), and disabled by default when the
  196. GCC ABI is in use. If <code>CALLT</code> instructions are being generated
  197. then the C preprocessor symbol <code>__V850_CALLT__</code> is defined.
  198. </p>
  199. </dd>
  200. <dt><code>-mrelax</code></dt>
  201. <dt><code>-mno-relax</code></dt>
  202. <dd><a name="index-mrelax-7"></a>
  203. <a name="index-mno_002drelax"></a>
  204. <p>Pass on (or do not pass on) the <samp>-mrelax</samp> command-line option
  205. to the assembler.
  206. </p>
  207. </dd>
  208. <dt><code>-mlong-jumps</code></dt>
  209. <dt><code>-mno-long-jumps</code></dt>
  210. <dd><a name="index-mlong_002djumps"></a>
  211. <a name="index-mno_002dlong_002djumps"></a>
  212. <p>Disable (or re-enable) the generation of PC-relative jump instructions.
  213. </p>
  214. </dd>
  215. <dt><code>-msoft-float</code></dt>
  216. <dt><code>-mhard-float</code></dt>
  217. <dd><a name="index-msoft_002dfloat-11"></a>
  218. <a name="index-mhard_002dfloat-7"></a>
  219. <p>Disable (or re-enable) the generation of hardware floating point
  220. instructions. This option is only significant when the target
  221. architecture is &lsquo;<samp>V850E2V3</samp>&rsquo; or higher. If hardware floating point
  222. instructions are being generated then the C preprocessor symbol
  223. <code>__FPU_OK__</code> is defined, otherwise the symbol
  224. <code>__NO_FPU__</code> is defined.
  225. </p>
  226. </dd>
  227. <dt><code>-mloop</code></dt>
  228. <dd><a name="index-mloop"></a>
  229. <p>Enables the use of the e3v5 LOOP instruction. The use of this
  230. instruction is not enabled by default when the e3v5 architecture is
  231. selected because its use is still experimental.
  232. </p>
  233. </dd>
  234. <dt><code>-mrh850-abi</code></dt>
  235. <dt><code>-mghs</code></dt>
  236. <dd><a name="index-mrh850_002dabi"></a>
  237. <a name="index-mghs"></a>
  238. <p>Enables support for the RH850 version of the V850 ABI. This is the
  239. default. With this version of the ABI the following rules apply:
  240. </p>
  241. <ul>
  242. <li> Integer sized structures and unions are returned via a memory pointer
  243. rather than a register.
  244. </li><li> Large structures and unions (more than 8 bytes in size) are passed by
  245. value.
  246. </li><li> Functions are aligned to 16-bit boundaries.
  247. </li><li> The <samp>-m8byte-align</samp> command-line option is supported.
  248. </li><li> The <samp>-mdisable-callt</samp> command-line option is enabled by
  249. default. The <samp>-mno-disable-callt</samp> command-line option is not
  250. supported.
  251. </li></ul>
  252. <p>When this version of the ABI is enabled the C preprocessor symbol
  253. <code>__V850_RH850_ABI__</code> is defined.
  254. </p>
  255. </dd>
  256. <dt><code>-mgcc-abi</code></dt>
  257. <dd><a name="index-mgcc_002dabi"></a>
  258. <p>Enables support for the old GCC version of the V850 ABI. With this
  259. version of the ABI the following rules apply:
  260. </p>
  261. <ul>
  262. <li> Integer sized structures and unions are returned in register <code>r10</code>.
  263. </li><li> Large structures and unions (more than 8 bytes in size) are passed by
  264. reference.
  265. </li><li> Functions are aligned to 32-bit boundaries, unless optimizing for
  266. size.
  267. </li><li> The <samp>-m8byte-align</samp> command-line option is not supported.
  268. </li><li> The <samp>-mdisable-callt</samp> command-line option is supported but not
  269. enabled by default.
  270. </li></ul>
  271. <p>When this version of the ABI is enabled the C preprocessor symbol
  272. <code>__V850_GCC_ABI__</code> is defined.
  273. </p>
  274. </dd>
  275. <dt><code>-m8byte-align</code></dt>
  276. <dt><code>-mno-8byte-align</code></dt>
  277. <dd><a name="index-m8byte_002dalign"></a>
  278. <a name="index-mno_002d8byte_002dalign"></a>
  279. <p>Enables support for <code>double</code> and <code>long long</code> types to be
  280. aligned on 8-byte boundaries. The default is to restrict the
  281. alignment of all objects to at most 4-bytes. When
  282. <samp>-m8byte-align</samp> is in effect the C preprocessor symbol
  283. <code>__V850_8BYTE_ALIGN__</code> is defined.
  284. </p>
  285. </dd>
  286. <dt><code>-mbig-switch</code></dt>
  287. <dd><a name="index-mbig_002dswitch"></a>
  288. <p>Generate code suitable for big switch tables. Use this option only if
  289. the assembler/linker complain about out of range branches within a switch
  290. table.
  291. </p>
  292. </dd>
  293. <dt><code>-mapp-regs</code></dt>
  294. <dd><a name="index-mapp_002dregs-1"></a>
  295. <p>This option causes r2 and r5 to be used in the code generated by
  296. the compiler. This setting is the default.
  297. </p>
  298. </dd>
  299. <dt><code>-mno-app-regs</code></dt>
  300. <dd><a name="index-mno_002dapp_002dregs-1"></a>
  301. <p>This option causes r2 and r5 to be treated as fixed registers.
  302. </p>
  303. </dd>
  304. </dl>
  305. <hr>
  306. <div class="header">
  307. <p>
  308. Next: <a href="VAX-Options.html#VAX-Options" accesskey="n" rel="next">VAX Options</a>, Previous: <a href="TILEPro-Options.html#TILEPro-Options" accesskey="p" rel="prev">TILEPro 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>
  309. </div>
  310. </body>
  311. </html>