EPCF90(1) EPC (6 November 1996) EPCF90(1) NAME epcf90 - Edinburgh Portable Compilers' Fortran 90 compiler SYNOPSIS eeeeppppccccffff99990000 [----1111] [----111133332222] [----77772222] [----aaaarrrrcccchhhh===={ggggeeeennnneeeerrrriiiicccc|nnnnaaaattttiiiivvvveeee|mmmmiiiippppssss1111|mmmmiiiippppssss2222|RRRR3333000000000000|RRRR4444000000000000}] [----aaaauuuuttttoooo] [----bbbbdddd,,,,_p_r_o_g_n_a_m_e] [----cccc] [----cccceeeerrrrrrrrssss] [----ccccllll,,,,_f_i_l_e] [----ccccmmmm] [----CCCC] [----CCCC99990000] [----CCCCAAAA] [----CCCCBBBB] [----CCCCPPPP] [----CCCCSSSS] [----CCCCUUUU] [----CCCCVVVV] [----dddd[_n]] [----ddddaaaalllliiiiggggnnnn] [----ddddrrrryyyyrrrruuuunnnn] [----DDDD_n_a_m_e[_=_d_e_f]] [----DDDDDDDD] [----DDDDXXXX] [----DDDDYYYY] [----eeee] [----EEEE] [----ffffaaaasssstttt] [----FFFF] [----FFFF77777777] [----FFFFIIII] [----FFFFRRRR] [----gggg] [----GGGG[{1111|2222}]] [----hhhheeeellllpppp] [----iiii2222] [----IIII2222] [----iiii4444] [----IIII4444] [----iiiicccc] [----IIII_d_i_r] [----KKKK ppppiiiicccc] [----KKKK PPPPIIIICCCC] [----mmmmiiiippppssss2222] [----nnnnaaaattttiiiivvvveeee] [----nnnnbbbbssss] [----nnnnooooddddaaaalllliiiiggggnnnn] [----nnnnuuuussss[,_f_i_l_e]] [----oooo _f_i_l_e] [----oooonnnneeeettttrrrriiiipppp] [----OOOO[1111][3333][5555]] [----pppp] [----qqqq] [----QQQQ{ffff|aaaassss|ccccrrrrtttt|cccccccc|lllldddd}_p_a_t_h] [----QQQQiiiinnnnssssttttaaaallllllll _p_r_e_f_i_x] [----QQQQooooppppttttiiiioooonnnn {aaaassss|cccccccc|ccccpppppppp|lllldddd} _o_p_t_i_o_n] [----QQQQppppaaaatttthhhh _d_i_r] [----rrrr8888] [----SSSS] [----tttteeeemmmmpppp====_d_i_r] [----ttttiiiimmmmeeee] [----uuuu] [----UUUU_n_a_m_e] [----vvvv] [----VVVVaaaaxxxxlllliiiibbbb] [----wwww] [----wwww99990000] [----WWWWBBBB] [----yyyy] [_f_i_l_e_s] {..} braces enclose alternatives separated by `|'. [..] brackets indi- cate an optional item. The effect of the options is described below. If no options are included the basic compilation sequence outlined below is followed. _f_i_l_e_s is a list of the Fortran source files to be compiled, and any previously compiled object files or C or assembler source files which are to be included with them. DESCRIPTION eeeeppppccccffff99990000 is the EPC Fortran 90 compiler, which translates programs writ- ten in the Fortran 90 programming language into executable load modules or relocatable binary programs for subsequent linking by lllldddd((((1111)))). In addition to implementing the ANSI Standard Fortran 90 language, eeeeppppccccffff99990000 supports commonly used Fortran 77 VAX extensions, Sun extensions, and many others. In addition to the many options (detailed below), eeeeppppccccffff99990000 accepts several types of file. In detail, eeeeppppccccffff99990000 recognizes the following suf- fixes attached to files: _._a Archive library _._c C source file _._F Fortran source file with C preprocessor directives _._f Fortran source file _._f_o_r Fortran source file _._f_v Fortran source file _._f_t_n Fortran source file _._f_9_0 Fortran 90 source file _._i C source file output by the C preprocessor _._o Object file _._S Assembler source file with C preprocessor directives PPPPaaaaggggeeee 1111 Reliant UNIX 5.43 PPPPrrrriiiinnnntttteeeedddd OOOOccccttttoooobbbbeeeerrrr 11115555,,,, 1111999999998888 EPCF90(1) EPC (6 November 1996) EPCF90(1) _._s Assembler source file By default, Fortran source files ending with .F, .f, .for, .fv or .ftn are assumed to be in fixed format, and source files ending with suffix .f90 are assumed to be in free format. These defaults may be overrid- den by the compiler options ----FFFFRRRR and ----FFFFIIII. In the basic compilation sequence, which will be followed if no com- piler options are specified, the compiler checks for errors in the source file in three passes. In the first pass, any syntax errors in the source are identified and semantic analysis of most non-executable statements is performed. In the second pass, semantic analysis of exe- cutable and residual non-executable statements is performed. In the third pass (storage allocation), equivalence errors are detected. An error detected in any pass does not stop that pass from being com- pleted, but will inhibit execution of the succeeding passes. The com- piler outputs any error, warning or comment messages to standard error, _s_t_d_e_r_r. If C source files are to be compiled or if any of the options ----DDDD,,,, ----EEEE,,,, ----FFFF,,,, ----IIII or ----UUUU are to be used, a C compiler must be available on your system. By default this is assumed to be the EPC ANSI C compiler with pathname /opt/epc/ecc/bin/ecc If this is not the pathname of the C compiler present on your system then the option ----QQQQcccccccc_p_a_t_h must be used to specify the pathname. For example: -Qcc/usr/users/mydir/cc Files with a suffix of .F are first processed by the C preprocessor into a file in the current directory. The output file from the C preprocessor has the same name as the source file but with the .F suf- fix substituted by .f. This file is then normally passed to the com- piler for compilation, and if the compilation is successful the inter- mediate output file is deleted. If no errors are found, the compiler generates an object file for each Fortran 90 source file specified to the compiler. For each C source file eeeeppppccccffff99990000 invokes the C compiler, and for each assembler file it invokes the assembler. The compiled object files are then passed to the linker lllldddd((((1111)))), which links them, together with any existing object files on the command line and any object files required to satisfy references to previously compiled modules, to produce the executable program. In addition, unless the option ----iiiicccc was specified, the compilation system generates files related to the EPC Fortran Compilation Environment. This enables PPPPaaaaggggeeee 2222 Reliant UNIX 5.43 PPPPrrrriiiinnnntttteeeedddd OOOOccccttttoooobbbbeeeerrrr 11115555,,,, 1111999999998888 EPCF90(1) EPC (6 November 1996) EPCF90(1) any modules in the program to be made available for use by subsequent programs. The executable program is loaded into the file called a.out. The completed executable program is now ready to be run. COMPILER OPTIONS There are many compiler options available, some of which are used if you do not want the usual compilation sequence, while others add extra facilities. The compiler passes to the linker any options which it does not recognize. Note that combining compiler options is not permitted: they must be given separately; e.g. ----wwww ----SSSS cannot be specified as ----wwwwSSSS. ----1111 _o_r -oooonnnneeeettttrrrriiiipppp Compiles DO loops to be performed at least once if reached (by default Fortran 90 DO loops are not performed at all if the upper limit is smaller than the lower limit). ----111133332222 _o_r -eeee Allows fixed form source lines to contain up to 132 characters. ----77772222 Issues a warning message if a non-comment statement in a fixed form source file extends into column 73 or beyond. By default, text in this region will be ignored unless option ----111133332222 or ----eeee is selected. ----aaaarrrrcccchhhh===={ggggeeeennnneeeerrrriiiicccc|nnnnaaaattttiiiivvvveeee|mmmmiiiippppssss1111|mmmmiiiippppssss2222|RRRR3333000000000000|RRRR4444000000000000} Instructs the compiler to generate code for the nominated archi- tecture variant. By default the compiler will generate instruc- tions that are available on all MIPS architectures; this is the effect of ----aaaarrrrcccchhhh====ggggeeeennnneeeerrrriiiicccc. The options ----aaaarrrrcccchhhh====mmmmiiiippppssss1111 and ----aaaarrrrcccchhhh====RRRR3333000000000000 are synonyms for ----aaaarrrrcccchhhh====ggggeeeennnneeeerrrriiiicccc. If ----aaaarrrrcccchhhh====mmmmiiiippppssss2222 is specified the compiler will generate code using the extended R4000 instruction set; such code will _n_o_t run on R2000 or R3000 processors. The option ----aaaarrrrcccchhhh====RRRR4444000000000000 is a synonym for ----aaaarrrrcccchhhh====mmmmiiiippppssss2222. The option ----aaaarrrrcccchhhh====nnnnaaaattttiiiivvvveeee directs the compiler to generate code using the instruction set available on the compile-time hardware. It is equivalent to ----aaaarrrrcccchhhh====mmmmiiiippppssss2222 if the compiler is invoked on hardware that supports the extended R4000 instruction set; on all other platforms it is equivalent to ----aaaarrrrcccchhhh====ggggeeeennnneeeerrrriiiicccc. ----aaaauuuuttttoooo Specifies that the run-time stack rather than static storage is to be used to hold locally declared variables. (Variables defined in a procedure are otherwise allocated to the stack _o_n_l_y if they appear in an AUTOMATIC statement, or if the procedure is recursive and the variables do not have the SAVE or ALLOCATABLE attributes.) ----bbbbdddd,_p_r_o_g_n_a_m_e PPPPaaaaggggeeee 3333 Reliant UNIX 5.43 PPPPrrrriiiinnnntttteeeedddd OOOOccccttttoooobbbbeeeerrrr 11115555,,,, 1111999999998888 EPCF90(1) EPC (6 November 1996) EPCF90(1) Invokes the EPC binder to generate the list of objects required to construct a complete program, given the name of the main pro- gram unit (note, _n_o_t the name of the file containing it). The list generated is then passed to the linker, lllldddd((((1111)))). ----cccc Compiles but does not create an executable program. The compiled object file is put in a file with the suffix .o and is not passed to the linker. This option is useful for building up pro- grams from several separately compiled units, perhaps in dif- ferent languages. ----cccceeeerrrrrrrrssss Causes error and warning messages to be generated in a terse format, similar to that produced by the standard USL ANSI C com- piler cc: _"_f_i_l_e_", line _n_o : _e_r_r_o_r _m_e_s_s_a_g_e ----ccccllll,,,,_f_i_l_e Specifies a program unit catalog list, which is a text file giv- ing the names of the program unit catalogs to be searched for modules referenced in the program in USE statements. ----ccccmmmm Suppresses all comment messages. ----CCCC Equivalent to: ----CCCCAAAA -CCCCBBBB -CCCCPPPP -CCCCSSSS -CCCCUUUU -CCCCVVVV. ----CCCC99990000 Links in an alternative I/O library which supports mixed input and output with C on the standard streams. ----CCCCAAAA (Should be used in conjunction with ----dddd_n.) Causes a check that, at run-time, references to pointers and to allocatable arrays are not NIL. See Section 1.3.1 of the EPC Fortran 90 User's Guide for further details. ----CCCCBBBB (Should be used in conjunction with ----dddd_n.) Causes a check that, at run-time, subscript values are within array bounds. It also checks that character substring references are within bounds. See Section 1.3.2 of the EPC Fortran 90 User's Guide for further details. ----CCCCPPPP (Should be used in conjunction with ----dddd_n.) Causes a run-time error to be generated if a reference is made to an optional dummy argument that is not present. See Section 1.3.5 of the EPC Fortran 90 User's Guide for further details. ----CCCCSSSS (Should be used in conjunction with ----dddd_n.) Causes a check that, at run-time, the shapes of array arguments to intrinsic pro- cedures are consistent. See Section 6.4 of the EPC Fortran 90 User's Guide for details. ----CCCCUUUU (Should be used in conjunction with ----dddd_n.) Causes an error at PPPPaaaaggggeeee 4444 Reliant UNIX 5.43 PPPPrrrriiiinnnntttteeeedddd OOOOccccttttoooobbbbeeeerrrr 11115555,,,, 1111999999998888 EPCF90(1) EPC (6 November 1996) EPCF90(1) run-time if variables are used before they are assigned a value. See Section 1.3.3 of the EPC Fortran 90 User's Guide for further details. ----CCCCVVVV (Should be used in conjunction with ----dddd_n.) On entry to a subpro- gram, tests the correspondence between the actual arguments passed and the dummy arguments expected. Both calling and called code must be compiled with ----CCCCVVVV for the checks to be effective. See Section 1.3.4 of the EPC Fortran 90 User's Guide for further details. ----dddd[_n] Generates extra information needed to produce a list of current variables in a diagnostic report. See Chapter 7 of the EPC For- tran 90 User's Guide (on run-time diagnostics) for further details. Diagnostic reports are generated by the following: - input/output errors - invalid reference to a pointer or allocatable array (if ----CCCCAAAA option selected) - subscript out of bounds (if ----CCCCBBBB option selected) - invalid reference to an optional dummy argument that is not present (if ----CCCCPPPP option selected) - invalid array argument to an intrinsic procedure (if ----CCCCSSSS option selected) - use of unassigned variables (if ----CCCCUUUU option selected) - argument mismatch (if ----CCCCVVVV option selected) - invalid assigned labels - call to the abort routine (see Chapter 9 of the EPC Fortran 90 User's Guide) - certain mathematical errors (see Section 6.5 of the EPC For- tran 90 User's Guide) - errors reported by intrinsic procedures - hardware detected errors _n=0 (or _n omitted) displays only the procedure name and the number of the line at which the failure occurred. _n=1 reports scalar variables local to program units currently active. _n=2 reports local and COMMON scalars _n>2 reports the first _n elements of local and COMMON arrays and all scalars. ----ddddaaaalllliiiiggggnnnn It is possible, by the effects of COMMON or EQUIVALENCE state- ments, for a variable of type double precision to be aligned on a single word boundary rather than a double word boundary. The compiler will report this situation by issuing the warning: "Alignment of [_v_a_r_i_a_b_l_e _a_n_d _l_o_c_a_t_i_o_n] may cause performance degradation" By default the compiler will assume that any double precision PPPPaaaaggggeeee 5555 Reliant UNIX 5.43 PPPPrrrriiiinnnntttteeeedddd OOOOccccttttoooobbbbeeeerrrr 11115555,,,, 1111999999998888 EPCF90(1) EPC (6 November 1996) EPCF90(1) variable that is either a dummy argument or a pointer target will be aligned on a single word boundary. The ----ddddaaaalllliiiiggggnnnn option instructs the compiler to assume that such double precision variables _w_i_l_l be aligned on double word boundaries. ----ddddrrrryyyyrrrruuuunnnn Displays, but does not execute, the verbose form of compiler and linker command lines. ----DDDD_n_a_m_e_=_d_e_f _o_r ----DDDD_n_a_m_e Defines _n_a_m_e to the C preprocessor as if by a #define directive. If no definition is specified then _n_a_m_e will be defined with the value `1'. ----DDDDDDDD Compiles fixed form lines with a DDDD or a dddd in column 1; if this option is not set these lines are treated as comments. ----DDDDXXXX Compiles fixed form lines with an XXXX (_n_o_t an xxxx) in column 1; if this option is not set these lines are treated as comments. ----DDDDYYYY Compiles fixed form lines with a YYYY (_n_o_t a yyyy) in column 1; if this option is not set these lines are treated as comments. ----eeee _o_r ----111133332222 Allows fixed form source lines to contain up to 132 characters. ----EEEE Passes .c, .F, and .S files through the C preprocessor only. In the absence of a ----oooo option, the output is written to standard output. The source is not compiled or loaded. ----ffffaaaasssstttt This option is provided for convenience. It is a synonym for ----OOOO111133335555 ----ddddaaaalllliiiiggggnnnn ----aaaarrrrcccchhhh====nnnnaaaattttiiiivvvveeee These options may be overridden by also specifying any of the following, as appropriate, with ----ffffaaaasssstttt: ----nnnnooooddddaaaalllliiiiggggnnnn ----OOOO[1111][3333][5555] ----aaaarrrrcccchhhh===={ggggeeeennnneeeerrrriiiicccc|mmmmiiiippppssss2222} The meanings of ----OOOO[[[[1111]]]][[[[3333]]]][[[[5555]]]] and ----nnnnooooddddaaaalllliiiiggggnnnn are explained below. ----FFFF Passes .c, .F, and .S files through the C preprocessor and the output is saved in a corresponding .i, .f, or .s file. This file is not compiled. The effect of epcf90 -F source.F source.f is to compile and save a copy of the preprocessed file in source.f. PPPPaaaaggggeeee 6666 Reliant UNIX 5.43 PPPPrrrriiiinnnntttteeeedddd OOOOccccttttoooobbbbeeeerrrr 11115555,,,, 1111999999998888 EPCF90(1) EPC (6 November 1996) EPCF90(1) ----FFFF77777777 Links in the SGI Fortran 77 library. ----FFFF77777777 automatically invokes ----CCCC99990000 (see above). ----FFFFIIII Specifies that all the source code is in fixed format; this is the default except for files ending with the suffix .f90. ----FFFFRRRR Specifies that all the source code is in Fortran 90 free format; this is the default for files ending with the suffix .f90. ----gggg Generates the additional symbol table information required when using the interactive debugger _e_d_b. See Chapter 8 of the EPC Fortran 90 User's Guide for further details. ----GGGG Writes a listing of the source file to standard output, includ- ing any error or warning messages. The errors and warnings are also output to standard error, _s_t_d_e_r_r. ----GGGG1111 Prints a listing of the source file with INCLUDE files expanded. ----GGGG2222 Prints a listing of the source file showing code movement by the optimizer. This is only valid if the optimization option ----OOOO (any level) is also selected. ----hhhheeeellllpppp Displays the options recognized and their usage. ----iiii2222 Specifies that all quantities of integer type and unspecified kind will occupy two bytes. All quantities of logical type and unspecified kind will also occupy two bytes. All logical constants and all small integer constants occupy two bytes. ----IIII2222 Same as ----iiii2222. ----iiii4444 All integer and logical types of unspecified kind will occupy four bytes; this is the default. ----IIII4444 Same as ----iiii4444. ----iiiicccc Specifies an independent compilation, i.e. the EPC Fortran Com- pilation Environment is not accessed or updated. A MODULE or USE statement in the source will cause the compiler to generate an error. ----IIII_d_i_r The C preprocessor searches for #include files whose names do not begin with `/' first in the directory of the source file, then in the directories identified via the ----IIII option, then in the current working directory and finally in /usr/include. This option may be used more than once to specify additional direc- tories to search. In addition to use with the C preprocessor, ----IIII_d_i_r can be used PPPPaaaaggggeeee 7777 Reliant UNIX 5.43 PPPPrrrriiiinnnntttteeeedddd OOOOccccttttoooobbbbeeeerrrr 11115555,,,, 1111999999998888 EPCF90(1) EPC (6 November 1996) EPCF90(1) with the EPC Fortran 90 compiler. Files included by the Fortran INCLUDE statement are normally referenced in the same directory as the file being compiled. ----IIII_d_i_r may be used to extend the search for an INCLUDE file into other directories. ----KKKK ppppiiiicccc Generates code suitable to call position-independent code (default). See also ----KKKK PPPPIIIICCCC. ----KKKK PPPPIIIICCCC Generates position-independent code. This is normally used to create shared libraries. ----mmmmiiiippppssss2222 This option is a synonym for ----aaaarrrrcccchhhh====mmmmiiiippppssss2222. Code is generated using the extended R4000 instruction set. Such code will _n_o_t run on R2000 or R3000 processors. ----nnnnaaaattttiiiivvvveeee This option is a synonym for ----aaaarrrrcccchhhh====nnnnaaaattttiiiivvvveeee. It instructs the compiler to generate code using the instruction set of the compile-time hardware. By default the compiler will generate instructions that are available on all MIPS architectures, but if the compile-time platform supports the extended R4000 instruction set, the effect of ----nnnnaaaattttiiiivvvveeee will be the same as ----mmmmiiiippppssss2222 (see above). ----nnnnbbbbssss Treats backslash (\) as a normal graphic character. For compatibility with C usage, the backslash (\) is normally allowed in EPC Fortran 90 as an escape character. It denotes that the following character in the string has a significance which is not normally associated with the character. The effect is to ignore the backslash character, and either substitute an alternative value for the following character or to interpret the character as a quoted value. The escape characters recog- nized, and their effect, are described in the table below. Escape Char Effect \n newline \t horizontal tab \v vertical tab \b backspace \f form feed \0 null \' apostrophe (does not terminate a string) \" double quote (does not terminate a string) \\ \ \_x _x, where _x is any other character PPPPaaaaggggeeee 8888 Reliant UNIX 5.43 PPPPrrrriiiinnnntttteeeedddd OOOOccccttttoooobbbbeeeerrrr 11115555,,,, 1111999999998888 EPCF90(1) EPC (6 November 1996) EPCF90(1) Thus: 'ISN\'T' is a valid string. The \ is not counted in the length of the string. The ----nnnnbbbbssss option specifies that backslash is to be regarded sim- ply as a graphic character, not an escape character. This may be necessary when transferring programs from non-UNIX environ- ments, for example VAX/VMS. ----nnnnooooddddaaaalllliiiiggggnnnn This option is the inverse of ----ddddaaaalllliiiiggggnnnn and reaffirms the compiler's default which is to assume that a double precision variable which is either a dummy argument or a target of a pointer is not necessarily aligned on a double word boundary. See ----ddddaaaalllliiiiggggnnnn for further details. ----nnnnuuuussss _o_r ----nnnnuuuussss,_f_i_l_e Instructs the compiler _n_o_t to append an underscore character (_) to each subprogram name which it records in the object file. If this option is not selected, the compiler follows the normal practice of UNIX Fortran compilers, which is to append under- score characters. This option may be required when interfacing Fortran routines to existing C code. If _f_i_l_e is supplied, it should contain a list of subprogram names. In this case, only these subprogram names are recorded in the object file without an underscore appended; all other names are recorded with an underscore. _BBBB_eeee_wwww_aaaa_rrrr_eeee: use of this option will effectively render inaccessible the VAX/VMS utility and 3F library procedures unless an under- score is explicitly appended to each library procedure name in the Fortran source. The VAX/VMS utility and 3F library pro- cedures are described in Chapter 9 of the EPC Fortran 90 User's Guide. ----oooo _f_i_l_e Nominates an alternative name for the output file. Normally the output file will be the executable produced by the linker; this option would be used to override the default name of a.out. The option may also be used to specify the output file when using the ----EEEE option, but _f_i_l_e must have the appropriate suffix for the file produced. ----oooonnnneeeettttrrrriiiipppp _o_r ----1111 Compiles DO loops to be performed at least once if reached (by default Fortran 90 DO loops are not performed at all if the upper limit is smaller than the lower limit). ----OOOO[1111][3333][5555] PPPPaaaaggggeeee 9999 Reliant UNIX 5.43 PPPPrrrriiiinnnntttteeeedddd OOOOccccttttoooobbbbeeeerrrr 11115555,,,, 1111999999998888 EPCF90(1) EPC (6 November 1996) EPCF90(1) Optimizes the generated code so that it executes faster but at the cost of some increase in compile time. The ----OOOO option is _i_n_c_o_m_p_a_t_i_b_l_e with the diagnostic options (----CCCC, ----CCCCAAAA, ----CCCCBBBB, ----CCCCPPPP, ---- CCCCSSSS, ----CCCCUUUU, ----CCCCVVVV, ----gggg and ----dddd), which provide run-time development facilities such as array-bound and unassigned variable checking. The optimizations fall into four groups, corresponding to the options ----OOOO, ----OOOO1111, ----OOOO3333 and ----OOOO5555. The ----OOOO option includes a number of `primary' optimizations such as - constant folding, where expressions are computed at compile time when possible. - constant propagation, where such computed expressions are propagated to subsequent expressions and allow them in turn to be folded. - common subexpression elimination, where a subexpression com- mon to several statements is computed at run-time only once. - code hoisting, where invariant code in a loop is `hoisted' out of the loop. - dead code elimination, where code that can never be executed is deleted, thus reducing the size of the executable file. - strength reduction, where an expensive operation such as a multiply in a loop is replaced by an equivalent but cheaper operation such as an add. - register allocation, where variables are selected to be retained in a register, depending on where and how often they are referenced in the current region of code. When ----OOOO1111 is specified, optimizations are performed on the assumption that there is non-interference between actual argu- ments and common block variables. This level of optimization is inappropriate where, for example, a variable passed as an argu- ment is also in a common block declared in the subprogram, so that the subprogram could access the variable in two ways under different names. When ----OOOO3333 is specified, division by a real constant may be transformed into a multiply operation using its reciprocal, and references to certain transformational intrinsic procedures may be in-lined, to give faster execution. These optimizations can give different results in numerically sensitive cases. When ----OOOO5555 is specified, global instruction scheduling of the gen- erated code is to be carried out. This involves the rearrange- ment of the code order and register allocation, to improve usage of the processor instruction pipeline. Instructions may be moved between basic blocks or be executed speculatively during pipeline stall periods. Selecting any optimization automatically includes the ----OOOO PPPPaaaaggggeeee 11110000 Reliant UNIX 5.43 PPPPrrrriiiinnnntttteeeedddd OOOOccccttttoooobbbbeeeerrrr 11115555,,,, 1111999999998888 EPCF90(1) EPC (6 November 1996) EPCF90(1) optimizations. Combinations of the above optimizations can be specified by combining the corresponding digits, e.g. ----OOOO11115555. See also ----ffffaaaasssstttt. ----pppp Compiles code for profiling the performance of the executable program with pppprrrrooooffff((((1111)))). If the object files are being linked, a profiled version of the Fortran library is searched. When the executable program is run, the file mon.out is created in the current directory. An execution profile can then be generated using pppprrrrooooffff. ----qqqq Suppresses compiler output to standard error, _s_t_d_e_r_r. When ----qqqq is specified in conjunction with ----bbbbdddd (see above) then only messages associated with fatal errors will be output to _s_t_d_e_r_r by the EPC binder. ----QQQQ_x_p_a_t_h Uses an alternative version of utility _x found in _p_a_t_h. _p_a_t_h must be the absolute pathname of the utility _x. _x must be one of: ffff for the EPC Fortran 90 compiler aaaassss for the assembler ccccrrrrtttt for the crt startup routine cccccccc for the C driver lllldddd for the linker For example: epcf90 -c -Qf$home/bin/mycompiler t.f would compile t.f using the EPC Fortran 90 compiler in the file $home/bin/mycompiler. ----QQQQiiiinnnnssssttttaaaallllllll _p_r_e_f_i_x The EPC Fortran 90 compiler release is installed in the direc- tory opt/epc, normally under the root directory, /. If the release was not installed under / then the name of the host directory, _p_r_e_f_i_x, must be specified by the ----QQQQiiiinnnnssssttttaaaallllllll option. For example, by specifying the prefix as $HOME, the complete installation can be held within the user's home directory. ----QQQQooooppppttttiiiioooonnnn _u_t_i_l_i_t_y _o_p_t_i_o_n Passes the option _o_p_t_i_o_n to the utility _u_t_i_l_i_t_y. _u_t_i_l_i_t_y may be one of aaaassss ccccpppppppp cccccccc lllldddd ----QQQQppppaaaatttthhhh _d_i_r Inserts the directory _d_i_r at the front of the driver's search PPPPaaaaggggeeee 11111111 Reliant UNIX 5.43 PPPPrrrriiiinnnntttteeeedddd OOOOccccttttoooobbbbeeeerrrr 11115555,,,, 1111999999998888 EPCF90(1) EPC (6 November 1996) EPCF90(1) path; this directory will be searched first for all the compila- tion tools. ----rrrr8888 Treats all floating point variables, constants, functions and intrinsics as double precision, and all complex variables, con- stants, functions and intrinsics as double complex. ----SSSS Prints a pseudo assembly listing on standard output, _s_t_d_o_u_t. ----tttteeeemmmmpppp====_d_i_r Nominates an alternative directory for temporary files created by the driver. ----ttttiiiimmmmeeee Reports execution times for the various compilation stages. ----uuuu Makes the default type of a variable undefined rather than using the default Fortran rules. ----UUUU_n_a_m_e Removes any initial definition of _n_a_m_e, where _n_a_m_e is a reserved symbol predefined by the C preprocessor. ----vvvv Outputs verbose form of compiler and linker command lines. ----VVVVaaaaxxxxlllliiiibbbb Links in EPC's VAX utility library in place of the 3F library. See Chapter 9 of the EPC Fortran 90 User's Guide for further details. ----wwww Suppresses all warning messages. ----wwww99990000 Suppresses warning messages about non-standard Fortran 90 features used. ----WWWWBBBB On a compile-time bound check violation, issues a warning instead of an error. (This is to accommodate old Fortran code, in which array bounds of dummy arguments were frequently declared as 1.) ----yyyy This option can be used to check the syntax of a source file without compiling it. Any errors found are output in the normal way, but an object file is not produced. ENVIRONMENT The compiler makes use of temporary files during the compilation of a source file; these temporary files are usually created in the direc- tory /var/tmp. Direct control over the location of the temporary files can be exercised by setting the environment variable TTTTMMMMPPPPDDDDIIIIRRRR to the appropriate directory path. See mmmmaaaannnn tttteeeemmmmppppnnnnaaaammmm for further details. FILES a.out executable output file PPPPaaaaggggeeee 11112222 Reliant UNIX 5.43 PPPPrrrriiiinnnntttteeeedddd OOOOccccttttoooobbbbeeeerrrr 11115555,,,, 1111999999998888 EPCF90(1) EPC (6 November 1996) EPCF90(1) _f_i_l_e_.a library of object files _f_i_l_e_.c C source file _f_i_l_e_.f EPC Fortran-90 fixed format source file _f_i_l_e_.F EPC Fortran-90 fixed format source file for C preprocessor _f_i_l_e_.for EPC Fortran-90 fixed format source file _f_i_l_e_.fv EPC Fortran-90 fixed format source file _f_i_l_e_.ftn EPC Fortran-90 fixed format source file _f_i_l_e_.f90 EPC Fortran-90 free format source file _f_i_l_e_.o object file _f_i_l_e_.s assembler source file _f_i_l_e_.S assembler source for C preprocessor _f_i_l_e_.d EPC Fortran-90 module dictionary file _f_i_l_e_.pc EPC Fortran-90 program unit catalog file _f_i_l_e_.pcl EPC Fortran-90 program unit catalog list file /opt/epc/epcf90/epctools/as assembler /opt/epc/epcf90/epctools/libm.a archive maths library /opt/epc/epcf90/epctools/crt1.o start-up routine /opt/epc/epcf90/epctools/crti.o start-up routine /opt/epc/epcf90/epctools/crtn.o start-up routine /opt/epc/epcf90/epctools/mcrt1.o profiling start-up routine /opt/epc/epcf90/epctools/values-Xt.o ANSI conformance module /opt/epc/epcf90/epctools/values-Xc.o ANSI conformance module /opt/epc/epcf90/epctools/values-Xa.o ANSI conformance module /usr/include directory searched by the EPC Fortran-90 INCLUDE statement /usr/include/epcf90 3f include file and f90_kinds source file mon.out file produced for analysis by pppprrrrooooffff((((1111)))) epcf90 the EPC Fortran-90 driver epcf90compiler the EPC Fortran-90 compiler epcfcem the EPC Fortran-90 compilation environment manager libIEPCF90.a the EPC Fortran-90 I/O run-time library libKEPCF90.a the EPC Fortran-90 array maths run-time library libMEPCF90.a the EPC Fortran-90 maths run-time library libUEPCF90.a the EPC Fortran-90 utility run-time library libVEPCF90.a the EPC Fortran-90 Vax utility run-time library libCEPCF90.a the EPC Fortran-90 ----CCCC99990000 I/O run-time library libp/libIEPCF90.a the EPC Fortran-90 profiled I/O run-time library libp/libKEPCF90.a the EPC Fortran-90 profiled array maths run-time library libp/libMEPCF90.a the EPC Fortran-90 profiled maths run-time library libp/libUEPCF90.a the EPC Fortran-90 profiled utility run-time library PPPPaaaaggggeeee 11113333 Reliant UNIX 5.43 PPPPrrrriiiinnnntttteeeedddd OOOOccccttttoooobbbbeeeerrrr 11115555,,,, 1111999999998888 EPCF90(1) EPC (6 November 1996) EPCF90(1) libp/libVEPCF90.a the EPC Fortran-90 profiled VAX utility run-time library libp/libCEPCF90.a the EPC Fortran-90 profiled ----CCCC99990000 I/O run-time library SEE ALSO _E_P_C _F_o_r_t_r_a_n _9_0 _U_s_e_r_'_s _G_u_i_d_e, (EPC, 1996); _F_o_r_t_r_a_n _9_0 _H_a_n_d_b_o_o_k (Inter- text, 1992) DIAGNOSTICS The diagnostics generated by the EPC Fortran 90 compiler are intended to be self-explanatory. PPPPaaaaggggeeee 11114444 Reliant UNIX 5.43 PPPPrrrriiiinnnntttteeeedddd OOOOccccttttoooobbbbeeeerrrr 11115555,,,, 1111999999998888