| 1 |
<?xml version="1.0" encoding="utf-8"?> |
|---|
| 2 |
<!-- just a big bunch of xml to play with --> |
|---|
| 3 |
<refentry id="CC.1"> |
|---|
| 4 |
<!-- USM timestamp: @(#)man/man1/CC.1.xml 52.4 01/08/2004 13:22:10 --> |
|---|
| 5 |
<refmeta><refentrytitle>CC</refentrytitle><manvolnum>1</manvolnum> |
|---|
| 6 |
<refmiscinfo class="date"></refmiscinfo> |
|---|
| 7 |
<refmiscinfo class="sectdesc">foobar</refmiscinfo> |
|---|
| 8 |
<refmiscinfo class="copyright">foobar</refmiscinfo> |
|---|
| 9 |
<refmiscinfo class="package">CC_52 MP</refmiscinfo> |
|---|
| 10 |
<refmiscinfo class="pubnum">004-0000</refmiscinfo> |
|---|
| 11 |
<refmiscinfo class="tools">96</refmiscinfo> |
|---|
| 12 |
<refmiscinfo class="pl">CCm</refmiscinfo> |
|---|
| 13 |
<refmiscinfo class="rel">52</refmiscinfo> |
|---|
| 14 |
</refmeta> |
|---|
| 15 |
<refnamediv> |
|---|
| 16 |
<!--highlights remap="short"--> |
|---|
| 17 |
<refname>CC</refname> |
|---|
| 18 |
<refname>cc</refname><refname>c89</refname><refname>c99</refname><refname>cpp</refname> |
|---|
| 19 |
<refpurpose>Invokes the Cray C++ compiler, the Cray C compiler, or the Cray C language preprocessor</refpurpose> |
|---|
| 20 |
</refnamediv> |
|---|
| 21 |
<refsynopsisdiv> |
|---|
| 22 |
<title>foobar</title> |
|---|
| 23 |
<synopsis><command>CC</command> |
|---|
| 24 |
<optional>-c</optional> <optional>-C</optional> <optional>-d <replaceable>string</replaceable></optional> <optional>-D <replaceable>macro</replaceable><option>[=<replaceable>def</replaceable>]</option></optional |
|---|
| 25 |
> <optional><option>-E</option></optional> <optional><option>-g</option></optional> <optional><option>-G <replaceable>level</replaceable></option></optional> <optional><option>-h <replaceable>arg</replaceable |
|---|
| 26 |
></option></optional> <optional><option>-I <replaceable>incldir</replaceable></option></optional> |
|---|
| 27 |
<optional><option>-l <replaceable>libfile</replaceable></option></optional> <optional><option>-L <replaceable>libdir</replaceable></option></optional> <optional>-M</optional> <optional>-nostdinc</optional |
|---|
| 28 |
> <optional><option>-o <replaceable>outfile</replaceable></option></optional> <optional><option>-O <replaceable>level</replaceable></option></optional> <optional><option>-P</option></optional> <optional |
|---|
| 29 |
><option>-s</option></optional> <optional><option>-S</option></optional> <optional><option>-U <replaceable>macro</replaceable></option></optional> |
|---|
| 30 |
<optional>-V</optional> <optional>-W<replaceable>phase</replaceable>, "<replaceable>opt...</replaceable>"</optional> <optional>-X<replaceable>foobarnpes</replaceable></optional> <optional>-Y<replaceable |
|---|
| 31 |
>phase</replaceable>,<replaceable>dirname</replaceable></optional> <optional>-#</optional> <optional>-##</optional> <optional>-###</optional> <replaceable>files...</replaceable> |
|---|
| 32 |
</synopsis> |
|---|
| 33 |
<synopsis><command>cc</command> or <command>c99</command> |
|---|
| 34 |
<optional>-c</optional> <optional>-C</optional> <optional>-d<replaceable>foobarstring</replaceable></optional> <optional>-D<replaceable>foobarmacro</replaceable><optional>=<replaceable>def</replaceable |
|---|
| 35 |
></optional></optional> <optional>-E</optional> <optional>-F</optional> <optional>-g</optional> <optional>-G<replaceable>foobarlevel</replaceable></optional> <optional>-h<replaceable>foobararg</replaceable |
|---|
| 36 |
></optional> |
|---|
| 37 |
<optional>-I<replaceable>foobarincldir</replaceable></optional> <optional>-l<replaceable>foobarlibfile</replaceable></optional> <optional>-L<replaceable>foobarlibdir</replaceable></optional> <optional>-M</optional |
|---|
| 38 |
> <optional>-nostdinc</optional> <optional>-o<replaceable>foobaroutfile</replaceable></optional> <optional>-O<replaceable>foobarlevel</replaceable></optional> <optional>-P</optional> <optional>-s</optional |
|---|
| 39 |
> |
|---|
| 40 |
<optional>-S</optional> <optional>-U<replaceable>foobarmacro</replaceable></optional> <optional>-V</optional> <optional>-W<replaceable>phase</replaceable>,"<replaceable>opt...</replaceable>"</optional> <optional |
|---|
| 41 |
>-X<replaceable>npes</replaceable></optional> <optional>-Y<replaceable>phase</replaceable>,<replaceable>dirname</replaceable></optional> |
|---|
| 42 |
<optional>-#</optional> <optional>-##</optional> <optional>-###</optional> <replaceable>files...</replaceable></synopsis> |
|---|
| 43 |
<synopsis><command>c89</command> |
|---|
| 44 |
<optional>-c</optional> <optional>-D<replaceable>foobarmacro</replaceable><optional>=<replaceable>def</replaceable></optional></optional> <optional>-E</optional> <optional>-g</optional> <optional>-I<replaceable |
|---|
| 45 |
>foobarincldir</replaceable></optional> <optional>-l<replaceable>foobarlibfile</replaceable></optional> <optional>-L<replaceable>foobarlibdir</replaceable></optional> <optional>-o<replaceable>foobaroutfile</replaceable |
|---|
| 46 |
></optional> <optional>-O<replaceable>foobarlevel</replaceable></optional> <optional>-s</optional> <optional>-U<replaceable>foobarmacro</replaceable></optional> |
|---|
| 47 |
<optional>-Y<replaceable>phase</replaceable>,<replaceable>dirname</replaceable></optional> <replaceable>files...</replaceable></synopsis> |
|---|
| 48 |
<synopsis><command>cpp</command> |
|---|
| 49 |
<optional>-C</optional> <optional>-D<replaceable>foobarmacro</replaceable><optional>=<replaceable>def</replaceable></optional></optional> <optional>-E</optional> <optional>-I<replaceable>foobarincldir</replaceable |
|---|
| 50 |
></optional> <optional>-M</optional> <optional>-N</optional> <optional>-nostdinc</optional> <optional>-P</optional> <optional>-U<replaceable>foobarmacro</replaceable></optional> <optional>-V</optional> |
|---|
| 51 |
<optional>-Y<replaceable>phase</replaceable>,<replaceable>dirname</replaceable></optional> <optional>-#</optional> <optional>-##</optional> <optional>-###</optional> <optional><replaceable>infile</replaceable |
|---|
| 52 |
></optional> <optional><replaceable>outfile</replaceable></optional></synopsis> |
|---|
| 53 |
</refsynopsisdiv> |
|---|
| 54 |
<refsect1> |
|---|
| 55 |
<title>foobar</title> |
|---|
| 56 |
<para>foobar</para> |
|---|
| 57 |
</refsect1> |
|---|
| 58 |
<refsect1> |
|---|
| 59 |
<title>foobar</title> |
|---|
| 60 |
<para>This man page describes the following commands: <itemizedlist> |
|---|
| 61 |
<listitem> |
|---|
| 62 |
<para><command>CC</command>. This command invokes the Cray C++ compiler on source files that contain C++ |
|---|
| 63 |
code. The Cray C++ compiler conforms to the ISO/IEC 14882:1998 standard, with some exceptions. The exceptions |
|---|
| 64 |
are noted in the foobar.</para> |
|---|
| 65 |
</listitem> |
|---|
| 66 |
<listitem> |
|---|
| 67 |
<para><command>cc</command>, <command>c89</command>, and <command>c99</command>. These commands invoke |
|---|
| 68 |
the Cray C compiler and the source preprocessor on source files that contain C code. The compiler conforms |
|---|
| 69 |
to the ISO/IEC 9899:1999 and to the American National Standards Institute (ANSI) X3.159foobar1989 standards.</para> |
|---|
| 70 |
</listitem> |
|---|
| 71 |
<listitem> |
|---|
| 72 |
<para><command remap="1">cpp</command>. This command invokes only the preprocessor component of the Cray |
|---|
| 73 |
C compiler. The <command remap="1">cpp</command> command optionally accepts two file names as arguments. |
|---|
| 74 |
Files <replaceable>infile</replaceable> and <replaceable>outfile</replaceable> are, respectively, the |
|---|
| 75 |
input and output for the preprocessor. If not specified, they default to standard input (<literal>stdin</literal>) |
|---|
| 76 |
and standard output (<literal>stdout</literal>).</para> |
|---|
| 77 |
</listitem></itemizedlist></para> |
|---|
| 78 |
<para>By default, the Cray C and C++ compilers create an executable file named <literal>a.out</literal>. |
|---|
| 79 |
Other files used and created by the C++ and C compilers are discussed under the FILES section of this |
|---|
| 80 |
man page.</para> |
|---|
| 81 |
<refsect2> |
|---|
| 82 |
<title>Conflicting Options</title> |
|---|
| 83 |
<para>If conflicting options are specified, the option specified last on the command line overrides the |
|---|
| 84 |
previously specified option. Exceptions to this rule are noted in the individual option descriptions.</para> |
|---|
| 85 |
</refsect2> |
|---|
| 86 |
<refsect2> |
|---|
| 87 |
<title>Conflicts between Options and #pragma Directives</title> |
|---|
| 88 |
<para>Most <literal>#pragma</literal> directives override corresponding command-line options. For example, <literal>#pragmafoobar_CRIfoobarnovsearch</literal> overrides |
|---|
| 89 |
the <literal>-hfoobarvsearch</literal> option. <literal>#pragmafoobar_CRIfoobarnovsearch</literal> also |
|---|
| 90 |
overrides the <literal>-hfoobarvsearch</literal> option implied by the <literal>-hfoobarvector2</literal> or <literal>-O2</literal> option. |
|---|
| 91 |
Exceptions to this rule are noted in option or <literal>#pragma</literal> directive descriptions.</para> |
|---|
| 92 |
</refsect2> |
|---|
| 93 |
<refsect2> |
|---|
| 94 |
<title>Arguments to the <option>-h</option> Option</title> |
|---|
| 95 |
<para>The arguments to the <option>-h</option> option can be used to direct specific compiler actions. |
|---|
| 96 |
To specify more than one argument, separate individual arguments with commas but without intervening spaces. |
|---|
| 97 |
The <option>-h</option> option is available only to the <literal>CC</literal>, <literal>cc</literal>, |
|---|
| 98 |
and <command>c99</command> commands, unless otherwise specified in the option description.</para> |
|---|
| 99 |
</refsect2> |
|---|
| 100 |
<refsect2> |
|---|
| 101 |
<title>Command-line Options</title> |
|---|
| 102 |
<para>The <literal>CC</literal>, <literal>cc</literal>, <literal>c89</literal>, <command>c99</command>, |
|---|
| 103 |
and <literal>cpp</literal> commands accept many of the same options. If you enter an option that is not |
|---|
| 104 |
accepted by a particular command, a message is generated. Other options are interpreted as loader options. |
|---|
| 105 |
See the <xref linkend="ld.1" remap="ld" condition="ldrm" role="1"/> man page for loader options.</para> |
|---|
| 106 |
<para>The <literal>CC</literal>, <literal>cc</literal>, <literal>c89</literal>, <command>c99</command>, |
|---|
| 107 |
and <literal>cpp</literal> compiler commands accept the following options, which are grouped according |
|---|
| 108 |
to functionality:<note><para>The compiler commands that support the option are listed within parentheses, |
|---|
| 109 |
if an option is supported by some of the commands. If all compiler commands support the option, the commands |
|---|
| 110 |
are not listed.</para> |
|---|
| 111 |
</note></para> |
|---|
| 112 |
</refsect2> |
|---|
| 113 |
<refsect2> |
|---|
| 114 |
<title>Standard Conformance Language Options</title> |
|---|
| 115 |
<para><variablelist termlength="narrow" role="5"> |
|---|
| 116 |
<varlistentry><term><option>-h [no]c99</option></term> |
|---|
| 117 |
<listitem><para>The <option>-h c99</option> option allows the compiler to accept features added to the |
|---|
| 118 |
ISO/IEC 9899:1999 C Language standard (C99). Several of these features supported in earlier Cray compilers, |
|---|
| 119 |
previously documented as extensions, do not require the <option>-h noc99</option> option.</para> |
|---|
| 120 |
<para>The default is <option>-h noc99</option> for <command>cc</command> and <option>-h c99</option> for <command>c99</command>.</para> |
|---|
| 121 |
</listitem> |
|---|
| 122 |
</varlistentry> |
|---|
| 123 |
<varlistentry role="list"><term><option>-h</option> [<literal>no</literal>]<literal>conform</literal></term> |
|---|
| 124 |
<term><option>-h</option> [<literal>no</literal>]<literal>stdc</literal></term> |
|---|
| 125 |
<listitem><para><literal>-hfoobarconform</literal> (<literal>CC</literal> and <literal>cc</literal> commands) |
|---|
| 126 |
and <literal>-hfoobarstdc</literal> (<literal>cc</literal> and <command>c99</command> commands) specify |
|---|
| 127 |
strict conformance to the ISO C or ISO C++ standards as supported. <literal>-hfoobarnoconform</literal> and <literal>-hfoobarnostdc</literal> (the |
|---|
| 128 |
defaults) specify partial conformance to the standards. The <literal>-hfoobarexceptions</literal>, <literal>-hfoobardep_name</literal>, |
|---|
| 129 |
and <literal>-hfoobarparse_templates</literal> options are enabled by the <literal>-hfoobarconform</literal> option |
|---|
| 130 |
in C++.</para> |
|---|
| 131 |
<note><para>The <literal>c89</literal> command does not accept the <literal>-hfoobarconform</literal> or <literal>-hfoobarstdc</literal> option |
|---|
| 132 |
when issued on the command line. It is enabled by default when the command is issued.</para> |
|---|
| 133 |
</note> |
|---|
| 134 |
</listitem> |
|---|
| 135 |
</varlistentry> |
|---|
| 136 |
<varlistentry><term><literal>-h cfront</literal></term> |
|---|
| 137 |
<listitem><para>(<literal>CC</literal> command) Causes the Cray C++ compiler to accept constructs that |
|---|
| 138 |
were accepted by previous <literal>cfront</literal>-based compilers (such as Cray C++ 1.0), but which |
|---|
| 139 |
are not accepted by the ANSI/ISO draft standard.</para> |
|---|
| 140 |
<para>This feature is disabled by default.</para> |
|---|
| 141 |
</listitem> |
|---|
| 142 |
</varlistentry> |
|---|
| 143 |
<varlistentry><term><option>-h</option> [<literal>no</literal>]<literal>parse_templates</literal></term> |
|---|
| 144 |
<listitem><para>(<literal>CC</literal> command) The option <literal>noparse_templates</literal> allows |
|---|
| 145 |
existing code that defines templates using previous versions (before Programming Environment 3.6) of the |
|---|
| 146 |
Cray Standard Template Library (STL) to compile successfully with the <literal>-h conform</literal> option. |
|---|
| 147 |
This allows you to compile existing code without having to use the Cray C++ STL. The compiler also defaults |
|---|
| 148 |
to this mode when the <literal>-h dep_name</literal> option is used. To have the compiler verify that |
|---|
| 149 |
your code uses the Cray C++ STL templates properly, use the <literal>parse_templates</literal> option. |
|---|
| 150 |
The default is <option>-h</option> <literal>noparse_templates</literal>.</para> |
|---|
| 151 |
</listitem> |
|---|
| 152 |
</varlistentry> |
|---|
| 153 |
<varlistentry><term><option>-h</option> <optional><literal>no</literal></optional><literal>dep_name</literal></term> |
|---|
| 154 |
<listitem><para>(<literal>CC</literal> command) The <literal>-hfoobar<optional>no</optional>dep_name</literal> option |
|---|
| 155 |
allows dependent names that rely on nonstandard STLs to compile when the <literal>-hfoobarconform</literal> option |
|---|
| 156 |
is used. The <literal>-hfoobardep_name</literal> option cannot be used with the <literal>-hfoobarnoparse_templates</literal> option. |
|---|
| 157 |
The default is <literal>-hfoobarnodep_name</literal>.</para> |
|---|
| 158 |
</listitem> |
|---|
| 159 |
</varlistentry> |
|---|
| 160 |
<varlistentry><term><option>-h</option> [<literal>no</literal>]<literal>exceptions</literal></term> |
|---|
| 161 |
<listitem><para>(<literal>CC</literal> command) Enables or disables exception handling. <literal>-hfoobarnoexceptions</literal> issues |
|---|
| 162 |
an error whenever an exception construct, a <literal>try</literal> block, a <literal>throw</literal> expression, |
|---|
| 163 |
or a <literal>throw</literal> specification on a function declaration is encountered. <literal>-hfoobarexceptions</literal> is |
|---|
| 164 |
enabled by <literal>-hfoobarconform</literal>. The default is <literal>exceptions</literal>, however, |
|---|
| 165 |
if the <literal>CRAYOLDCPPLIB</literal> environment variable is set to a nonzero value, the default is <literal>noexceptions</literal>.</para> |
|---|
| 166 |
</listitem> |
|---|
| 167 |
</varlistentry> |
|---|
| 168 |
<varlistentry><term><option>-h</option> [<literal>no</literal>]<literal>anachronisms</literal></term> |
|---|
| 169 |
<listitem><para>(<literal>CC</literal> command) Enables or disables anachronisms in Cray C++. See Appendix |
|---|
| 170 |
B of the foobar for a description of anachronisms. The default is <literal>noanachronisms</literal>. |
|---|
| 171 |
This option is overridden by <literal>-hfoobarconform</literal>.</para> |
|---|
| 172 |
</listitem> |
|---|
| 173 |
</varlistentry> |
|---|
| 174 |
<varlistentry><term><option>-h</option> <literal>new_for_init</literal></term> |
|---|
| 175 |
<listitem><para>(<literal>CC</literal> command) The <option>-h</option> <literal>new_for_init</literal> option |
|---|
| 176 |
enables the new scoping rules for a declaration in a <literal>for-init</literal> statement. This means |
|---|
| 177 |
that the new (standard-conforming) rules are in effect and that the entire <literal>for</literal> statement |
|---|
| 178 |
is wrapped in its own implicitly generated scope. <literal>-hfoobarnew_for_init</literal> is implied by |
|---|
| 179 |
the <literal>-hfoobarconform</literal> option.</para> |
|---|
| 180 |
</listitem> |
|---|
| 181 |
</varlistentry> |
|---|
| 182 |
<varlistentry><term><option>-h</option> [<literal>no</literal>]<literal>tolerant</literal></term> |
|---|
| 183 |
<listitem><para>(<literal>cc</literal> and <command>c99</command> commands) Allows older, less standard |
|---|
| 184 |
C constructs to facilitate porting of code written for previous C compilers. Errors involving comparisons |
|---|
| 185 |
or assignments of pointers and integers become warnings. The compiler generates casts so that the types |
|---|
| 186 |
agree. With <literal>notolerant</literal>, the compiler is intolerant of the older constructs. The default |
|---|
| 187 |
is <literal>notolerant</literal>.</para> |
|---|
| 188 |
<para>The use of the <option>-h tolerant</option> options causes the compiler to tolerate accessing an |
|---|
| 189 |
object with one type through a pointer to an entirely different type. For example, a pointer to <literal>long</literal> might |
|---|
| 190 |
be used to access an object declared with type <literal>double</literal>. Such references violate the |
|---|
| 191 |
C standard and should be eliminated if possible. They can reduce the effectiveness of alias analysis, |
|---|
| 192 |
thereby inhibiting optimization.</para> |
|---|
| 193 |
</listitem> |
|---|
| 194 |
</varlistentry> |
|---|
| 195 |
<varlistentry><term><literal>-h<optional>no</optional> const_string_literals</literal></term> |
|---|
| 196 |
<listitem><para>(<command>CC</command> command) The <literal>-h <optional>no</optional> const_string_literals</literal> options |
|---|
| 197 |
controls whether string literals are <literal>const</literal> (as required by the standard) or non-<literal>const</literal> (as |
|---|
| 198 |
was true in earlier versions of the C++ language).</para> |
|---|
| 199 |
</listitem> |
|---|
| 200 |
</varlistentry> |
|---|
| 201 |
<!-- |
|---|
| 202 |
<revst/> |
|---|
| 203 |
--> |
|---|
| 204 |
|
|---|
| 205 |
<varlistentry><term><literal>-h<optional>no</optional> gnu</literal></term> |
|---|
| 206 |
<listitem><para>(<command>CC</command> and <command>cc</command> commands) The <literal>-h gnu</literal> option |
|---|
| 207 |
enables the compiler to recognize a subset of the GCC version 3.3.2 extensions to C listed in Table 1. |
|---|
| 208 |
Table 2 lists the extensions that apply only to C++.</para> |
|---|
| 209 |
<para>See <ulink url="http://gcc.gnu.org/onlinedocs/">GCC documentation</ulink> for detailed descriptions |
|---|
| 210 |
of the GCC C and C++ language extensions.</para> |
|---|
| 211 |
<table frame="topbot" pgwide="1"> |
|---|
| 212 |
<title><indexterm><primary>GCC language extensions</primary><secondary>C and C++ </secondary></indexterm>GCC |
|---|
| 213 |
C Language Extensions</title> |
|---|
| 214 |
<tgroup cols="2" colsep="0" rowsep="0"> |
|---|
| 215 |
<colspec colname="col1" colwidth="0.81*"/> |
|---|
| 216 |
<colspec colname="col2" colwidth="1.19*"/> |
|---|
| 217 |
<thead> |
|---|
| 218 |
<row><entry valign="top"><para>GCC C Language Extension</para></entry><entry valign="top"><para>Description </para></entry> |
|---|
| 219 |
</row> |
|---|
| 220 |
</thead> |
|---|
| 221 |
<tbody> |
|---|
| 222 |
<row> |
|---|
| 223 |
<entry><para>Typeof</para></entry> |
|---|
| 224 |
<entry><para><literal>typeof</literal>: referring to the type of an expression</para></entry> |
|---|
| 225 |
</row> |
|---|
| 226 |
<row> |
|---|
| 227 |
<entry><para>Lvalues</para></entry> |
|---|
| 228 |
<entry><para>Using <literal>?:,</literal> and casts in lvalues</para></entry> |
|---|
| 229 |
</row> |
|---|
| 230 |
<row> |
|---|
| 231 |
<entry><para>Conditionals</para></entry> |
|---|
| 232 |
<entry><para>Omitting the middle operand of a <literal>?:</literal> expression</para></entry> |
|---|
| 233 |
</row> |
|---|
| 234 |
<row> |
|---|
| 235 |
<entry><para>Long Long</para></entry> |
|---|
| 236 |
<entry><para>Double-word integers --<literal>long</literal> <literal>long</literal> <literal>int</literal></para></entry> |
|---|
| 237 |
</row> |
|---|
| 238 |
<row> |
|---|
| 239 |
<entry><para>Complex</para></entry> |
|---|
| 240 |
<entry><para>Data types for complex numbers</para></entry> |
|---|
| 241 |
</row> |
|---|
| 242 |
<row> |
|---|
| 243 |
<entry><para>Statement Exprs</para></entry> |
|---|
| 244 |
<entry><para>Putting statements and declarations inside expressions</para></entry> |
|---|
| 245 |
</row> |
|---|
| 246 |
<row> |
|---|
| 247 |
<entry><para>Hex Floats</para></entry> |
|---|
| 248 |
<entry><para>Hexadecimal floating-point constants</para></entry> |
|---|
| 249 |
</row> |
|---|
| 250 |
<row> |
|---|
| 251 |
<entry><para>Zero Length</para></entry> |
|---|
| 252 |
<entry><para>Zero-length arrays</para></entry> |
|---|
| 253 |
</row> |
|---|
| 254 |
<row> |
|---|
| 255 |
<entry><para>Variable Length</para></entry> |
|---|
| 256 |
<entry><para>Arrays whose length is computed at run time</para></entry> |
|---|
| 257 |
</row> |
|---|
| 258 |
<row> |
|---|
| 259 |
<entry><para>Empty Structures</para></entry> |
|---|
| 260 |
<entry><para>Structures with no members; applies to C but not C++</para></entry> |
|---|
| 261 |
</row> |
|---|
| 262 |
<row> |
|---|
| 263 |
<entry><para>Variadic Macros</para></entry> |
|---|
| 264 |
<entry><para>Macros with a variable number of arguments</para></entry> |
|---|
| 265 |
</row> |
|---|
| 266 |
<row> |
|---|
| 267 |
<entry><para>Escaped Newlines</para></entry> |
|---|
| 268 |
<entry><para>Slightly looser rules for escaped newlines</para></entry> |
|---|
| 269 |
</row> |
|---|
| 270 |
<row> |
|---|
| 271 |
<entry><para>Multiline strings</para></entry> |
|---|
| 272 |
<entry><para>String literals with embedded newlines</para></entry> |
|---|
| 273 |
</row> |
|---|
| 274 |
<row> |
|---|
| 275 |
<entry><para>Initializers</para></entry> |
|---|
| 276 |
<entry><para>Non-constant initializers</para></entry> |
|---|
| 277 |
</row> |
|---|
| 278 |
<row> |
|---|
| 279 |
<entry><para>Compound Literals</para></entry> |
|---|
| 280 |
<entry><para>Compound literals give structures, unions or arrays as values</para></entry> |
|---|
| 281 |
</row> |
|---|
| 282 |
<row> |
|---|
| 283 |
<entry><para>Designated Inits</para></entry> |
|---|
| 284 |
<entry><para>Labeling elements of initializers</para></entry> |
|---|
| 285 |
</row> |
|---|
| 286 |
<row> |
|---|
| 287 |
<entry><para>Cast to Union</para></entry> |
|---|
| 288 |
<entry><para>Casting to union type from any member of the union</para></entry> |
|---|
| 289 |
</row> |
|---|
| 290 |
<row> |
|---|
| 291 |
<entry><para>Case Ranges</para></entry> |
|---|
| 292 |
<entry><para>`case 1 ... 9' and such</para></entry> |
|---|
| 293 |
</row> |
|---|
| 294 |
<row> |
|---|
| 295 |
<entry><para>Mixed Declarations</para></entry> |
|---|
| 296 |
<entry><para>Mixing declarations and code</para></entry> |
|---|
| 297 |
</row> |
|---|
| 298 |
<row> |
|---|
| 299 |
<entry><para>Attribute Syntax</para></entry> |
|---|
| 300 |
<entry><para>Formal syntax for attributes</para></entry> |
|---|
| 301 |
</row> |
|---|
| 302 |
<row> |
|---|
| 303 |
<entry><para>Function Prototypes</para></entry> |
|---|
| 304 |
<entry><para>Prototype declarations and old-style definitions; applies to C but not C++</para></entry> |
|---|
| 305 |
</row> |
|---|
| 306 |
<row> |
|---|
| 307 |
<entry><para>C++ Comments</para></entry> |
|---|
| 308 |
<entry><para>C++ comments are recognized</para></entry> |
|---|
| 309 |
</row> |
|---|
| 310 |
<row> |
|---|
| 311 |
<entry><para>Dollar Signs</para></entry> |
|---|
| 312 |
<entry><para>Dollar sign is allowed in identifiers</para></entry> |
|---|
| 313 |
</row> |
|---|
| 314 |
<row> |
|---|
| 315 |
<entry><para>Character Escapes</para></entry> |
|---|
| 316 |
<entry><para>\e stands for the character foobarESC></para></entry> |
|---|
| 317 |
</row> |
|---|
| 318 |
<row> |
|---|
| 319 |
<entry><para>Alignment</para></entry> |
|---|
| 320 |
<entry><para>Inquiring about the alignment of a type or variable</para></entry> |
|---|
| 321 |
</row> |
|---|
| 322 |
<row> |
|---|
| 323 |
<entry><para>Inline</para></entry> |
|---|
| 324 |
<entry><para>Defining inline functions (as fast as macros)</para></entry> |
|---|
| 325 |
</row> |
|---|
| 326 |
<row> |
|---|
| 327 |
<entry><para>Alternate Keywords</para></entry> |
|---|
| 328 |
<entry><para><literal>__const__</literal>, <literal>__asm__</literal>, etc., for header files</para></entry> |
|---|
| 329 |
</row> |
|---|
| 330 |
<row> |
|---|
| 331 |
<entry><para>Incomplete Enums</para></entry> |
|---|
| 332 |
<entry><para><literal>enum foo;</literal>, with details to follow</para></entry> |
|---|
| 333 |
</row> |
|---|
| 334 |
<row> |
|---|
| 335 |
<entry><para>Function Names</para></entry> |
|---|
| 336 |
<entry><para>Printable strings which are the name of the current function</para></entry> |
|---|
| 337 |
</row> |
|---|
| 338 |
<row> |
|---|
| 339 |
<entry><para>Return Address</para></entry> |
|---|
| 340 |
<entry><para>Getting the return or frame address of a function</para></entry> |
|---|
| 341 |
</row> |
|---|
| 342 |
<row> |
|---|
| 343 |
<entry><para>Unnamed Fields</para></entry> |
|---|
| 344 |
<entry><para>Unnamed struct/union fields within structs/unions</para></entry> |
|---|
| 345 |
</row> |
|---|
| 346 |
<row> |
|---|
| 347 |
<entry><para>Function Attributes:<itemizedlist> |
|---|
| 348 |
<listitem> |
|---|
| 349 |
<para>nothrow</para> |
|---|
| 350 |
</listitem> |
|---|
| 351 |
<listitem> |
|---|
| 352 |
<para>format, format_arg</para> |
|---|
| 353 |
</listitem> |
|---|
| 354 |
<listitem> |
|---|
| 355 |
<para>deprecated</para> |
|---|
| 356 |
</listitem> |
|---|
| 357 |
<listitem> |
|---|
| 358 |
<para>used</para> |
|---|
| 359 |
</listitem> |
|---|
| 360 |
<listitem> |
|---|
| 361 |
<para>unused</para> |
|---|
| 362 |
</listitem> |
|---|
| 363 |
<listitem> |
|---|
| 364 |
<para>alias</para> |
|---|
| 365 |
</listitem></itemizedlist></para></entry> |
|---|
| 366 |
<entry><para>Declaring that functions have no side effects, or that they can never return</para></entry> |
|---|
| 367 |
</row> |
|---|
| 368 |
<row> |
|---|
| 369 |
<entry><para>Variable Attributes:<itemizedlist> |
|---|
| 370 |
<listitem> |
|---|
| 371 |
<para>deprecated</para> |
|---|
| 372 |
</listitem> |
|---|
| 373 |
<listitem> |
|---|
| 374 |
<para>unused</para> |
|---|
| 375 |
</listitem> |
|---|
| 376 |
<listitem> |
|---|
| 377 |
<para>transparent_union</para> |
|---|
| 378 |
</listitem></itemizedlist></para></entry> |
|---|
| 379 |
<entry><para>Specifying attributes of variables</para></entry> |
|---|
| 380 |
</row> |
|---|
| 381 |
<row> |
|---|
| 382 |
<entry><para>Type Attributes:<itemizedlist> |
|---|
| 383 |
<listitem> |
|---|
| 384 |
<para>deprecated</para> |
|---|
| 385 |
</listitem> |
|---|
| 386 |
<listitem> |
|---|
| 387 |
<para>unused</para> |
|---|
| 388 |
</listitem> |
|---|
| 389 |
<listitem> |
|---|
| 390 |
<para>transparent_union</para> |
|---|
| 391 |
</listitem></itemizedlist></para></entry> |
|---|
| 392 |
<entry><para>Specifying attributes of types</para></entry> |
|---|
| 393 |
</row> |
|---|
| 394 |
<row> |
|---|
| 395 |
<entry><para>Asm Labels</para></entry> |
|---|
| 396 |
<entry><para>Specifying the assembler name to use for a C symbol</para></entry> |
|---|
| 397 |
</row> |
|---|
| 398 |
<row> |
|---|
| 399 |
<entry><para>Other Builtins:<itemizedlist> |
|---|
| 400 |
<listitem> |
|---|
| 401 |
<para><literal>__builtin_types_compatible_p</literal></para> |
|---|
| 402 |
</listitem> |
|---|
| 403 |
<listitem> |
|---|
| 404 |
<para><literal>__builtin_choose_expr</literal></para> |
|---|
| 405 |
</listitem> |
|---|
| 406 |
<listitem> |
|---|
| 407 |
<para><literal>__builtin_constant_p</literal></para> |
|---|
| 408 |
</listitem> |
|---|
| 409 |
<listitem> |
|---|
| 410 |
<para><literal>__builtin_huge_val</literal></para> |
|---|
| 411 |
</listitem> |
|---|
| 412 |
<listitem> |
|---|
| 413 |
<para><literal>__builtin_huge_valf</literal></para> |
|---|
| 414 |
</listitem> |
|---|
| 415 |
<listitem> |
|---|
| 416 |
<para><literal>__builtin_huge_vall</literal></para> |
|---|
| 417 |
</listitem> |
|---|
| 418 |
<listitem> |
|---|
| 419 |
<para><literal>__builtin_inf</literal></para> |
|---|
| 420 |
</listitem> |
|---|
| 421 |
<listitem> |
|---|
| 422 |
<para><literal>__builtin_inff</literal></para> |
|---|
| 423 |
</listitem> |
|---|
| 424 |
<listitem> |
|---|
| 425 |
<para><literal>__builtin_infl</literal></para> |
|---|
| 426 |
</listitem> |
|---|
| 427 |
<listitem> |
|---|
| 428 |
<para><literal>__builtin_nan</literal></para> |
|---|
| 429 |
</listitem> |
|---|
| 430 |
<listitem> |
|---|
| 431 |
<para><literal>__builtin_nanf</literal></para> |
|---|
| 432 |
</listitem> |
|---|
| 433 |
<listitem> |
|---|
| 434 |
<para><literal>__builtin_nanl</literal></para> |
|---|
| 435 |
</listitem> |
|---|
| 436 |
<listitem> |
|---|
| 437 |
<para><literal>__builtin_nans</literal></para> |
|---|
| 438 |
</listitem> |
|---|
| 439 |
<listitem> |
|---|
| 440 |
<para><literal>__builtin_nansf</literal></para> |
|---|
| 441 |
</listitem> |
|---|
| 442 |
<listitem> |
|---|
| 443 |
<para><literal>__builtin_nansl</literal></para> |
|---|
| 444 |
</listitem></itemizedlist></para></entry> |
|---|
| 445 |
<entry><para>Other built-in functions</para></entry> |
|---|
| 446 |
</row> |
|---|
| 447 |
</tbody> |
|---|
| 448 |
</tgroup> |
|---|
| 449 |
</table> |
|---|
| 450 |
<para> Table 2 lists the GCC extensions that apply only to C++.</para> |
|---|
| 451 |
<table frame="topbot" pgwide="1"> |
|---|
| 452 |
<title id="Z1073338373oswald"><indexterm><primary>GCC language extensions</primary><secondary> C++ only </secondary> |
|---|
| 453 |
</indexterm>GCC C++ Language Extensions</title> |
|---|
| 454 |
<tgroup cols="2" colsep="0" rowsep="0"> |
|---|
| 455 |
<colspec colname="col1"/> |
|---|
| 456 |
<colspec colname="col2"/> |
|---|
| 457 |
<thead> |
|---|
| 458 |
<row><entry valign="top"><para>GCC C++ Extensions</para></entry><entry valign="top"><para>Description </para></entry> |
|---|
| 459 |
</row> |
|---|
| 460 |
</thead> |
|---|
| 461 |
<tbody> |
|---|
| 462 |
<row> |
|---|
| 463 |
<entry><para>Min and Max</para></entry> |
|---|
| 464 |
<entry><para>C++ minimum and maximum operators</para></entry> |
|---|
| 465 |
</row> |
|---|
| 466 |
<row> |
|---|
| 467 |
<entry><para>Restricted Pointers</para></entry> |
|---|
| 468 |
<entry><para>C99 restricted pointers and references</para></entry> |
|---|
| 469 |
</row> |
|---|
| 470 |
<row> |
|---|
| 471 |
<entry><para>Backwards Compatibility</para></entry> |
|---|
| 472 |
<entry><para>Compatibilities with earlier definitions of C++</para></entry> |
|---|
| 473 |
</row> |
|---|
| 474 |
</tbody> |
|---|
| 475 |
</tgroup> |
|---|
| 476 |
</table> |
|---|
| 477 |
</listitem> |
|---|
| 478 |
</varlistentry> |
|---|
| 479 |
<!-- |
|---|
| 480 |
<revend/> |
|---|
| 481 |
--> |
|---|
| 482 |
</variablelist></para> |
|---|
| 483 |
</refsect2> |
|---|
| 484 |
<refsect2> |
|---|
| 485 |
<title>Template Options</title> |
|---|
| 486 |
<para><variablelist termlength="narrow" role="5"> |
|---|
| 487 |
<varlistentry><term><literal>-h simple_templates</literal></term> |
|---|
| 488 |
<listitem><para>(<literal>CC</literal> command) Enables simple template instantiation by the Cray C++ |
|---|
| 489 |
compiler. For more information on simple template instantiation, see the foobar The default is <literal>autoinstantiate</literal>.</para> |
|---|
| 490 |
</listitem> |
|---|
| 491 |
</varlistentry> |
|---|
| 492 |
<varlistentry><term><option>-h</option> [<literal>no</literal>]<literal>autoinstantiate</literal></term> |
|---|
| 493 |
<listitem><para>(<literal>CC</literal> command) Enables or disables prelinker (automatic) instantiation |
|---|
| 494 |
of templates by the Cray C++ compiler. For more information on automatic instantiation, see the foobar The |
|---|
| 495 |
default is <literal>autoinstantiate</literal>.</para> |
|---|
| 496 |
</listitem> |
|---|
| 497 |
</varlistentry> |
|---|
| 498 |
<varlistentry><term><literal>-h one_instantiation_per_object</literal></term> |
|---|
| 499 |
<listitem><para>(<literal>CC</literal> command) Put each template object referenced in the source into |
|---|
| 500 |
a separate object file for instantiation. The primary object file will contain everything else that is |
|---|
| 501 |
not a template object. See the <literal>-h instantiation_dir</literal> option for the location of the |
|---|
| 502 |
object files.</para> |
|---|
| 503 |
</listitem> |
|---|
| 504 |
</varlistentry> |
|---|
| 505 |
<varlistentry><term><literal>-h instantiation_dir=</literal><replaceable>dirname</replaceable> </term> |
|---|
| 506 |
<listitem><para>(<literal>CC</literal> command) Specify the instantiation directory that the <literal>-h |
|---|
| 507 |
one_instantiation_per_object</literal> option should use. If the directory does not exist, it will be |
|---|
| 508 |
created if possible. The default directory is <literal>./Template.dir</literal>.</para> |
|---|
| 509 |
</listitem> |
|---|
| 510 |
</varlistentry> |
|---|
| 511 |
<varlistentry><term><literal>-h instantiate=</literal><replaceable>mode</replaceable></term> |
|---|
| 512 |
<listitem><para>(<literal>CC</literal> command) Sets the mode for instantiation of templates. Typically, |
|---|
| 513 |
no templates are instantiated during compilation of a source file except those assigned to the file by |
|---|
| 514 |
automatic instantiation. The default is <literal>instantiate=none</literal>. To change the overall instantiation |
|---|
| 515 |
mode, specify one of the following for <replaceable>mode</replaceable>: <variablelist> |
|---|
| 516 |
<varlistentry><term><literal>none</literal></term> |
|---|
| 517 |
<listitem><para>Default. Does not automatically create instantiations of any template entities. This is |
|---|
| 518 |
the most appropriate mode when prelinker (automatic) instantiation is enabled.</para> |
|---|
| 519 |
</listitem> |
|---|
| 520 |
</varlistentry> |
|---|
| 521 |
<varlistentry><term><literal>used</literal></term> |
|---|
| 522 |
<listitem><para>Instantiates only those template entities that were used in the compilation. This includes |
|---|
| 523 |
all static data members that have template definitions.</para> |
|---|
| 524 |
</listitem> |
|---|
| 525 |
</varlistentry> |
|---|
| 526 |
<varlistentry><term><literal>all</literal></term> |
|---|
| 527 |
<listitem><para>Instantiates all template functions declared or referenced in the compilation unit. For |
|---|
| 528 |
each fully instantiated template class, all of its member functions and static data members are instantiated |
|---|
| 529 |
regardless of whether they were used. Nonmember template functions are instantiated even if the only reference |
|---|
| 530 |
was a declaration.</para> |
|---|
| 531 |
</listitem> |
|---|
| 532 |
</varlistentry> |
|---|
| 533 |
<varlistentry><term><literal>local</literal></term> |
|---|
| 534 |
<listitem><para>Similar to <literal>instantiate=used</literal> except that the functions are given internal |
|---|
| 535 |
linkage. This mode provides a simple mechanism for those who are not familiar with templates. The compiler |
|---|
| 536 |
instantiates the functions used in each compilation unit as local functions, and the program links and |
|---|
| 537 |
runs correctly (barring problems due to multiple copies of local static variables). This mode may generate |
|---|
| 538 |
multiple copies of the instantiated functions and is not suitable for production use. This mode cannot |
|---|
| 539 |
be used in conjunction with prelinker (automatic) template instantiation. Automatic template instantiation |
|---|
| 540 |
is disabled by this mode.</para> |
|---|
| 541 |
</listitem> |
|---|
| 542 |
</varlistentry> |
|---|
| 543 |
</variablelist></para> |
|---|
| 544 |
<para>If <literal>CC</literal> is given a single source file to compile and link, all instantiations are |
|---|
| 545 |
done in the single source file and, by default, the <literal>instantiate=used</literal> mode is used to |
|---|
| 546 |
suppress prelinker instantiation.</para> |
|---|
| 547 |
</listitem> |
|---|
| 548 |
</varlistentry> |
|---|
| 549 |
<varlistentry><term><option>-h</option> [<literal>no</literal>]<literal>implicitinclude</literal></term> |
|---|
| 550 |
<listitem><para>(<literal>CC</literal> command) Enables or disables implicit inclusion of source files |
|---|
| 551 |
as a method of finding definitions of template entities to be instantiated. The default is <literal>implicitinclude</literal>. |
|---|
| 552 |
For more information on template instantiation, see the foobar.</para> |
|---|
| 553 |
</listitem> |
|---|
| 554 |
</varlistentry> |
|---|
| 555 |
<varlistentry><term><literal>-h remove_instantiation_flags</literal></term> |
|---|
| 556 |
<listitem><para>(<literal>CC</literal> command) Causes the prelinker to recompile all the sources to remove |
|---|
| 557 |
all instantiation flags.</para> |
|---|
| 558 |
</listitem> |
|---|
| 559 |
</varlistentry> |
|---|
| 560 |
<varlistentry><term><literal>-h prelink_local_copy</literal></term> |
|---|
| 561 |
<listitem><para>(<literal>CC</literal> command) Indicates that only local files (for example, files in |
|---|
| 562 |
the current directory) are candidates for assignment of instantiations.</para> |
|---|
| 563 |
</listitem> |
|---|
| 564 |
</varlistentry> |
|---|
| 565 |
<varlistentry><term><literal>-h prelink_copy_if_nonlocal</literal></term> |
|---|
| 566 |
<listitem><para>(<literal>CC</literal> command) Causes the assignment of an instantiation to a nonlocal |
|---|
| 567 |
object file to result in the object file being recompiled in the current directory.</para> |
|---|
| 568 |
</listitem> |
|---|
| 569 |
</varlistentry> |
|---|
| 570 |
</variablelist></para> |
|---|
| 571 |
</refsect2> |
|---|
| 572 |
<refsect2> |
|---|
| 573 |
<title>Virtual Function Options</title> |
|---|
| 574 |
<para><variablelist termlength="narrow" role="5"> |
|---|
| 575 |
<varlistentry role="list"><term><option>-h</option> <literal>forcevtbl</literal></term> |
|---|
| 576 |
<term><option>-h</option> <literal>suppressvtbl</literal></term> |
|---|
| 577 |
<listitem><para>(<literal>CC</literal> command) The virtual function table for a class is defined in a |
|---|
| 578 |
compilation if the compilation contains a definition of the first noninline, nonpure virtual function |
|---|
| 579 |
of the class. There are cases in which heuristic methods used by the compiler front end to decide on definition |
|---|
| 580 |
of virtual function tables provide no guidance. In these cases, specifying <literal>forcevtbl</literal> forces |
|---|
| 581 |
the definition of virtual definition tables. The <literal>forcevtbl</literal> option differs from the |
|---|
| 582 |
default behavior in that it does not force the definition to be local.</para> |
|---|
| 583 |
<para>The <literal>suppressvtbl</literal> argument suppresses definition of virtual function tables.</para> |
|---|
| 584 |
<para>By default, the compiler defines the virtual function table as a local static entity.</para> |
|---|
| 585 |
</listitem> |
|---|
| 586 |
</varlistentry> |
|---|
| 587 |
<varlistentry><term><literal>-h suppressvtbl</literal></term> |
|---|
| 588 |
<listitem><para>See the description for <literal>forcevtbl</literal>.</para> |
|---|
| 589 |
</listitem> |
|---|
| 590 |
</varlistentry> |
|---|
| 591 |
</variablelist></para> |
|---|
| 592 |
</refsect2> |
|---|
| 593 |
<refsect2> |
|---|
| 594 |
<title>General Language Options</title> |
|---|
| 595 |
<para><variablelist termlength="narrow" role="5"> |
|---|
| 596 |
<varlistentry><term><literal>-h keep=</literal><replaceable>file</replaceable></term> |
|---|
| 597 |
<listitem><para>(<literal>CC</literal> command) When specified, the static constructor/destructor <literal>.o</literal> file |
|---|
| 598 |
is retained as <replaceable>file</replaceable>. This option is useful when linking <literal>.o</literal> files |
|---|
| 599 |
on a system that does not have a C++ compiler. To use this option, the static constructor/destructor file |
|---|
| 600 |
must be included in the link. Following this precaution, mixed object files (files with <literal>.o</literal> suffixes) |
|---|
| 601 |
from C and C++ compilations can be linked into executables by using the loader command for your system. |
|---|
| 602 |
By default, the static constructor/destructor file is not created. Without this option, the program must |
|---|
| 603 |
be linked with the <literal>CC</literal> command to ensure that static construction/destruction is done.</para> |
|---|
| 604 |
</listitem> |
|---|
| 605 |
</varlistentry> |
|---|
| 606 |
<varlistentry><term><option>-h</option> <literal>restrict=</literal><replaceable>args</replaceable></term> |
|---|
| 607 |
<listitem><para>Globally instructs the compiler to treat certain classes of pointers as restricted pointers. |
|---|
| 608 |
You can use this option to enhance optimization, including vectorization. Enter one of the following for <replaceable>args</replaceable>:<variablelist> |
|---|
| 609 |
<varlistentry><term><literal>a</literal></term> |
|---|
| 610 |
<listitem><para>All pointers to object and incomplete types are to be considered restricted pointers, |
|---|
| 611 |
regardless of where they appear in the source code. This includes pointers in <literal>struct</literal>, <literal>union</literal>, |
|---|
| 612 |
and <literal>class</literal> declarations, type casts, function prototypes, and so on.</para> |
|---|
| 613 |
<caution><para>Do not specify <literal>restrict=a</literal> if, during execution of any function, an object |
|---|
| 614 |
is modified and that object is referenced through either two different pointers or through the declared |
|---|
| 615 |
name of the object and a pointer. Undefined behavior may result.</para> |
|---|
| 616 |
</caution> |
|---|
| 617 |
</listitem> |
|---|
| 618 |
</varlistentry> |
|---|
| 619 |
<varlistentry><term><literal>f</literal></term> |
|---|
| 620 |
<listitem><para>All function parameters that are pointers to objects or incomplete types are to be considered |
|---|
| 621 |
restricted pointers.</para> |
|---|
| 622 |
<para>CAUTION: Do not specify <literal>restrict=f</literal> if, during execution of any function, an object |
|---|
| 623 |
is modified and that object is referenced through either two different pointer function parameters or |
|---|
| 624 |
through the declared name of the object and a pointer function parameter. Undefined behavior may result.</para> |
|---|
| 625 |
</listitem> |
|---|
| 626 |
</varlistentry> |
|---|
| 627 |
<varlistentry><term><literal>t</literal></term> |
|---|
| 628 |
<listitem><para><literal>CC</literal> command. All <literal>this</literal> pointers are to be considered |
|---|
| 629 |
restricted pointers.</para> |
|---|
| 630 |
<caution><para>Do not specify <literal>restrict=t</literal> if, during execution of any function, an object |
|---|
| 631 |
is modified and that object is referenced through the declared name of the object and a <literal>this</literal> pointer. |
|---|
| 632 |
Undefined behavior may result.</para> |
|---|
| 633 |
</caution> |
|---|
| 634 |
</listitem> |
|---|
| 635 |
</varlistentry> |
|---|
| 636 |
</variablelist></para> |
|---|
| 637 |
<para>These arguments instruct the compiler to assume that, in the current compilation unit, each pointer |
|---|
| 638 |
(<literal>=a</literal>), or each pointer that is a function parameter (<literal>=f</literal>), or each <literal>this</literal> pointer |
|---|
| 639 |
(<literal>=t</literal>) points to a unique object. This assumption eliminates those pointers as sources |
|---|
| 640 |
of potential aliasing and may allow additional vectorization or other optimizations. These options cause |
|---|
| 641 |
only data dependencies from pointer aliasing to be ignored, rather than all data dependencies, so they |
|---|
| 642 |
can be used safely for more programs than the <literal>-hfoobarivdep</literal> option.</para> |
|---|
| 643 |
</listitem> |
|---|
| 644 |
</varlistentry> |
|---|
| 645 |
<varlistentry><term><option>-h</option> [<literal>no</literal>]<literal>calchars</literal></term> |
|---|
| 646 |
<listitem><para>Permits use of <literal>@</literal> and <literal>$</literal> in identifier names. This |
|---|
| 647 |
option is useful for porting codes in which identifiers include these characters. With <literal>nocalchars</literal> (the |
|---|
| 648 |
default), these characters are not allowed in identifier names.</para> |
|---|
| 649 |
<caution><para>Identifiers with these characters are within Cray name space and are included in many Cray |
|---|
| 650 |
library identifiers, internal compiler labels, objects, and functions. You must prevent conflicts between |
|---|
| 651 |
any of these uses, current or future, and identifier declarations or references in your code; any such |
|---|
| 652 |
conflict is an error.</para> |
|---|
| 653 |
</caution> |
|---|
| 654 |
</listitem> |
|---|
| 655 |
</varlistentry> |
|---|
| 656 |
<varlistentry><term><option>-h</option> [<literal>no</literal>]<literal>signedshifts</literal></term> |
|---|
| 657 |
<listitem><para>Affects the result of the right shift operator. For the expression <literal>e1foobar>>foobare2 |
|---|
| 658 |
where</literal> <literal>e1</literal> has a signed type and <literal>signedshifts</literal> is in effect, |
|---|
| 659 |
the vacated bits are filled with the sign bit of <literal>e1</literal>. When <literal>nosignedshifts</literal> is |
|---|
| 660 |
in effect, the vacated bits are filled with zeros, identical to the behavior when <literal>e1</literal> has |
|---|
| 661 |
an unsigned type.</para> |
|---|
| 662 |
</listitem> |
|---|
| 663 |
</varlistentry> |
|---|
| 664 |
</variablelist></para> |
|---|
| 665 |
</refsect2> |
|---|
| 666 |
<refsect2> |
|---|
| 667 |
<title>General Optimization Options</title> |
|---|
| 668 |
<para><variablelist termlength="narrow" role="5"> |
|---|
| 669 |
<varlistentry><term><option>-h gen_private_callee</option></term> |
|---|
| 670 |
<listitem><para>Used when compiling source files containing subprograms that will be called from streamed |
|---|
| 671 |
regions, whether those streamed regions are created by CSD directives or by the use of the <literal>ssp_private</literal> or <literal>concurrent</literal> directives |
|---|
| 672 |
to cause autostreaming.</para> |
|---|
| 673 |
</listitem> |
|---|
| 674 |
</varlistentry> |
|---|
| 675 |
<varlistentry><term><literal>-h</literal> <optional>no</optional><literal>aggress</literal></term> |
|---|
| 676 |
<listitem><para>The <literal>-h aggress</literal> option provides greater opportunity to optimize loops |
|---|
| 677 |
that would otherwise by inhibited from optimization due to an internal compiler size limitation. <literal>-h |
|---|
| 678 |
noaggress</literal> leaves this size limitation in effect.</para> |
|---|
| 679 |
<para>With <literal>-hfoobaraggress</literal>, internal compiler tables are expanded to accommodate larger |
|---|
| 680 |
loop bodies. This option can increase the compilation's time and memory size.</para> |
|---|
| 681 |
<para>The default is <literal>-h noaggress</literal>.</para> |
|---|
| 682 |
</listitem> |
|---|
| 683 |
</varlistentry> |
|---|
| 684 |
<varlistentry><term><option>-h display_opt</option></term> |
|---|
| 685 |
<listitem><para>Displays the current optimization settings for this compilation.</para> |
|---|
| 686 |
</listitem> |
|---|
| 687 |
</varlistentry> |
|---|
| 688 |
<varlistentry><term><literal>-h <optional>no</optional>fusion</literal></term> |
|---|
| 689 |
<listitem><para>The Globally allows or disallows loop fusion. By default, the compiler attempts to fuse |
|---|
| 690 |
all loops, unless the <option>foobarh nofusion</option> option is specified. Fusing loops generally increases |
|---|
| 691 |
single processor performance by reducing memory traffic and loop overhead. On rare occasions loop fusing |
|---|
| 692 |
may degrade performance.</para> |
|---|
| 693 |
<note><para>Loop fusion is disabled when the vectorization level is set to 0 or 1.</para> |
|---|
| 694 |
</note> |
|---|
| 695 |
<para>Refer to foobar for more information about loop fusion.</para> |
|---|
| 696 |
</listitem> |
|---|
| 697 |
</varlistentry> |
|---|
| 698 |
<varlistentry><term><option>-h</option> [<literal>no</literal>]<literal>intrinsics</literal></term> |
|---|
| 699 |
<listitem><para>Allows the use of intrinsic hardware functions, which allow direct access to some Cray |
|---|
| 700 |
hardware instructions or generate inline code for some functions. The default is <literal>intrinsics</literal>. |
|---|
| 701 |
This option has no effect on specially handled library functions. See the foobar for a complete list |
|---|
| 702 |
of intrinsic functions.</para> |
|---|
| 703 |
</listitem> |
|---|
| 704 |
</varlistentry> |
|---|
| 705 |
<varlistentry><term><option>-h</option> <literal>list</literal>=<literal><replaceable>opt</replaceable></literal></term> |
|---|
| 706 |
<listitem><para>Allows the creation of loopmark listings. The values for <literal><replaceable>opt</replaceable></literal> are:</para> |
|---|
| 707 |
<variablelist> |
|---|
| 708 |
<varlistentry><term><literal>a</literal></term> |
|---|
| 709 |
<listitem><para>Use all list options</para> |
|---|
| 710 |
</listitem> |
|---|
| 711 |
</varlistentry> |
|---|
| 712 |
<varlistentry><term><literal>b</literal></term> |
|---|
| 713 |
<listitem><para>Add page breaks to listing</para> |
|---|
| 714 |
</listitem> |
|---|
| 715 |
</varlistentry> |
|---|
| 716 |
<varlistentry><term><literal>e</literal></term> |
|---|
| 717 |
<listitem><para>Expand include files</para> |
|---|
| 718 |
</listitem> |
|---|
| 719 |
</varlistentry> |
|---|
| 720 |
<varlistentry><term><literal>i</literal></term> |
|---|
| 721 |
<listitem><para>Intersperse optimization messages within the source listing rather than at the end</para> |
|---|
| 722 |
</listitem> |
|---|
| 723 |
</varlistentry> |
|---|
| 724 |
<varlistentry><term><literal>m</literal></term> |
|---|
| 725 |
<listitem><para>Create loopmark listing</para> |
|---|
| 726 |
</listitem> |
|---|
| 727 |
</varlistentry> |
|---|
| 728 |
<varlistentry><term><literal>s</literal></term> |
|---|
| 729 |
<listitem><para>Create a complete source listing (include files not expanded)</para> |
|---|
| 730 |
</listitem> |
|---|
| 731 |
</varlistentry> |
|---|
| 732 |
<varlistentry><term><literal>w</literal></term> |
|---|
| 733 |
<listitem><para>Create a wide listing rather than the default of 80 characters</para> |
|---|
| 734 |
</listitem> |
|---|
| 735 |
</varlistentry> |
|---|
| 736 |
</variablelist> |
|---|
| 737 |
</listitem> |
|---|
| 738 |
</varlistentry> |
|---|
| 739 |
<varlistentry><term><option>-h</option> <literal>msp</literal></term> |
|---|
| 740 |
<listitem><para>Causes the compiler to generate code and to select the appropriate libraries to create |
|---|
| 741 |
an executable that runs on one or more multistreaming processors (MSP mode). Any code, including Cray |
|---|
| 742 |
memory models, can use MSP mode. Default.</para> |
|---|
| 743 |
<para>Executables compiled for MSP mode can use object files compiled with MSP or SSP mode.</para> |
|---|
| 744 |
<para>For more information about MSP mode, refer to foobar. For information about SSP mode, see the <option>-h</option> <literal>ssp</literal> option.</para> |
|---|
| 745 |
</listitem> |
|---|
| 746 |
</varlistentry> |
|---|
| 747 |
<varlistentry><term><option>-h</option> [<literal>no</literal>]<literal>pattern</literal></term> |
|---|
| 748 |
<listitem><para>Globally enables or disables pattern matching. Pattern matching is enabled by default, |
|---|
| 749 |
but it only takes effect when <literal>-hfoobarscalar2</literal> or higher is specified. The default is <literal>pattern</literal>.</para> |
|---|
| 750 |
</listitem> |
|---|
| 751 |
</varlistentry> |
|---|
| 752 |
<varlistentry><term><option>-h</option> <optional>no</optional><literal>overindex</literal></term> |
|---|
| 753 |
<listitem><para>The <literal>-h overindex</literal> option declares that there are array subscripts that |
|---|
| 754 |
index a dimension of an array that is outside the declared bounds of that array. The <literal>-hfoobarnooverindex</literal> option |
|---|
| 755 |
declares that there are no array subscripts that index a dimension of an array that is outside the declared |
|---|
| 756 |
bounds of that array.</para> |
|---|
| 757 |
<para>The default is <literal>-h nooverindex</literal>.</para> |
|---|
| 758 |
</listitem> |
|---|
| 759 |
</varlistentry> |
|---|
| 760 |
<varlistentry><term><option>-h</option> <literal>ssp</literal></term> |
|---|
| 761 |
<listitem><para>Causes the compiler to compile the code and select the appropriate libraries to create |
|---|
| 762 |
an executable that runs on a single-streaming processor (SSP mode). Any code, including code that uses |
|---|
| 763 |
Cray parallel programming model constructs, can use SSP mode. The executable runs on one SSP on an application |
|---|
| 764 |
node.</para> |
|---|
| 765 |
<para>Executables compiled for SSP mode can use only those object files that were compiled in SSP mode. |
|---|
| 766 |
When loading object files separately from the compile step, the SSP mode must be specified during the |
|---|
| 767 |
load step.</para> |
|---|
| 768 |
<para>Since SSP mode does not use streaming, the compiler automatically uses the <option>-h</option> <literal>stream0</literal> option. |
|---|
| 769 |
This causes the compiler to ignore Cray Streaming Directives (CSDs).</para> |
|---|
| 770 |
<note><para>Code explicitly compiled with the <option>-h stream0</option> option can be linked with object |
|---|
| 771 |
files compiled with MSP or SSP mode. You can use this option to create a universal library that can be |
|---|
| 772 |
used in MSP or SSP mode.</para> |
|---|
| 773 |
</note> |
|---|
| 774 |
<para>For more information about SSP mode, refer to foobar. For information about MSP mode, see the <option>-h</option> <literal>msp</literal> option. |
|---|
| 775 |
For information on creating your own commands and running them on a single SSP on the support node, see |
|---|
| 776 |
the <option>-h command</option> option.</para> |
|---|
| 777 |
<para>This option is off by default.</para> |
|---|
| 778 |
</listitem> |
|---|
| 779 |
</varlistentry> |
|---|
| 780 |
<varlistentry><term><option>-h</option> <literal><optional>no</optional>unroll</literal></term> |
|---|
| 781 |
<listitem><para>The <literal>foobarh <optional>no</optional>unroll</literal> option globally allows or |
|---|
| 782 |
disallows unrolling of loops. By default, the compiler attempts to all unroll loops, unless the <option>foobarh |
|---|
| 783 |
nounroll</option> option is specified, or the <literal>unroll 0</literal> or <literal>unroll 1</literal> directive |
|---|
| 784 |
is specified for a loop. Loop unrolling generally increases single processor performance at the cost of |
|---|
| 785 |
increased compile time and code size.</para> |
|---|
| 786 |
<para>Refer to foobar for more information about loop unrolling.</para> |
|---|
| 787 |
</listitem> |
|---|
| 788 |
</varlistentry> |
|---|
| 789 |
<varlistentry><term><option>-O</option><replaceable> level</replaceable></term> |
|---|
| 790 |
<listitem><para>Specifies the optimization level for a group of compiler features. A value of <literal>0</literal>, <literal>1</literal>, <literal>2</literal>, |
|---|
| 791 |
or <literal>3</literal> sets that level of optimization for each of the <literal>-hfoobarinline</literal><replaceable>n</replaceable>, <literal>-hfoobarscalar</literal><replaceable>n</replaceable>, <literal |
|---|
| 792 |
>-hfoobarstream</literal><replaceable>n</replaceable>, and <literal>-hfoobarvector</literal><replaceable>n</replaceable> options.</para> |
|---|
| 793 |
<para>For example, <literal>-O2</literal> is equivalent to <literal>-hfoobarinline2,scalar2,stream2,vector2</literal>. <option>-O</option> with |
|---|
| 794 |
no argument specified is the same as not specifying the <option>-O</option> option; the default optimization |
|---|
| 795 |
settings are the same as the defaults for the individual <option>-h</option> options.</para> |
|---|
| 796 |
</listitem> |
|---|
| 797 |
</varlistentry> |
|---|
| 798 |
</variablelist></para> |
|---|
| 799 |
</refsect2> |
|---|
| 800 |
<refsect2> |
|---|
| 801 |
<title>Multistreaming Processor Optimization Options</title> |
|---|
| 802 |
<para><variablelist termlength="narrow" role="5"> |
|---|
| 803 |
<varlistentry><term><option>-h</option> <literal>stream</literal><replaceable>n</replaceable></term> |
|---|
| 804 |
<listitem><para>The <literal>-hfoobarstream</literal><replaceable>n</replaceable> option specifies the |
|---|
| 805 |
level of automatic MSP optimizations to be performed. Generally, vectorized applications that execute |
|---|
| 806 |
on a one-processor system can expect to execute up to four times faster on a processor with multistreaming |
|---|
| 807 |
enabled.</para> |
|---|
| 808 |
<para>These can be used for the <replaceable>n</replaceable> argument:</para> |
|---|
| 809 |
<variablelist> |
|---|
| 810 |
<varlistentry><term><literal>0</literal></term> |
|---|
| 811 |
<listitem><para>No automatic multistreaming optimizations are performed.</para> |
|---|
| 812 |
</listitem> |
|---|
| 813 |
</varlistentry> |
|---|
| 814 |
<varlistentry><term><literal>1</literal></term> |
|---|
| 815 |
<listitem><para>Conservative automatic multistreaming optimizations. Automatic multistreaming optimization |
|---|
| 816 |
is limited to inner vectorized loops and some bit matrix multiplication (BMM) operations. MSP operations |
|---|
| 817 |
performed generate the same results that would be obtained from scalar optimizations; for example, no |
|---|
| 818 |
floating-point reductions are performed. This level is compatible with <option>-h vector1</option>, <literal>2</literal>, |
|---|
| 819 |
and <literal>3</literal>.</para> |
|---|
| 820 |
</listitem> |
|---|
| 821 |
</varlistentry> |
|---|
| 822 |
<varlistentry><term><literal>2</literal></term> |
|---|
| 823 |
<listitem><para>Moderate automatic multistreaming optimizations. Automatic multistreaming optimization |
|---|
| 824 |
is performed on loop nests and appropriate BMM operations. This level is compatible with <option>-h vector2</option> and <literal> 3</literal>.</para> |
|---|
| 825 |
</listitem> |
|---|
| 826 |
</varlistentry> |
|---|
| 827 |
<varlistentry><term><literal>3</literal></term> |
|---|
| 828 |
<listitem><para>Aggressive automatic multistreaming optimizations. Automatic multistreaming optimization |
|---|
| 829 |
is performed as with <literal>stream2</literal>. This level is compatible with <option>-h vector2</option> and <literal> 3</literal>.</para> |
|---|
| 830 |
</listitem> |
|---|
| 831 |
</varlistentry> |
|---|
| 832 |
</variablelist> |
|---|
| 833 |
</listitem> |
|---|
| 834 |
</varlistentry> |
|---|
| 835 |
</variablelist></para> |
|---|
| 836 |
</refsect2> |
|---|
| 837 |
<refsect2> |
|---|
| 838 |
<title>Vector Optimization Options</title> |
|---|
| 839 |
<para><variablelist termlength="narrow" role="5"> |
|---|
| 840 |
<varlistentry><term><option>-h [no]infinitevl</option></term> |
|---|
| 841 |
<listitem><para>(<command>CC</command>, <command>cc</command>, and <command>c99</command> commands) Instructs |
|---|
| 842 |
the compiler to assume an infinite safe vector length for all <literal>#pragma ivdep</literal> directives. |
|---|
| 843 |
The <literal>-h noinfinitevl</literal> option instructs the compiler to assume a safe vector length equal |
|---|
| 844 |
to 64 for all <literal>#pragma ivdep</literal> directives.</para> |
|---|
| 845 |
<para>The default is <option>-h infinitevl</option>.</para> |
|---|
| 846 |
</listitem> |
|---|
| 847 |
</varlistentry> |
|---|
| 848 |
<varlistentry><term><option>-h</option> [<literal>no</literal>]<literal>ivdep</literal></term> |
|---|
| 849 |
<listitem><para>Instructs the compiler to ignore vector dependencies for all loops. This is useful for |
|---|
| 850 |
vectorizing loops that contain pointers. With <literal>noivdep</literal>, loop dependencies inhibit vectorization; |
|---|
| 851 |
this is the default. To control loops individually, use the <literal>ivdep</literal> directive. <note> |
|---|
| 852 |
<para>The <option>-h ivdep</option> option severely constrains other loop optimizations and should be |
|---|
| 853 |
avoided if at all possible.</para> |
|---|
| 854 |
</note></para> |
|---|
| 855 |
<para>CAUTION: Incorrect results can occur if there is a vector dependency within a loop. Combining this |
|---|
| 856 |
option with inlining is dangerous because inlining can introduce vector dependencies.</para> |
|---|
| 857 |
</listitem> |
|---|
| 858 |
</varlistentry> |
|---|
| 859 |
<varlistentry><term><literal>-h vector</literal><replaceable>n</replaceable></term> |
|---|
| 860 |
<listitem><para>Specifies the level of automatic vectorization to be performed. Vectorization results |
|---|
| 861 |
in dramatic performance improvements with a small increase in executable size. Vectorization directives |
|---|
| 862 |
are unaffected by this option. The default is <literal>-hfoobarvector2</literal>. Enter one of the following |
|---|
| 863 |
for <replaceable>n</replaceable>: <variablelist termlength="narrow" role="5"> |
|---|
| 864 |
<varlistentry><term><replaceable>n</replaceable></term> |
|---|
| 865 |
<listitem><para>Vectorization Level</para> |
|---|
| 866 |
</listitem> |
|---|
| 867 |
</varlistentry> |
|---|
| 868 |
<varlistentry><term>0</term> |
|---|
| 869 |
<listitem><para>No automatic vectorization.</para> |
|---|
| 870 |
</listitem> |
|---|
| 871 |
</varlistentry> |
|---|
| 872 |
<varlistentry><term>1</term> |
|---|
| 873 |
<listitem><para>Conservative automatic vectorization on inner loops only. Automatic vectorization is performed. |
|---|
| 874 |
Floating-point reduction loops are not vectorized.</para> |
|---|
| 875 |
</listitem> |
|---|
| 876 |
</varlistentry> |
|---|
| 877 |
<varlistentry><term>2</term> |
|---|
| 878 |
<listitem><para>Moderate automatic vectorization. Automatic vectorization as with <literal>vector1</literal> and |
|---|
| 879 |
vectorization of reduction loops is added. Loop nests are restructured, and vectorization can be applied |
|---|
| 880 |
to any loop in the nest. Default.</para> |
|---|
| 881 |
</listitem> |
|---|
| 882 |
</varlistentry> |
|---|
| 883 |
<varlistentry><term>3</term> |
|---|
| 884 |
<listitem><para>Aggressive automatic vectorization. Automatic vectorization is performed as with <literal>vector2</literal>. |
|---|
| 885 |
The aliasing assumptions specified in the standard are used (for example, it is assumed that no aliasing |
|---|
| 886 |
will occur between two pointers to different structure types).</para> |
|---|
| 887 |
</listitem> |
|---|
| 888 |
</varlistentry> |
|---|
| 889 |
</variablelist></para> |
|---|
| 890 |
</listitem> |
|---|
| 891 |
</varlistentry> |
|---|
| 892 |
<varlistentry><term><option>-h</option> <optional><literal>no</literal></optional><literal>vsearch</literal></term> |
|---|
| 893 |
<listitem><para>Vectorizes search loops. With <literal>novsearch</literal>, the default vectorization |
|---|
| 894 |
level applies. This option is affected by the <literal>-h vector</literal><replaceable>n</replaceable> option. |
|---|
| 895 |
The default option is <literal>-hfoobarvsearch</literal>.</para> |
|---|
| 896 |
</listitem> |
|---|
| 897 |
</varlistentry> |
|---|
| 898 |
</variablelist></para> |
|---|
| 899 |
</refsect2> |
|---|
| 900 |
<refsect2> |
|---|
| 901 |
<title>Inlining Optimization Options</title> |
|---|
| 902 |
<para><variablelist termlength="narrow" role="5"> |
|---|
| 903 |
<varlistentry><term><literal>-h inline</literal><replaceable>n</replaceable></term> |
|---|
| 904 |
<listitem><para>Specifies the level of inlining to be performed. Inlining eliminates the overhead of a |
|---|
| 905 |
function call and increases the opportunities for other optimizations. Inlining can also increase object |
|---|
| 906 |
code size. Inlining directives and the <literal>inline</literal> keyword are unaffected by this option. |
|---|
| 907 |
The default is <literal>-hfoobarinline2</literal>. Enter one of the following values for <replaceable>n</replaceable>:<variablelist> |
|---|
| 908 |
<varlistentry><term><literal>0</literal></term> |
|---|
| 909 |
<listitem><para>No inlining is performed.</para> |
|---|
| 910 |
</listitem> |
|---|
| 911 |
</varlistentry> |
|---|
| 912 |
<varlistentry><term><literal>1</literal></term> |
|---|
| 913 |
<listitem><para>Conservative inlining. Inlining is performed only on functions marked by the <literal>inline</literal> keyword, |
|---|
| 914 |
on functions marked by the <literal>#pragmafoobar_CRIfoobarinline</literal> directive, or on functions |
|---|
| 915 |
defined inside a class definition.</para> |
|---|
| 916 |
</listitem> |
|---|
| 917 |
</varlistentry> |
|---|
| 918 |
<varlistentry><term><literal>2</literal></term> |
|---|
| 919 |
<listitem><para>Same function as level <literal>1</literal> except that it has a different threshold (the |
|---|
| 920 |
maximum code space and execution time allowed)</para> |
|---|
| 921 |
</listitem> |
|---|
| 922 |
</varlistentry> |
|---|
| 923 |
<varlistentry><term><literal>3</literal></term> |
|---|
| 924 |
<listitem><para>Aggressive automatic inlining. All functions are candidates for inlining except those |
|---|
| 925 |
specifically marked with a <literal>#pragmafoobarnoinline</literal> directive.</para> |
|---|
| 926 |
</listitem> |
|---|
| 927 |
</varlistentry> |
|---|
| 928 |
</variablelist></para> |
|---|
| 929 |
</listitem> |
|---|
| 930 |
</varlistentry> |
|---|
| 931 |
</variablelist></para> |
|---|
| 932 |
</refsect2> |
|---|
| 933 |
<refsect2> |
|---|
| 934 |
<title>Scalar Optimization Options</title> |
|---|
| 935 |
<para><variablelist termlength="narrow" role="5"> |
|---|
| 936 |
<varlistentry><term><option>-h</option> [<literal>no</literal>]<literal>interchange</literal></term> |
|---|
| 937 |
<listitem><para>(<literal>CC</literal>, <literal>cc</literal>, and <command>c99</command> commands) The <literal>-h |
|---|
| 938 |
interchange</literal> option allows the compiler to attempt to interchange all loops. Interchanging loops |
|---|
| 939 |
is a technique that is used to gain performance by having the compiler swap an inner loop with an outer |
|---|
| 940 |
loop. The compiler attempts the interchange only if the interchange is judged by the compiler to increase |
|---|
| 941 |
performance. Loop interchange is done only at scalar optimization level 2 or higher.</para> |
|---|
| 942 |
<para>The <literal>-h nointerchange</literal> option prohibits the compiler from attempting to interchange |
|---|
| 943 |
any loops. To disable interchange of loops individually, use the <literal>#pragma nointerchange</literal> directive.</para> |
|---|
| 944 |
</listitem> |
|---|
| 945 |
</varlistentry> |
|---|
| 946 |
<varlistentry><term><literal>-h scalar</literal><replaceable>n</replaceable></term> |
|---|
| 947 |
<listitem><para>Specifies the level of automatic scalar optimization to be performe |
|---|