United States |
![]() |
![]() |
|
Previous | Contents | Index |
Text-Module Form
For the text-module (nonportable) form of inclusion, the name can only be an identifier. It, therefore, has no associated file type.
The identifier is used as a module name to search the following:
DECC$TEXT_LIBRARY
SYS$LIBRARY:DECC$RTLDEF.TLB
SYS$LIBRARY:SYS$STARLET_C.TLB
The default for this qualifer is /NOINCLUDE_DIRECTORY.
The default is /INSTRUCTION_SET=FLOATING_POINT.
Specifying /L_DOUBLE_SIZE=64 treats all long double references as G_FLOAT, D_FLOAT, or T_FLOAT, depending on the value of the /FLOAT qualifier.
Specifying /L_DOUBLE_SIZE=128 treats all long double references as X_FLOAT.
The default is /L_DOUBLE_SIZE=128.
$ CC ONE + TWO + THREE/LIBRARY[Return] |
Files ONE.C and TWO.C can contain references to modules in THREE.TLB. Consider the following example:
$ CC ONE + TWO + THREE/LIBRARY, FOUR[Return] |
The file FOUR.C cannot contain references to modules in THREE.TLB since FOUR.C is located in a separate compilation unit separated by a comma. The placement of the library file specification does not matter. The following command lines are equivalent:
$ CC THREE/LIBRARY + ONE + TWO[Return] $ CC ONE + THREE/LIBRARY + TWO[Return] $ CC ONE + TWO + THREE/LIBRARY[Return] |
The default is /LINE_DIRECTIVES.
By default, /LIST creates a listing file with the same name as the source file and with a file extension of .LIS. If you include a file specification with the /LIST qualifier, the compiler uses that specification to name the listing file.
In interactive mode, the default is /NOLIST. In batch mode, the default is /LIST. See the descriptions of the qualifiers /[NO]MACHINE_CODE, and /SHOW for related information. (For example, to suppress compiler messages to the terminal or to a batch log file, use the /SHOW=NOTERMINAL qualifier.)
On OpenVMS VAX systems, several formats exist to list machine code. Table 1-10 describes the /MACHINE_CODE qualifier options.
Option | Usage |
---|---|
AFTER | Causes the lines of machine code produced during compilation to print after all the source code in the listing. |
BEFORE | Causes lines of machine code produced during compilation to print before any source code in the listing. |
INTERSPERSED | Produces a listing consisting of lines of source code followed by the corresponding lines of machine code. This is the default option. |
On OpenVMS Alpha sytems, the format of the generated machine code listing is similar to what you would get using the AFTER keyword on OpenVMS VAX systems.
The default is /NOMACHINE_CODE.
Any use of the #pragma member_alignment or #pragma nomember_alignment directives within the source code overrides the setting established by this qualifier. Specifying /NOMEMBER_ALIGNMENT causes data structure members to be byte-aligned (with the exception of bit-field members).
On OpenVMS Alpha systems, the default is /MEMBER_ALIGNMENT.
On OpenVMS VAX systems, the default is /NOMEMBER_ALIGNMENT.
See the description of #pragma [no]member_alignment in Section 5.4.11.
object_file_name :<tab><source file name>) object_file_name :<tab><full path to first include file>) object_file_name :<tab><full path to second include file>) |
Table 1-11 shows the /MMS_DEPENDENCIES qualifier options.
Option | Usage |
---|---|
FILE[=filespec] | Specifies where to save the dependency file. The default file extension for a dependency file is .mms . Other than using this different default extension, /MMS_DEPENDENCY uses the same procedure that the /OBJECT and /LIST qualifiers do for determining the name of the output file. |
[NO]SYSTEM_INCLUDE_FILES | Specifies whether or not to include dependency information about system include files (those included with #include < filename> .) If omitted, this option defaults to including dependency information about system include files. |
The default is /NOMMS_DEPENDENCY.
Option | Usage |
---|---|
UPPERCASE | Converts to uppercase. |
LOWERCASE | Converts to lowercase. |
AS_IS | Leaves the case as specified in the source. |
Option2 controls whether or not external names greater than 31 characters get truncated or shortened. Table 1-13 lists the option2 values.
Option | Usage |
---|---|
/NAMES=TRUNCATED (default) | Truncates long external names. |
/NAMES=SHORTENED |
Shortens long external names.
A shortened name consists of the first 23 characters of the name followed by a 7-character Cyclic Redundancy Check (CRC) computed by looking at the full name, and then a "$". |
The default is /NAMES=(UPPERCASE,TRUNCATED), which provides the same conversion-to-uppercase behavior as VAX C, and truncates the name to 31 characters.
On OpenVMS VAX systems, the /NAMES qualifier does not affect the names of the $CODE and $DATA psects. On OpenVMS Alpha systems, the /NAMES qualifier does not affect the names of the $ABS$, $BSS$, $CODE$, $DATA$, $LINK$, $LITERAL$, and $READONLY$ psects. Specifying /NAMES=SHORTENED turns on the /REPOSITORY qualifier. |
#include "file-spec" |
Table 1-14 describes the /NESTED_INCLUDE_DIRECTORY qualifier options.
Option | Usage |
---|---|
PRIMARY_FILE | Directs the compiler to search the default file type for headers using the context of the primary source file (the .C file). This means that just the file type (".h" or ".") is used for the default file-spec, but the chain of "related file-specs" used to maintain the sticky defaults for processing the next top-level source file is also applied when searching for the include file. This most closely matches the behavior of VAX C. |
INCLUDE_FILE | Directs the compiler to first search the directory of the source file containing the #include directive. If the file to be included is not found, the compiler continues searching by following normal inclusion rules. |
NONE | Directs the compiler to skip the first step of processing #include " file.h" directives. The compiler starts its search for the include file in the /INCLUDE_DIRECTORY directories. It does not start by looking in the directory containing the including file or in the directory containing the top level source file. |
The default is /NESTED_INCLUDE_DIRECTORY=INCLUDE_FILE.
The compiler executes faster if it does not have to produce an object module. Use the /NOOBJECT qualifier when you need only a listing of a program or when you want the compiler to check a source file for errors. The default is /OBJECT.
You can specify the options described in Table 1-15.
Option | Usage | ||||
---|---|---|---|---|---|
[NO]DISJOINT (VAX ONLY) |
Optimizes the generated machine code. For example, the compiler
eliminates common subexpressions, removes invariant expressions from
loops, collapses arithmetic operations into 3-operand instructions, and
places local variables in registers.
When debugging Compaq C programs, use the
|
||||
[NO]INLINE (VAX ONLY) | Provides automatic inline expansion of functions that yield optimized code when they are expanded. Whether or not a function is a candidate for inline expansion is based on its size, the number of times it is called, and whether it conforms to the rules specified in Section 5.4.8. | ||||
[NO]INLINE[= keyword] (ALPHA ONLY) |
Provides inline expansion of functions that yield optimized code when
they are expanded. Whether or not a function is a candidate for inline
expansion is based on its size, the number of times it is called, and
whether it conforms to the rules specified in Section 5.4.8. On
OpenVMS Alpha systems, you can specify one of the following
keywords to control inlining:
|
||||
||
|
|||||
||
|
|||||
||
|
|||||
||
The #pragma noinline preprocessor directive can be used to prevent inlining of any particular functions under the compiler-selected forms of inlining (SPEED, SIZE, or AUTOMATIC). The #pragma inline preprocessor directive (or the __inline storage-class modifier for OpenVMS Alpha systems) can be used to request inlining of specific functions under the AUTOMATIC or MANUAL forms of inlining. |
|||||
[NO]INTRINSICS (ALPHA ONLY) |
Controls whether or not certain functions are handled as intrinsic
functions without explicitly enabling each of them as an intrinsic
through the
#pragma intrinsic
preprocessor directive. An intrinsic function is an apparent function
call that could be handled as an actual call to the specified function,
or could be handled by the compiler in a different manner. By treating
the function as an intrinsic, the compiler can often generate faster
code. (Contrast with a built-in function, which is an apparent function
call that is never handled as an actual function call. There is never a
function with the specified name.)
See Section 5.4.9 for a list of functions that can be handled as intrinsics. The /OPTIMZE=INTRINSICS qualifier works together with /OPTIMIZE=LEVEL=n and some other qualifiers to determine how intrinsics are handled:
The default is /OPTIMIZE=INTRINSICS, which turns on this handling. To turn it off, specify /NOOPTIMIZE or /OPTIMIZE=NOINTRINSICS, or specify an optimization level less than 4. |
||||
LEVEL= n (ALPHA ONLY) |
Selects the level of optimization. Specify an integer from 0 (no
optimization) to 4 (full optimization):
|
||||
||
|
|||||
||
|
|||||
||
|
|||||
||
|
|||||
[NO]PIPELINE (ALPHA ONLY) |
Controls Activation of the software pipelining optimization.
The software pipelining optimization applies instruction scheduling to certain innermost loops, allowing instructions within a loop to "wrap around" and execute in a different iteration of the loop. This can reduce the impact of long-latency operations, resulting in faster loop execution. Software pipelining can be more effective when you combine /OPTIMIZE=PIPELINE with the appropriate /OPTIMIZE=TUNE keyword for the target Alpha processor generation. Software pipelining also enables the prefetching of data to reduce the impact of cache misses. Software pipelining is a subset of the optimizations activated by optimization level 5. To determine whether using /OPTIMIZE=PIPELINE benefits your particular program, you should time program execution for the same program (or subprogram) compiled with and without software pipelining. For programs containing loops that exhaust available registers, longer execution times can result with optimization level 5, requiring use of /OPTIMIZE=UNROLL= n to limit loop unrolling. |
||||
UNROLL= n (ALPHA ONLY) | Controls loop unrolling done by the optimizer. UNROLL= n means to unroll loop bodies n times, where n is between 0 and 16. UNROLL=0 means the optimizer will use its own default unroll amount. Specify UNROLL only at level 3 or higher. | ||||
TUNE= keyword (ALPHA ONLY) |
Selects processor-specific instruction tuning for implementations of the
Alpha architecture. Regardless of the setting of the
/OPTIMIZE=TUNE flag, the generated code will run correctly on all
implementations of the
Alpha architecture. Tuning for a specific implementation can
provide improvements in run-time performance. Code tuned for a specific
target might run slower on another target.
You can specify one of the following keywords: |
||||
||
|
|||||
||
|
|||||
||
|
|||||
||
|
|||||
||
|
|||||
||
|
|||||
||
|
For OpenVMS VAX systems the default, /OPTIMIZE, is equivalent to /OPTIMIZE=(DISJOINT,INLINE).
Previous | Next | Contents | Index |
|