summaryrefslogtreecommitdiff
path: root/devdocs/gcc~13/v850-options.html
blob: 669e9df4ddf9f2d459b9f79502594e015d1ee5ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<div class="subsection-level-extent" id="V850-Options"> <div class="nav-panel"> <p> Next: <a href="vax-options" accesskey="n" rel="next">VAX Options</a>, Previous: <a href="system-v-options" accesskey="p" rel="prev">Options for System V</a>, Up: <a href="submodel-options" accesskey="u" rel="up">Machine-Dependent Options</a> [<a href="index#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="indices" title="Index" rel="index">Index</a>]</p> </div>  <h1 class="subsection" id="V850-Options-1"><span>3.19.49 V850 Options<a class="copiable-link" href="#V850-Options-1"> ¶</a></span></h1>  <p>These ‘<samp class="samp">-m</samp>’ options are defined for V850 implementations: </p> <dl class="table"> <dt>
 <span><code class="code">-mlong-calls</code><a class="copiable-link" href="#index-mlong-calls-7"> ¶</a></span>
</dt> <dt><code class="code">-mno-long-calls</code></dt> <dd>
<p>Treat all calls as being far away (near). If calls are assumed to be far away, the compiler always loads the function’s address into a register, and calls indirect through the pointer. </p> </dd> <dt>
 <span><code class="code">-mno-ep</code><a class="copiable-link" href="#index-mno-ep"> ¶</a></span>
</dt> <dt><code class="code">-mep</code></dt> <dd>
<p>Do not optimize (do optimize) basic blocks that use the same index pointer 4 or more times to copy pointer into the <code class="code">ep</code> register, and use the shorter <code class="code">sld</code> and <code class="code">sst</code> instructions. The <samp class="option">-mep</samp> option is on by default if you optimize. </p> </dd> <dt>
 <span><code class="code">-mno-prolog-function</code><a class="copiable-link" href="#index-mno-prolog-function"> ¶</a></span>
</dt> <dt><code class="code">-mprolog-function</code></dt> <dd>
<p>Do not use (do use) external functions to save and restore registers at the prologue and epilogue of a function. The external functions are slower, but use less code space if more than one function saves the same number of registers. The <samp class="option">-mprolog-function</samp> option is on by default if you optimize. </p> </dd> <dt>
<span><code class="code">-mspace</code><a class="copiable-link" href="#index-mspace"> ¶</a></span>
</dt> <dd>
<p>Try to make the code as small as possible. At present, this just turns on the <samp class="option">-mep</samp> and <samp class="option">-mprolog-function</samp> options. </p> </dd> <dt>
<span><code class="code">-mtda=<var class="var">n</var></code><a class="copiable-link" href="#index-mtda"> ¶</a></span>
</dt> <dd>
<p>Put static or global variables whose size is <var class="var">n</var> bytes or less into the tiny data area that register <code class="code">ep</code> points to. The tiny data area can hold up to 256 bytes in total (128 bytes for byte references). </p> </dd> <dt>
<span><code class="code">-msda=<var class="var">n</var></code><a class="copiable-link" href="#index-msda"> ¶</a></span>
</dt> <dd>
<p>Put static or global variables whose size is <var class="var">n</var> bytes or less into the small data area that register <code class="code">gp</code> points to. The small data area can hold up to 64 kilobytes. </p> </dd> <dt>
<span><code class="code">-mzda=<var class="var">n</var></code><a class="copiable-link" href="#index-mzda"> ¶</a></span>
</dt> <dd>
<p>Put static or global variables whose size is <var class="var">n</var> bytes or less into the first 32 kilobytes of memory. </p> </dd> <dt>
<span><code class="code">-mv850</code><a class="copiable-link" href="#index-mv850"> ¶</a></span>
</dt> <dd>
<p>Specify that the target processor is the V850. </p> </dd> <dt>
<span><code class="code">-mv850e3v5</code><a class="copiable-link" href="#index-mv850e3v5"> ¶</a></span>
</dt> <dd>
<p>Specify that the target processor is the V850E3V5. The preprocessor constant <code class="code">__v850e3v5__</code> is defined if this option is used. </p> </dd> <dt>
<span><code class="code">-mv850e2v4</code><a class="copiable-link" href="#index-mv850e2v4"> ¶</a></span>
</dt> <dd>
<p>Specify that the target processor is the V850E3V5. This is an alias for the <samp class="option">-mv850e3v5</samp> option. </p> </dd> <dt>
<span><code class="code">-mv850e2v3</code><a class="copiable-link" href="#index-mv850e2v3"> ¶</a></span>
</dt> <dd>
<p>Specify that the target processor is the V850E2V3. The preprocessor constant <code class="code">__v850e2v3__</code> is defined if this option is used. </p> </dd> <dt>
<span><code class="code">-mv850e2</code><a class="copiable-link" href="#index-mv850e2"> ¶</a></span>
</dt> <dd>
<p>Specify that the target processor is the V850E2. The preprocessor constant <code class="code">__v850e2__</code> is defined if this option is used. </p> </dd> <dt>
<span><code class="code">-mv850e1</code><a class="copiable-link" href="#index-mv850e1"> ¶</a></span>
</dt> <dd>
<p>Specify that the target processor is the V850E1. The preprocessor constants <code class="code">__v850e1__</code> and <code class="code">__v850e__</code> are defined if this option is used. </p> </dd> <dt>
<span><code class="code">-mv850es</code><a class="copiable-link" href="#index-mv850es"> ¶</a></span>
</dt> <dd>
<p>Specify that the target processor is the V850ES. This is an alias for the <samp class="option">-mv850e1</samp> option. </p> </dd> <dt>
<span><code class="code">-mv850e</code><a class="copiable-link" href="#index-mv850e"> ¶</a></span>
</dt> <dd>
<p>Specify that the target processor is the V850E. The preprocessor constant <code class="code">__v850e__</code> is defined if this option is used. </p> <p>If neither <samp class="option">-mv850</samp> nor <samp class="option">-mv850e</samp> nor <samp class="option">-mv850e1</samp> nor <samp class="option">-mv850e2</samp> nor <samp class="option">-mv850e2v3</samp> nor <samp class="option">-mv850e3v5</samp> are defined then a default target processor is chosen and the relevant ‘<samp class="samp">__v850*__</samp>’ preprocessor constant is defined. </p> <p>The preprocessor constants <code class="code">__v850</code> and <code class="code">__v851__</code> are always defined, regardless of which processor variant is the target. </p> </dd> <dt>
 <span><code class="code">-mdisable-callt</code><a class="copiable-link" href="#index-mdisable-callt"> ¶</a></span>
</dt> <dt><code class="code">-mno-disable-callt</code></dt> <dd>
<p>This option suppresses generation of the <code class="code">CALLT</code> instruction for the v850e, v850e1, v850e2, v850e2v3 and v850e3v5 flavors of the v850 architecture. </p> <p>This option is enabled by default when the RH850 ABI is in use (see <samp class="option">-mrh850-abi</samp>), and disabled by default when the GCC ABI is in use. If <code class="code">CALLT</code> instructions are being generated then the C preprocessor symbol <code class="code">__V850_CALLT__</code> is defined. </p> </dd> <dt>
 <span><code class="code">-mrelax</code><a class="copiable-link" href="#index-mrelax-8"> ¶</a></span>
</dt> <dt><code class="code">-mno-relax</code></dt> <dd>
<p>Pass on (or do not pass on) the <samp class="option">-mrelax</samp> command-line option to the assembler. </p> </dd> <dt>
 <span><code class="code">-mlong-jumps</code><a class="copiable-link" href="#index-mlong-jumps"> ¶</a></span>
</dt> <dt><code class="code">-mno-long-jumps</code></dt> <dd>
<p>Disable (or re-enable) the generation of PC-relative jump instructions. </p> </dd> <dt>
 <span><code class="code">-msoft-float</code><a class="copiable-link" href="#index-msoft-float-14"> ¶</a></span>
</dt> <dt><code class="code">-mhard-float</code></dt> <dd>
<p>Disable (or re-enable) the generation of hardware floating point instructions. This option is only significant when the target architecture is ‘<samp class="samp">V850E2V3</samp>’ or higher. If hardware floating point instructions are being generated then the C preprocessor symbol <code class="code">__FPU_OK__</code> is defined, otherwise the symbol <code class="code">__NO_FPU__</code> is defined. </p> </dd> <dt>
<span><code class="code">-mloop</code><a class="copiable-link" href="#index-mloop-1"> ¶</a></span>
</dt> <dd>
<p>Enables the use of the e3v5 LOOP instruction. The use of this instruction is not enabled by default when the e3v5 architecture is selected because its use is still experimental. </p> </dd> <dt>
 <span><code class="code">-mrh850-abi</code><a class="copiable-link" href="#index-mrh850-abi"> ¶</a></span>
</dt> <dt><code class="code">-mghs</code></dt> <dd>
<p>Enables support for the RH850 version of the V850 ABI. This is the default. With this version of the ABI the following rules apply: </p> <ul class="itemize mark-bullet"> <li>Integer sized structures and unions are returned via a memory pointer rather than a register. </li>
<li>Large structures and unions (more than 8 bytes in size) are passed by value. </li>
<li>Functions are aligned to 16-bit boundaries. </li>
<li>The <samp class="option">-m8byte-align</samp> command-line option is supported. </li>
<li>The <samp class="option">-mdisable-callt</samp> command-line option is enabled by default. The <samp class="option">-mno-disable-callt</samp> command-line option is not supported. </li>
</ul> <p>When this version of the ABI is enabled the C preprocessor symbol <code class="code">__V850_RH850_ABI__</code> is defined. </p> </dd> <dt>
<span><code class="code">-mgcc-abi</code><a class="copiable-link" href="#index-mgcc-abi"> ¶</a></span>
</dt> <dd>
<p>Enables support for the old GCC version of the V850 ABI. With this version of the ABI the following rules apply: </p> <ul class="itemize mark-bullet"> <li>Integer sized structures and unions are returned in register <code class="code">r10</code>. </li>
<li>Large structures and unions (more than 8 bytes in size) are passed by reference. </li>
<li>Functions are aligned to 32-bit boundaries, unless optimizing for size. </li>
<li>The <samp class="option">-m8byte-align</samp> command-line option is not supported. </li>
<li>The <samp class="option">-mdisable-callt</samp> command-line option is supported but not enabled by default. </li>
</ul> <p>When this version of the ABI is enabled the C preprocessor symbol <code class="code">__V850_GCC_ABI__</code> is defined. </p> </dd> <dt>
 <span><code class="code">-m8byte-align</code><a class="copiable-link" href="#index-m8byte-align"> ¶</a></span>
</dt> <dt><code class="code">-mno-8byte-align</code></dt> <dd>
<p>Enables support for <code class="code">double</code> and <code class="code">long long</code> types to be aligned on 8-byte boundaries. The default is to restrict the alignment of all objects to at most 4-bytes. When <samp class="option">-m8byte-align</samp> is in effect the C preprocessor symbol <code class="code">__V850_8BYTE_ALIGN__</code> is defined. </p> </dd> <dt>
<span><code class="code">-mbig-switch</code><a class="copiable-link" href="#index-mbig-switch-1"> ¶</a></span>
</dt> <dd>
<p>Generate code suitable for big switch tables. Use this option only if the assembler/linker complain about out of range branches within a switch table. </p> </dd> <dt>
<span><code class="code">-mapp-regs</code><a class="copiable-link" href="#index-mapp-regs-1"> ¶</a></span>
</dt> <dd>
<p>This option causes r2 and r5 to be used in the code generated by the compiler. This setting is the default. </p> </dd> <dt>
<span><code class="code">-mno-app-regs</code><a class="copiable-link" href="#index-mno-app-regs-1"> ¶</a></span>
</dt> <dd>
<p>This option causes r2 and r5 to be treated as fixed registers. </p> </dd> </dl> </div>  <div class="nav-panel"> <p> Next: <a href="vax-options">VAX Options</a>, Previous: <a href="system-v-options">Options for System V</a>, Up: <a href="submodel-options">Machine-Dependent Options</a> [<a href="index#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="indices" title="Index" rel="index">Index</a>]</p> </div><div class="_attribution">
  <p class="_attribution-p">
    &copy; Free Software Foundation<br>Licensed under the GNU Free Documentation License, Version 1.3.<br>
    <a href="https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/V850-Options.html" class="_attribution-link">https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/V850-Options.html</a>
  </p>
</div>