root/libswish3/trunk/src/test_docs/testutf.xml

Revision 1913, 103.6 kB (checked in by karpet, 2 years ago)

for all the world to see

Line 
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