User Commands F95(1) NAME f95, f90 - Fortran 95 compiler SYNOPSIS May be invoked by either f95 or f90 commands; they are equivalent. f95 | f90 [ -a ] [ -aligncommon[=_a] ] [ -ansi ] [ -autopar ] [ -B_x ] [ -C ] [ -c ] [ -cg89 ] [ -cg92 ] [ -copyargs ] [ -D_n_m[=_d_e_f] ] [ -dalign ] [ -db ] [ -dbl_align_all[=yes|no] ] [ -depend ] [ -dryrun ] [ -d[y|n] ] [ -e ] [ -erroff=_t_a_g_l_i_s_t ] [ -errtags[=yes|no] ] [ -explicitpar ] [ -ext_names=_e ] [ -F ] [ -f ] [ -fast ] [ -fixed ] [ -flags ] [ -fnonstd ] [ -fns=_y_e_s|_n_o ] [ -fpover=_y_e_s|_n_o ] [ -fpp ] [ -free ] [ -fround=_r ] [ -fsimple[=_n] ] [ -ftrap=_t ] [ -G ] [ -g ] [ -h_n_m ] [ -help ] [ -I_d_i_r ] [ -inline=_r_l ] [ -Kpic ] [ -KPIC ] [ -L_d_i_r ] [ -libmil ] [ -loopinfo ] [ -M _d_i_r ] [ -mp=_x ] [ -mt ] [ -native ] [ -noautopar ] [ -nodepend ] [ -noexplicitpar ] [ -nolib ] [ -nolibmil ] [ -noqueue ] [ -noreduction ] [ -norunpath ] [ -O[_n] ] [ -o _n_m ] [ -onetrip ] [ -openmp ] [ -p ] [ -pad[=_p] ] [ -parallel] [ -pg ] [ -pic ] [ -PIC ] [ -Qoption _p_r _l_s ] [ -qp ] [ -R _l_i_s_t ] [ -r8const ] [ -reduction ] [ -S ] [ -s ] [ -sb ] [ -sbfast ] [ -silent ] [ -stackvar ] [ -stop_status=_y_e_s|_n_o ] [ -temp=_d_i_r ] [ -time ] [ -U ] [ -U_n_a_m_e ] [ -u ] [ -unroll=_n ] [ -V ] [ -v ] [ -vpara ] [ -w ] [ -xa ] [ -xarch=_a ] [ -xautopar ] [ -xcache=_c ] [ -xcg89 ] [ -xcg92 ] [ -xchip=_c ] [ -xcode=_v ] [ -xcommonchk[=no|yes] ] [ -xcrossfile=_n ] [ -xdepend ] [ -xexplicitpar ] [ -xF ] [ -xhasc[=yes|no] ] [ -xhelp=_h ] [ -xia[=_i] ] [ -xildoff ] [ -xildon ] [ -xinline=_r_l ] [ -xinterval=_i ] [ -xipo[=0|1] ] [ -xlang=_l_a_n_g_u_a_g_e[,_l_a_n_g_u_a_g_e] ] [ -xlibmil ] [ -xlibmopt ] [ -xlicinfo ] [ -xlic_lib=sunperf ] [ -Xlist ] [ -xloopinfo ] [ -xmaxopt[=_n] ] [ -xmemalign[=_a_b] ] [ -xnolib ] [ -xnolibmil ] [ -xnolibmopt ] [ -xO[_n] ] [ -xopenmp ] [ -xpad ] [ -xparallel ] [ -xpg ] [ -xpp=_p ] [ -xprefetch=_a[,_a]] [ -xprofile=_p ] [ -xrecursive ] [ -xreduction ] [ -xregs=_r ] [ -xs ] [ -xsafe=mem ] [ -xsb ] [ -xsbfast ] [ -xspace ] [ -xtarget=_t ] [ -xtime ] [ -xtypemap=_s_p_e_c ] [ -xunroll=_n ] [ -xvector=_y_e_s|_n_o ] [ -ztext ] _s_o_u_r_c_e _f_i_l_e(_s) ... [ -l_x ] Last change: 2001/04/27 1 User Commands F95(1) DESCRIPTION Sun WorkShop(TM) 6 update 2 Fortran 95 compiler. See the online READMEs/fortran_95 file (viewable by running f95 -xhelp=readme) for current platforms and environments and latest information on new or changed features. Note that the compiler's parallelization features require a Forte for High Performance Computing (HPC) license. _P_u_r_p_o_s_e: Translate Fortran source files into an executable (a.out) file _O_t_h_e_r _u_s_e_s _o_f _t_h_e _c_o_m_p_i_l_e_r: o Make an executable for multiple processors, -parallel o Do global checking of the source program, -Xlist o Transform source to relocatable binary (.o) files, -c o Transform source to a dynamic library (.so) file, -G o Prepare for debugging, -g o Prepare for profiling by statement or procedure, -pg o Link .o files into an executable file o Relink only the changed files, -xildon The Incremental Link Editor, ild, is sometimes used in place of the standard linker, ld, for faster development. See -xildon and -xildoff for more information. _N_o_t_e: A man page, by definition, is a _q_u_i_c_k reference, not a complete reference. See the list of Sun documentation at the end of this man page. COMPILING FOR 64-BIT SOLARIS ENVIRONMENTS: This version of the compiler can produce 64-bit object binaries on 32-bit or 64-bit Solaris 7 or 8 SPARC Platform Editions. The resulting executable will run only on 64-bit SPARC(tm) or UltraSPARC(tm) processors under Solaris 7 or 8 with the 64-bit kernel. Compilation, linking, and execution of 64-bit objects can only take place in a Solaris 7 or 8 environment. Compiling for a 64-bit Solaris environment is indicated by the -xarch=v9, v9a, or v9b options. Note that one of these options must be specified even if -xtarget or -fast are also specified. In such a case, the -xarch= option must appear AFTER any -xtarget or other option that sets -xarch. For example: -xtarget=ultra -xarch=v9 Note that -xtarget=ultra, -xtarget=ultra2, and Last change: 2001/04/27 2 User Commands F95(1) -xtarget=ultra3 imply -xarch=v8 and do not automatically cause 64-bit compilations. When building shared dynamic libraries with -xarch=v9, v9a, or v9b in a 64-bit Solaris environment, the -pic or -PIC option MUST be specified. See also the new -xcode=abs32|abs44|abs64|pic13|pic32 option for specifying code address sizes. 64-bit Solaris operating environments not only enable 64-bit integer and pointer data, but also support for large files and large arrays. For more details on compiling for 64-bit Solaris operating environments, see the README file: /SUNWspro/READMEs/64bit_Compilers (where is usually /opt in a standard install.) For general information on 64-bit Solaris for software developers, see the "Solaris 64-bit Developer's Guide" on http://docs.sun.com/ FILE SUFFIXES .f90 .f95 File names ending in .f95 or .f90 are assumed to be Fortran 95 free format source files. .f .for Files with names ending in .f or .for are taken to be fixed format Fortran 95 or Fortran 77 source files. .F Fixed format Fortran 77 or Fortran 95 source containing preprocessor directives. These files are preprocessed by the Fortran preprocessor fpp before they are com- piled. (See also the -xpp= option.) .F90 .F95 Files ending in .F95 or .F90 are assumed to be free format Fortran 95 source containing preprocessor direc- tives. These files are preprocessed by the Fortran preprocessor fpp before they are compiled. (See also the -xpp= option.) .s Files with names ending in .s are taken to be assembly source files and are assembled, producing .o files. .il Files with names ending in .il are taken to be inline expansion code template files. The compiler uses these to expand inline calls to selected routines. The com- piler, not the linker, does this, so to get inline Last change: 2001/04/27 3 User Commands F95(1) expansion, be sure to include these .il files in the compile command. .o Files ending in .o are object files that are passed to the linker. .so Files ending in .so are shared object files or libraries that are passed to the linker. .a Files ending in .a are libraries passed on to the linker. OPTIONS For details, check the _F_o_r_t_r_a_n _U_s_e_r'_s _G_u_i_d_e. See ld(1) for link-time options. In general, processing of the compiler options is from left to right, so selective overriding of macro options can be done. This rule does not apply to linker or preprocessor options. -a Profile by basic block for tcov. Count how often each basic block is executed. Run tcov(1) on the source file to generate statistics about the program. For separate compile and link steps, if you compile with -a, then link with -a. You can mix -a with -O. When the program is run, a .d file is created for every .f file compiled that accumulates execution data for the corresponding source file. Invoking tcov after run- ning the program generates summary output on _f_i_l_e.tcov for each source file. If set at compile-time, the TCOVDIR environment vari- able specifies the directory where the .d and .tcov files are located. If this variable is not set, these file will be created in the same directory as the source files. This is the old style of basic block profiling for tcov. See -xprofile=_p. -aligncommon[=1|2|4|8|16] Specify alignment of data in common block. The value specified indicates the maximum alignment (in bytes) for data elements within common blocks. For example, -aligncommon=4 would align common block data elements with natural alignments of 4 bytes or more on Last change: 2001/04/27 4 User Commands F95(1) 4-byte boundaries. This option does not affect data with natural alignment smaller than the specified size. The default, when -aligncommon is not specified, aligns common block data on at most 4-byte boundaries. Specifying -aligncommon without a value defaults to 1 on all platforms: all data aligns on byte boundaries (no padding between elements). -aligncommon=16 reverts to -aligncommon=8 on platforms that are not 64-bit enabled (platforms other than v9, v9a, or v9b). See also -xmemalign -ansi Identify non-standard extensions. -autopar Enable automatic loop parallelization Parallelization features require a Forte for HPC license. Find and parallelize appropriate loops. Do dependency analysis (analyze loops for data dependencies). Do loop restructuring. If optimization is not -O3 or higher, it is raised to -O3. To improve performance, also specify the -stackvar option when using any of the parallelization options, including -autopar. See the description of the -stackvar option for information on how to set the sizes for the main thread stack and for the slave thread stacks. Avoid -autopar if you do your own thread management. See note under -mt. Also, -autopar is inappropriate on a single-processor system, and will degrade performance. For more information, see the Parallelization chapter in the _F_o_r_t_r_a_n _P_r_o_g_a_m_m_e_r'_s _G_u_i_d_e. _N_u_m_b_e_r _o_f _T_h_r_e_a_d_s: To run a parallelized program in a multithreaded environment, you must set the PARALLEL or OMP_NUM_THREADS envrionment variables prior to execu- tion. This tells the runtime system the maximum number of threads the program can create. The default is 1. In general, set PARALLEL or OMP_NUM_THREADS to the Last change: 2001/04/27 5 User Commands F95(1) available number of processors on the target platform. If -autopar is specified but -explicitpar is not, then explicit parallelization directives are ignored. If you use -autopar and compile and link in _o_n_e step, linking will automatically include the microtasking library and the threads-safe FORTRAN runtime library. If you use -autopar and compile and link in _s_e_p_a_r_a_t_e steps, then you must _l_i_n_k with f95 -autopar as well. -B{_d_y_n_a_m_i_c|_s_t_a_t_i_c} Prefer dynamic or require static library linking. Indicates that either dynamic library linking is pre- ferred, or static linking required for any libraries listed later in the command. _x must be dynamic or static. The default is dynamic. This is a linker option. -Bdynamic: Prefer dynamic linking (shared libraries) -Bstatic : Require static linking (no shared libraries) If you specify static but the linker finds only a dynamic library, then the library is not linked and a warning issued. However, if you specify dynamic but the linker finds only a static version, that library is linked with no warning. You can toggle between -Bdynamic and -Bstatic on the command line, linking some libraries statically and others dynamically. These are linker options. Compiling with -B_x requires the same options on a linker command if done in separate steps. In a 64-bit environment, many system libraries are available only as shared dynamic libraries. These include libm.so and libc.so (libm.a and libc.a are not provided). As a result, -Bstatic and -dn may cause linking errors in 64-bit Solaris environments. Applica- tions must link with the dynamic libraries in these cases. -C Check array references for out of range subscripts. Subscripting arrays beyond their declared sizes may result in unexpected results, including segmentation Last change: 2001/04/27 6 User Commands F95(1) faults. The -C option checks for possible array sub- script violations in the source code and during execu- tion. With the -C option specified, run-time array subscript violations are treated as an error. The compiler will also flag array subscript range violations in the source code as warnings. This option will increase the size of the executable file and degrade execution performance. It should only be used while debugging. -c Compile only, do not make executable file. Compile and produce a .o file for each source file but suppress linking by the loader. You can name a single object file explicitly using the -o option. -cg89 Generate code for generic SPARC architecture (_O_b_s_o_l_e_t_e) This option is a macro for: -xarch=v7 -xchip=old -xcache=64/32/1 and is equivalent to: -xtarget=ss2 -cg92 Generate code for SPARC V8 architecture (_O_b_s_o_l_e_t_e) This option is a macro for: -xarch=v8 -xchip=super -xcache=16/32/4:1024/32/1. and is equivalent to: -xtarget=ss1000 -copyargs Allow assignment to constant arguments. Allow a subprogram to change a dummy argument that is a constant. This option is provided only to allow legacy code to compile and execute without a runtime error for changing a constant. Without -copyargs, if you pass a constant argument to a subroutine, and then within the subroutine try to change that constant, the run aborts. With -copyargs, if you pass a constant argument to a subroutine, and then within the subroutine change that constant, the run does not necessarily abort. Code that aborts unless compiled with -copyargs is, of course, not Fortran standard compliant Last change: 2001/04/27 7 User Commands F95(1) -D_n_a_m_e[=_d_e_f] Define symbol _n_a_m_e for the source code preprocessor. This is equivalent to a #define directive in the source. If no _d_e_f is given, _n_a_m_e is defined as 1. This option applies to .F .F90 .F95 suffix files only. The following symbols are predefined on appropriate systems; note the two leading underscores: __sparc, __sparcv9, __unix, __sun, __SVR4, __SunOS_5_6, __SunOS_5_7, __SunOS_5_8 Fortran syntax may not support the actual values of these symbols--they should appear only on fpp or cpp preprocessor statements, such as conditionals: #ifdef __sparc Corresponding older values (prior releases) are: sparc, unix, sun, These earlier predefined values may be deleted in a future release. f95 uses the fpp(1) preprocessor by default. Like the C preprocessor cpp(1), fpp expands source code macros and enables conditional compilation of code. Unlike cpp, fpp understand Fortran syntax, and is preferred as a Fortran preprocessor. Use the -xpp=cpp flag to force the compiler to specifically use cpp rather than fpp. -dalign Align COMMON block data and generate faster multi-word load/stores. This flag changes the data layout in COMMON blocks (and EQUIVALENCE classes), and enables the compiler to gen- erate faster multi-word load/stores for that data. -dalign is a macro equivalent to -xmemalign=8s -aligncommon=16 The data layout effect is that of the -f flag: double- and quad-precision data in COMMON blocks and EQUIVALENCE classes are laid out in memory along their "natural" alignment, which is on 8-byte boundaries (or 16-byte boundaries for quad-precision when compiling for 64-bit platforms with -xarch=v9, v9a, or v9b.) The default alignment in COMMON blocks is on 4-byte boun- daries. Using -dalign along with Last change: 2001/04/27 8 User Commands F95(1) -xtypemap=real:64,double:64,integer:64 also causes 64- bit integer variables to be double-word aligned. Using -dalign, may result in non-standard FORTRAN alignment which could cause problems with variables in EQUIVALENCE or COMMON and may render the program non- portable if -dalign is required. If you compile one subprogram or file with -dalign, then all subprograms and files in the program unit must be compiled with -dalign. -db Generate optional CIF file. Generates an optional compiler information file (CIF) with the extension .T This file is sometimes needed by the Sun WorkShop Source Browser. -dbl_align_all=_y_e_s|_n_o Force alignment of data on 8-byte boundaries. If _y_e_s all variables will be aligned on 8-byte boun- daries. Default is -dbl_align_all=no. By itself, -dbl_align_all is equivalent to -dbl_align_all=yes. When compiling for 64-bit environments with -xarch=v9, v9a, or v9b, this flag will align quad-precision data on 16-byte boundaries. This flag does not alter the layout of data in COMMON blocks or user-defined structures. If used, all routines must be compiled with this option. -depend Analyze loops for data dependencies Analyze loops for data dependencies and do loop res- tructuring. Data dependency analysis is included as part of -fast, -parallel and -autopar. -depend will raise the optimization level to -O3 if not specified or is less than -O3. -dryrun Show commands built by the f95 driver but do not com- pile. Useful when debugging, this option displays the com- Last change: 2001/04/27 9 User Commands F95(1) mands the comiler will run to perform the compilation. -d[y|n] Allow/disallow dynamic libraries for executable Allow or disallow dynamic libraries for the entire exe- cutable. This flag is a linker option. The default is -dy. -dy: Allow dynamic libraries. -dn: Do not allow dynamic libraries. Unlike -B[dynamic|static], this option applies to the whole executable and need appear only once on the com- mand line. -d[y|n] are linker options. If you compile and link in separate steps with these options, then you need the same option in the final link step. In a 64-bit environment, many system libraries are available only as shared dynamic libraries. These include libm.so and libc.so (libm.a and libc.a are not provided). As a result, -Bstatic and -dn may cause linking errors in 64-bit Solaris environments. Applica- tions must link with the dynamic libraries in these cases. -e Extend source line maximum length to 132 characters. The compiler pads on the right with trailing blanks to column 132. If you use continuation lines while com- piling with -e, then do not split character constants across lines, otherwise unnecessary blanks may be inserted in the constants. -erroff=_t_a_g_l_i_s_t Supress warning messages listed by tag name. The taglist specifies a list of comma-separated tag names that appear with warning messages. If the list consists of %all all warnings are suppressed (this is equivalent to the -w option.) (See also -errtags.) -errtags[=yes|no] Display the message tag with each warning message. The compiler's internal error tag name appears along with error messages. The default is not to display the tag (-errtags=no). The second default (-errtags without Last change: 2001/04/27 10 User Commands F95(1) a value) is -errtags=yes. -explicitpar Enable parallelization of loops or regions explicitly marked with directives Parallelization features require a Forte for HPC license. The compiler will generate parallel code even if there are data dependencies in the DO loop that would cause the loop to generate incorrect results when run in parallel. With explicit parallelization, it is the user's responsibility to correctly analyze loops for data dependency problems before marking them with parallelization directives. This option enables Sun, Cray, and/or OpenMP explicit parallelization directives. DO loops immediately pre- ceded by parallelization directives will have threaded code generated for them. Parallelization is only appropriate on multiprocessor systems. This option should not be used to compile programs that already do their own multithreading with calls to the libthread library. _N_u_m_b_e_r _o_f _T_h_r_e_a_d_s: To run a parallelized program in a multithreaded environment, you must set the PARALLEL or OMP_NUM_THREADS envrionment variables prior to execu- tion. This tells the runtime system the maximum number of threads the program can create. The default is 1. In general, set PARALLEL or OMP_NUM_THREADS to the available number of processors on the target platform. If you use -explicitpar and compile and link in _o_n_e step, then linking automatically includes the micro- tasking library and the threads-safe FORTRAN runtime library. If you use -explicitpar and compile and link in _s_e_p_a_r_a_t_e steps, then _l_i_n_k with -explicitpar. See also the discussion of -autopar. To improve performance, also specify the -stackvar option when using any of the parallelization options, including -explicitpar. See the description of the -stackvar option for information on how to set the sizes for the main thread stack and for the slave thread stacks. Use the -mp= option to select the style of paralleliza- tion directives enabled: Sun, Cray, or OpenMP. Last change: 2001/04/27 11 User Commands F95(1) If the optimization level is not -O3 or higher, it is raised to -O3 automatically. For details, see the Parallelization chapter in the Fortran Programming Guide. -ext_names=_e Create external names with or without underscores. _e must be either plain or underscores. The default is underscores. plain: Do not use trailing underscores. underscores: Use trailing underscores. An external name is a name of a subroutine, function, block data subprogram, or labeled common. This option affects both the name in the routine itself and, of course, the name used in the calling statement (both symdefs and symrefs). -F Invoke the source file preprocessor, but do not compile Apply the fpp preprocessor to .F90, .F95, and .F files and put the result in the file with the suffix changed to .f90, .f95,or .f, but do not compile. fpp is the default preprocessor for Fortran. The C preprocessor, cpp, can be selected instead by specify- ing -xpp=cpp. -f Align double- and quad-precision data in COMMON blocks. This flag changes the data layout in COMMON blocks (and EQUIVALENCE classes): double- and quad-precision data in COMMON blocks and EQUIVALENCE classes are laid out in memory along their "natural" alignment, which is on 8-byte boundaries (or on 16-byte boundaries for quad- precision when compiling for 64-bit environments with -xarch=v9, v9a, or v9b). The default alignment of data in COMMON blocks is on 4-byte boundaries. -f is equivalent to -aligncommon=16. This option applies to both real and complex data. Resulting code may not be standard and may not be port- able. If you compile one subprogram with -f, compile all sub- programs of the program with -f. Last change: 2001/04/27 12 User Commands F95(1) By itself, this option does not enable the compiler to generate faster double word fetch/store instructions ond double and quad precision data. Only -dalign will do this. -fast Select options that optimize execution performance. -fast provides high performance for certain benchmark applications. However, the particular choice of options may or may not be appropriate for your applica- tion. Use -fast as a good starting point for compiling your application for best performance. But additional tuning may still be required. If your program behaves improperly when compiled with -fast, look closely at the individual options that make up -fast and invoke only those appropriate to your program that preserve correct behavior. Note also that a program compiled with -fast may show good performance and accurate results with some data sets, but not with others. Avoid compiling with -fast those programs that depend on particular properties of floating-point arithmetic. -fast sets the following options: o The -xtarget=native hardware target. If the program is intended to run on a different tar- get than the compilation machine, follow the -fast with the appropriate -xtarget= option. For example: f95 -fast -xtarget=ultra ... o The -O5 optimization level. o The -libmil option to inline certain math library routines. o The -fsimple=2 option for aggressive floating-point optimizations. This option may be unsuited for pro- grams requiring strict IEEE 754 standards compliance. o The -dalign option to allow generation of faster dou- ble word load/store instructions, and alignment of double and quad data on their natural boundaries in common blocks. Using this option may generate non- standard Fortran data alignment. o The -xlibmopt option to link the optimized math library. o The -depend option to better optimize DO loops. Last change: 2001/04/27 13 User Commands F95(1) o The -fns option for possibly faster (but nonstandard) handling of floating-point arithmetic exceptions and gradual underflow. o The -ftrap=common option to set trapping on common floating-point exceptions (this is the default for f95). o The -pad=local option to improve use of cache. o The -xvector=yes option to enable use of the vector- ized math library. o The -xprefetch=yes option to enable generation of prefetch instructions on platforms that support it. Note that this option is a particular selection of other options that is subject to change from one release of the compiler to another, and between com- pilers. For details on the options set by -fast, see the _F_o_r_t_r_a_n _U_s_e_r'_s _G_u_i_d_e. It is possible to add or subtract from this list by following the -fast option with other options, as in: f95 -fast -fsimple=1 -xnolibmopt which overrides the -fsimple=2 flag and disables the -xlibmopt selected by -fast. Because -fast invokes -dalign -fns -fsimple=2 programs compiled with this option may result in non- standard floating-point arithmetic, nonstandard align- ment of data, and nonstandard ordering of expression evaluation. These selections may not be appropriate for most programs. For separate compile and link steps: if you compile with -fast, then be sure to link with -fast. -fixed Assume fixed-format source input. Interpret all source files as Fortran 95 fixed-format. Overrides the file suffix. -flags Synonym for -help. -fnonstd Initialize floating-point hardware to non-standard preferences Last change: 2001/04/27 14 User Commands F95(1) This option is a synonym for the combination -fns -ftrap=common which initializes the floating-point hardware to: o Abort on exceptions o Flush _d_e_n_o_r_m_a_l_i_z_e_d numbers to zero _i_f it will improve speed See -fns for a information on underflow and handling of denormalized numbers. The -fnonstd option enables hardware traps for floating-point overflow, division by zero, and invalid operation exceptions. These are converted into SIGFPE signals, and if the program has no SIGFPE handler, it aborts. See ieee_handler(3m), ieee_functions(3m), the _N_u_m_e_r_i_c_a_l _C_o_m_p_u_t_a_t_i_o_n _G_u_i_d_e, and _F_o_r_t_r_a_n _P_r_o_g_r_a_m_m_i_n_g _G_u_i_d_e for more information. -fns[={_n_o|_y_e_s}] Select SPARC nonstandard floating point Select the SPARC nonstandard floating-point mode. The default, -fns=no, is SPARC standard floating-point mode. Optional use of =_y_e_s or =_n_o provides a way of toggling the -fns flag following some other macro flag that includes -fns, such as -fast. -fns is the same as -fns=yes. -fns=yes selects non-standard floating-point. -fns=no selects standard floating-point. On some SPARC systems, the nonstandard floating point mode disables "gradual underflow", causing tiny results to be flushed to zero rather than producing subnormal numbers. It also causes subnormal operands to be silently replaced by zero. On those SPARC systems that do not support gradual underflow and subnormal numbers in hardware, use of this option can significantly improve the performance of some programs. Warning: When nonstandard mode is enabled, floating point arithmetic may produce results that do not con- form to the requirements of the IEEE 754 standard. See the Numerical Computation Guide and the Fortran User's Guide for more information. This option is effective only if used when compiling the main program. Last change: 2001/04/27 15 User Commands F95(1) -fpover[={yes|no}] Detect floating-point overflow in formatted input. With -fpover=yes specified, the I/O library will detect floating-point overflows in formatted input and return error condition 1031. The default is no such overflow detection (-fpover=no). -fpover is equivalent to -fpover=yes. -fpp Force preprocessing of input files with fpp. Pass all the input source files listed on the command line through the fpp preprocessor, regardless of file extension. (Files with .F90, .F95, .F extension are automatically preprocessed by fpp. See also -xpp.) -free Assume free-format source input. Interpret all source files as Fortran 95 free-format. Overrides the file suffix. -fround=_r Select the IEEE rounding mode in effect at startup. _r must be one of: nearest, tozero, negative, positive. The default is -fround=nearest. When r is "tozero", "negative", or "positive", this flag causes the rounding direction mode to be set to round-to-zero, round-to-negative-infinity, or round- to-positive-infinity respectively when a program begins execution. When r is "nearest" or the -fround flag is not used, the rounding direction mode is not altered from its initial value (round-to-nearest by default). This option is effective only if used when compiling the main program. -fsimple[=_n] Select floating-point optimization preferences Allow the optimizer to make simplifying assumptions concerning floating-point arithmetic. If _n is present, it must be 0, 1, or 2. The defaults are: With no -fsimple, f95 uses -fsimple=0 With only -fsimple, f95 uses -fsimple=1 Last change: 2001/04/27 16 User Commands F95(1) -fsimple=0 Permit no simplifying assumptions. Preserve strict IEEE 754 conformance. -fsimple=1 Allow conservative simplifications. The resulting code does not strictly conform to IEEE 754, but numeric results of most programs are unchanged. With -fsimple=1, the optimizer can assume the fol- lowing: IEEE 754 default rounding/trapping modes do not change after process initialization. Computations producing no visible result other than potential floating point exceptions may be deleted. Computations with Infinity or NaNs as operands need not propagate NaNs to their results; e.g., x*0 may be replaced by 0. Computations do not depend on sign of zero. With -fsimple=1, the optimizer is not allowed to optimize completely without regard to roundoff or exceptions. In particular, a floating-point computa- tion cannot be replaced by one that produces dif- ferent results with rounding modes held constant at run time. -fsimple=2 Permit aggressive floating-point optimizations that may cause many programs to produce different numeric results due to changes in rounding. In particular, the Fortran standard rule requiring compilers to honor explicit parentheses around subexpressions to control expression evaluation order may be broken with -fsimple=2. This could result in numerical rounding differences with pro- grams that depend on this rule. For example, with -fsimple=2, the compiler may evaluate C-(A-B) as (C-A)+B, breaking the standard's rule about explicit parentheses, if the resulting code is better optimized. The compiler may also replace repeated computations of x/y with x*z, where z=1/y is computed once and saved in a temporary, to eliminate the costly divide operations. Last change: 2001/04/27 17 User Commands F95(1) Programs that depend on particular properties of floating-point arithmetic should not be compiled with -fsimple=2. Even with -fsimple=2, the optimizer still is not permitted to introduce a floating-point exception in a program that otherwise produces none. -fast sets -fsimple=2. -ftrap=_t Set floating-point trapping mode This option sets the IEEE floating-point trapping that is in effect at startup. _t is a comma-separated list that consists of one or more of the following: %all, %none, common, [no%]invalid, [no%]overflow, [no%]underflow, [no%]division, [no%]inexact. The f95 default is -ftrap=common. (Note that the default with f77 is -ftrap=%none.) This option sets the IEEE 754 trapping modes that are established at program initialization. Processing is left-to-right. The common exceptions, by definition, are invalid, division by zero, and overflow. For exam- ple: -ftrap=overflow. Example: Set all traps, except inexact. -ftrap=%all,no%inexact The meanings are the same as for the ieee_flags func- tion, except that: o %all turns on all the trapping modes, and will cause trapping of spurious and expected exceptions. Use common instead. o %none, the default, turns off all trapping modes. o A no% prefix turns off that specific trapping mode. To be effective this option must be used when compiling the main program. -G Build a dynamic shared library Last change: 2001/04/27 18 User Commands F95(1) Direct the linker to make a shared dynamic library. Without -G the linker builds an executable file. With -G it builds a dynamic library (but no executable). Use -o with -G to specify the name of the file to be written. -g Compile for debugging and performance analysis. Produce additional symbol table information for debug- ging with dbx(1) or Sun WorkShop, and for analysis with the Sun WorkShop Performance Analyzer, analyzer(1). Although some debugging is possible without specifying -g, the full capabilities of dbx are only available to those objects compiled with -g. The -g option makes -xildon the default incremental linker option (see -xildon). That is, with -g, the compiler default behavior is to automatically invoke ild in place of ld, unless the -G option is present, or any source file is named on the command line. To use the full capabilities of the Forte Developer 6 (Sun WorkShop 6) Performance Analyzer, compile with -g. While some performance analysis features do not require -g, you must compile with -g to view annotated source, some function level information, and compiler commen- tary messages. (See the analyzer(1) man page.) The commentary messages generated with -g describe the optimizations and transformations the compiler made while compiling your program. You must use er_src(1), er_print(1), or the performance analyzer, analyzer(1) to view the commentary messages. Note that commentary messages only appear if the com- piler actually performed any optimizations. You are more likely to see commentary messages when you request high optimization levels, such as with -xO4, or -fast. -h _n_m Specify the name of the generated dynamic shared library If the library has an _i_n_t_e_r_n_a_l _n_a_m_e, then whenever the executable is run, the linker must find a library with the same _i_n_t_e_r_n_a_l _n_a_m_e; the file can be in any library search path. If the library has no _i_n_t_e_r_n_a_l _n_a_m_e, then the linker must find a library with the same _p_a_t_h as when it was generated. Having an internal name allows Last change: 2001/04/27 19 User Commands F95(1) more flexibility at runtime. Remarks: o The space between the -h and _n_m is optional. o -h_n_m is meaningless without -G. o -h_n_m is a linker option. o The names after -h and -o are usually the same. o -h_n_m facilitates versions for dynamic libraries. See the Solaris _L_i_n_k_e_r _a_n_d _L_i_b_r_a_r_i_e_s _G_u_i_d_e. -help List the f95 command-line options. See also -xhelp. -I_d_i_r Add _d_i_r to the include file search path. Insert directory _d_i_r at the start of the include file search path. No space is allowed between -I and _d_i_r. The _i_n_c_l_u_d_e _f_i_l_e _s_e_a_r_c_h _p_a_t_h is the list of directories searched for include files. This search path is used by: o The preprocessor directive #include o The f95 statement INCLUDE Example: To search for include files in /usr/applib: f95 -I/usr/applib growth.F Of course, to invoke the preprocessor, you must use a .F suffix; and the f95 compiler INCLUDE statement allows the .f or .F suffix. The -I_d_i_r search path is used while searching for _r_e_l_a_- _t_i_v_e path names, not absolute path names. The search order for relative path names is: 1. The directory containing the source file 2. Directories named in -I options 3. Directories in the default list of the compiler The _d_e_f_a_u_l_t _l_i_s_t depends on installation: Standard install is to /opt: /opt/SUNWspro/<_r_e_l_e_a_s_e>/include/f95 /usr/include where <_r_e_l_e_a_s_e> changes with each release of the com- Last change: 2001/04/27 20 User Commands F95(1) pilers. -inline=_r_l Request inlining of the specified user-written rou- tines. Optimize by inlining the specified user-written rou- tines named in the list _r_l. The list is a comma- separated list of functions and subroutines. The _r_l list may include the string %auto to enable automatic inlining at optimization levels -_O_4 or higher, which is normally turned off when explicit inlining is specified on the command line by -_i_n_l_i_n_e. If you prefix the name of a routine on the list with no%, inlining of that routine is inhibited. For example, to enable automatic inlining while disa- bling inlining of a specific routine (gflub), use: -O5 -inline=%auto,no%gflub Only routines in the file being compiled are con- sidered. The optimizer decides which of these routines are appropriate for inlining. A routine is not inlined if any of the following condi- tions apply, with no warnings: o Optimization is less than -O3 o The routine cannot be found. o Inlining it is not profitable or safe. o The source is not in the file being compiled. But, see -xcrossfile. -Kpic Synonym for -pic -KPIC Synonym for -PIC -L_d_i_r Add _d_i_r to list of directories to search for libraries. _d_i_r is added to the start of the search list. A space between -L and _d_i_r is optional. Last change: 2001/04/27 21 User Commands F95(1) _N_o_t_e: Do not use the -L_d_i_r option to specify /usr/lib or /usr/ccs/lib, since they are searched by default, and including them here prevents using the unbundled libm. -l_x Add library lib_x.a to the linker's list of search libraries. Direct the loader to link with object library lib_x.a, where _x is a string. See ld(1). Example: -lsumex links in the library libsumex.a _O_r_d_e_r _o_n _t_h_e _C_o_m_m_a_n_d _L_i_n_e: Place -l_x options _a_f_t_e_r any .f, .F, or .o files. If you call functions in lib_x, and they reference functions in lib_y, then place -l_x before -l_y. _S_e_a_r_c_h _O_r_d_e_r for -l_x files: the linker searches for libraries in several locations. For details, see the chapter, "Libraries," in the _F_o_r_t_r_a_n _P_r_o_g_r_a_m_m_i_n_g _G_u_i_d_e. See also ld(1). -libmil Inline selected libm math library routines for optimi- zation. Some of the simpler library routines can be inlined by the compiler. This option inlines library calls depend- ing on the floating-point options and platform curently being used. -loopinfo Show which loops are parallelized Show which loops are parallelized and which are not. This option is normally for use with the -autopar and -explicitpar options. It requires a Forte for HPC license and generates a list of messages on standard error. -M_p_a_t_h Specify Module directory. Look in the directory specified by _p_a_t_h for Fortran 95 modules referenced in the current compilation. This path is searched in addition to the current directory. By default, without this option, only the current directory is searched for referenced module files. (There is no space between the -M and the _p_a_t_h. For example, -M/home/siri/PK15/Modules Last change: 2001/04/27 22 User Commands F95(1) -mp=[%none|sun|cray|openmp] Specify the style for parallelization directives The default is sun. sun: Accept Sun-style MP directives. cray: Accept Cray-style MP directives. openmp: Accept OpenMP directives %none: Ignore all parallelization directives. Sun-style parallelization directives start with C$PAR or !$PAR. Cray-style parallelization directives start with CMIC$ or !MIC$. Either style can appear in upper- case or lowercase. OpenMP directives start with C$OMP, !$OMP, *$OMP, in fixed format, or !$OMP in free format. You can combine OpenMP directives with either Cray or Sun style directives in the same compilation unit. But both Sun and Cray style directives cannot both be active in the same compilation unit. For example: -mp=sun,openmp and -mp=cray,openmp are permitted, but NOT -mp=sun,cray You must also specify -explicitpar to have these direc- tives enable parallelization. Also, -stackvar should be specified with parallelization. For example: -explicitpar -stackvar -mp=openmp When compiling for OpenMP, use the -openmp flag, which includes -mp=openmp as a component, along with the other required flags. -mt Use multithread safe libraries If you are doing your own multithread coding and not using -autopar, -explicitpar, or -parallel, then you must use the -mt option in the compile and link steps. The parallelization options use -mt automatically. On a single-processor system, the generated code usu- ally runs more slowly with this option. -native Optimize for the host system. The -native option is a synonym for the -xtarget=native option. Last change: 2001/04/27 23 User Commands F95(1) -noautopar Cancel -autopar on the command line. Cancel automatic parallelization of loops invoked by -autopar on the command line. (Parallelization options require a Forte for HPC license.) -nodepend Cancel -depend in command line Cancel dependency analysis invoked by a -depend option appearing earlier in the command line. -noexplicitpar Cancel -explicitpar Cancel explicit parallelization of loops invoked by -explicitpar earlier on the command line. (Paralleliza- tion options require a Forte for HPC license.) -nolib Do _n_o_t link with system libraries. Do _n_o_t automatically link with _a_n_y system or language library; that is, do _n_o_t pass any default -l_x options to ld. The default is to link such libraries into exe- cutables automatically, without users specifying them on the command line. The system and language libraries are _r_e_q_u_i_r_e_d for final execution. It is your responsibility to link them in manually. This option provides you complete control (and responsibility). The -nolib option makes it easier to link these libraries _s_t_a_t_i_c_a_l_l_y. -nolibmil Cancel -libmil on command line Use with -fast to disable inlining of libm math rou- tines: demo% f95 -fast -nolibmil ... -noqueue Disable license queueing. With this option, if no license is available, the com- piler returns without queuing your request and without performing any compilation. A nonzero status is returned for testing in makefiles. Last change: 2001/04/27 24 User Commands F95(1) -noreduction Cancel -reduction on command line -reduction is used along with parallelization options. This option cancels a -reduction appearing earlier on the command line. (Parallelization options require a Forte for HPC license.) -norunpath Do not build a runtime library search path into the executable If an executable file uses shared libraries, then the compiler normally builds in a path that tells the run- time linker where to find those shared libraries. The path depends on the directory where you installed the compiler. The -norunpath option prevents that path from being built into the executable. This option is helpful when libraries have been installed in some nonstandard location, and you do not wish to make the loader search down those paths when the executable is run at another site. Compare with -R. -O[_n] Specify optimization level (_n). If -O[_n] is not specified, only a very basic level of optimization limited to local common subexpression elimination and dead code analysis is performed. A program's performance may be significanly improved when compiled with an optimization level than without optim- ization. Each -O_n level includes the optimizations performed at the levels below it. Generally, the higher the level of optimization a program is compiled with, the better runtime performance obtained. However, higher optimiza- tion levels may result in increased compilation time and larger executable files. There are five levels that you can use with -O_n. The actual optimizations performed by the compiler at each level may change with each compiler release. Use of -O (which implies -O3) or -fast (which implies -O5) is recommended for most programs. The -g option can be used with optimization, -O[_n], and allows limited debugging. Last change: 2001/04/27 25 User Commands F95(1) If the optimizer runs out of memory, it attempts to proceed over again at a lower level of optimization, resuming compilation of subsequent routines at the ori- ginal level. For details on optimization, see the _F_o_r_t_r_a_n _P_r_o_g_r_a_m_- _m_i_n_g _G_u_i_d_e chapters _P_e_r_f_o_r_m_a_n_c_e _P_r_o_f_i_l_i_n_g, and _P_e_r_f_o_r_- _m_a_n_c_e _a_n_d _O_p_t_i_m_i_z_a_t_i_o_n. -O Optimize at the level most likely to give close to the maximum performance for many realistic appli- cations (currently -O3). -O1 Do only the basic local optimizations (peephole). -O2 Do basic local and global optimization. This level usually gives minimum code size. -O3 Adds global optimizations at the function level. In general, this level, and -O4, usually result in the minimum code size when used with the -xspace option. -O4 Adds automatic inlining of functions in the same file. -g suppresses automatic inlining. In gen- eral, -O4 results in larger code unless combined with -xspace. See -inline to control which routines are inlined. -O5 Does the highest level of optimization, suitable only for the small fraction of a program that uses the largest fraction of computer time. Uses optim- ization algorithms that take more compilation time or that do not have as high a certainty of improv- ing execution time. Optimization at this level is more likely to improve performance if it is done with profile feedback. See -xprofile=collect|use. Interactions: If you use -g and the optimization level is -O3 or lower, the compiler provides best-effort symbolic information with almost full optimization. Tail- call optimization and back-end inlining are dis- abled. For more information, see _D_e_b_u_g_g_i_n_g _a _P_r_o_g_r_a_m _W_i_t_h dbx. The -xcrossfile option is effective only if it is Last change: 2001/04/27 26 User Commands F95(1) used with -O4 or -O5. See also: -fast, -xprofile=_p, csh(1) man page _A_n_a_l_y_z_i_n_g _P_r_o_g_r_a_m _P_e_r_f_o_r_m_a_n_c_e _W_i_t_h _S_u_n _W_o_r_k_S_h_o_p discusses the effects of the different levels of optimization on the Analyzer's data. -o _n_m Specify the name of the executable file to be written There must be a blank between -o and _n_m. Without this option, the default is to write the executable to a.out. When used with -c, -o specifies the target .o object file; with -G it specifies the target .so library file. -onetrip Enable one-trip DO loops. Compile DO loops so they are performed at least once if reached. f95 FORTRAN DO loops are not performed at all if the upper limit is smaller than the lower limit, unlike some legacy implementations of Fortran. -openmp Enable explicit parallelization with Fortran 95 OpenMP directives. This option is a macro for the combination of options: -mp=openmp -explicitpar -stackvar -D_OPENMP=2000011 The Fortran 95 OpenMP directives are described in the _F_o_r_t_r_a_n _U_s_e_r'_s _G_u_i_d_e. To run a parallelized program in a multithreaded environment, you must set the PARALLEL or OMP_NUM_THREADS envrionment variables prior to execu- tion. This tells the runtime system the maximum number of threads the program can create. The default is 1. In general, set PARALLEL or OMP_NUM_THREADS to the available number of processors on the target platform. Fortran parallelization features require a Forte for HPC license. -p Compile for profiling with prof. Prepare object files for profiling with prof(1). This Last change: 2001/04/27 27 User Commands F95(1) option makes profiles by procedure, showing the number of calls to each procedure and the percent of time used by each procedure. For separate compile and link steps, if you compile with -p, then be sure to link with -p. -pad[=_p] Insert padding for efficient use of cache. This option inserts padding between arrays or character strings if they are: o Static local and not initialized, or o In common blocks For either one, the arrays or character strings can not be equivalenced. If =_p is present, it must be one of the following (no spaces): local: Pad local variables common: Pad variables in common blocks local,common: Both local and common padding is done common,local: Both local and common padding is done Defaults: Without the -pad[=_p] option, no padding. With -pad, without =_p, local and common padding. The following are equivalent: f95 -pad any.f f95 -pad=local,common any.f f95 -pad=common,local any.f Restrictions on -pad=common: o If -pad=common is specified for a file that refer- ences a common block, it must be specified for all files that reference that common block. o With -pad=common specified, declarations of common block variables in different program units must be the same except for the names of the variables. o Padding is dependent on the setting of -xcache. All files must be compiled with the same -xcache settings when -pad=common is used. o Do not specify -pad=common if the program over- indexes arrays in common blocks. The padding inserted between arrays by the compiler will interfere with the assumed layout of the data. Last change: 2001/04/27 28 User Commands F95(1) o EQUIVALENCE declarations involving common block variables will cause warning messages that padding has been inhibited by EQUIVALENCE when compiled with -pad=common. These arrays will not be pad- ded. o Avoid overindexing arrays in common blocks with -pad=common specified. The altered positioning of adjacent data in a padded common block will cause overindexing to fail in unpredictable ways. -parallel Enable a combination of automatic and explicit paral- lelization features. This option is a macro for a combination of options: -autopar -explicitpar -depend Parallelization features require a Forte for HPC license. Parallelize loops chosen automatically by the compiler and explicitly specified by user supplied directives. Optimization level is automatically raised to -O3 if it is lower. To improve performance, also specify the -stackvar option when using any of the parallelization options, including -autopar. See the description of the -stackvar option for information on how to set the sizes for the main thread stack and for the slave thread stacks. Avoid -parallel if you do your own thread management. See the discussion of -mt Parallelization options like -parallel are intended to produce executables programs to be run on multiproces- sor systems. On a single-processor system, paralleliza- tion generally degrades performance. If you compile and link in separate steps, if -parallel appears on the compile command it must also appear on the link command. See also the discussion of -autopar. For more information, see the chapter on paralleliza- tion in the _F_o_r_t_r_a_n _P_r_o_g_r_a_m_m_i_n_g _G_u_i_d_e. Last change: 2001/04/27 29 User Commands F95(1) _N_u_m_b_e_r _o_f _T_h_r_e_a_d_s: To run a parallelized program in a multithreaded environment, you must set the PARALLEL or OMP_NUM_THREADS envrionment variables prior to execu- tion. This tells the runtime system the maximum number of threads the program can create. The default is 1. In general, set PARALLEL or OMP_NUM_THREADS to the available number of processors on the target platform. -pg Compile for profiling with gprof. Prepare the object files for profiling with gprof(1). This option makes profiles by procedure, showing the number of calls to each procedure and the percent of time used by each procedure. This option also produces counting code in the manner of -p, but invokes a runtime recording mechanism that keeps more extensive statistics and produces a gmon.out file at normal termination. You can then generate an execution profile using gprof(1). For separate compile and link steps, if you compile with -pg, then link with -pg. -pic Compile position-independent code for shared library. This option is used to create dynamic shared libraries. Each reference to a global datum is generated as a dereference of a pointer in the global offset table. Each function call is generated in program-counter- relative addressing mode through a procedure linkage table. o The size of the global offset table is limited to 8Kb on SPARC. o Do not mix -pic and -PIC. There are two nominal performance costs with -pic and -PIC: o A routine compiled with either -pic or -PIC exe- cutes a few extra instructions upon entry to set a register to point at the global offset table used for accessing a shared library's global or static variables. o Each access to a global or static variable involves an extra indirect memory reference through the global offset table. If the compile is done with -PIC, there are two additional instructions per global and static memory Last change: 2001/04/27 30 User Commands F95(1) reference. When considering the above costs, remember that the use of -pic and -PIC can significantly reduce system memory requirements, due to the effect of library code shar- ing. Every page of code in a shared library compiled -pic or -PIC can be shared by every process that uses the library. If a page of code in a shared library con- tains even a single non-pic (that is, absolute) memory reference, the page becomes nonsharable, and a copy of the page must be created each time a program using the library is executed. The easiest way to tell whether or not a .o file has been compiled with -pic or -PIC is with the nm command: nm _f_i_l_e.o | grep _GLOBAL_OFFSET_TABLE_ A .o file containing position-independent code will contain an unresolved external reference to _GLOBAL_OFFSET_TABLE_ as marked by the letter U. To determine whether to use -pic or -PIC, use nm to identify the number of distinct global and static vari- ables used or defined in the library. If the size of _GLOBAL_OFFSET_TABLE_ is under 8,192 bytes, you can use -pic. Otherwise, you must use -PIC. When building shared dynamic libraries with -xarch=v9 (or v9a or v9b) 64-bit Solaris environments, the -pic or -PIC option (or their -xcode equivalents -xcode=pic13 or -xcode=pic32) MUST be specified. See also -xcode. -PIC Similar to -pic, with 32-bit addresses This allows the global offset table to span the range of 32-bit addresses. Use it for those rare cases with too many global data objects for -pic. Do not mix -pic with -PIC. When building shared dynamic libraries with -xarch=v9 (or v9a or v9b) 64-bit Solaris environments, the -pic or -PIC option (or their -xcode equivalents -xcode=pic13 or -xcode=pic32) MUST be specified. See also -xcode. Last change: 2001/04/27 31 User Commands F95(1) -Qoption _p_r _l_s Pass option list _l_s to the compilation phase _p_r. This option is used primarily by customer service. -qp Synonym for -p. -R _l_i_s_t Build library search paths into executable With this option, the linker, ld(1), adds a list of library search paths into the executable file. _l_i_s_t is a colon-separated list of directories used to specify library search paths to the runtime linker. The list is added to the default list that f95 passes to the linker. The blank between -R and _l_i_s_t is optional. Multiple instances of this option are concatenated together, with each list separated by a colon. Use this option if you want to export an executable that can run without any special option for paths to your dynamic libraries. Building an executable with this option adds paths to a default path that is always searched last: /opt/SUNWspro/lib _f_o_r _s_t_a_n_d_a_r_d _i_n_s_t_a_l_l_s _i_n_s_t_a_l_l_p_a_t_h/lib _f_o_r _c_u_s_t_o_m _i_n_s_t_a_l_l_s -r8const Promote single-precision constants to REAL*8 constants. All single precision literal constants are promoted to REAL*8. Double-precision constants (REAL*8) are not promoted. This flag applies only to constants. Use -xtypemap to promote both constants and variables. -reduction Parallelize reduction operations in loops Analyze loops for reduction in automatic paralleliza- tion. To enable parallelization of reduction loops, specify both -reduction and -autopar. A loop that transforms the elements of an array into a Last change: 2001/04/27 32 User Commands F95(1) single scalar value is called a reduction operation. For example, summing the elements of a vector is a typ- ical reduction operation. Although these operations violate the criteria for parallelizability, the com- piler can recognize them and parallelize them as spe- cial cases when -reduction is specified. See the _F_o_r_- _t_r_a_n _P_r_o_g_r_a_m_m_i_n_g _G_u_i_d_e chapter _P_a_r_a_l_l_e_l_i_z_a_t_i_o_n for information on reduction operations recognized by f95. If you specify -reduction without -autopar, the com- piler issues a warning. On a single-processor system, the generated code usu- ally runs more slowly. Example: demo% f95 -autopar -reduction any.f There is always potential for roundoff error with reduction. If you have a reduction loop to be parallelized, then use -reduction (with -autopar, of course). Do not use an explicit pragma, because the explicit pragma prevents reduction for that loop, resulting in wrong answers. -S Compile and only generate assembly code. Compile the named programs and leave the assembly language output on corresponding files suffixed .s (no .o file is created). -s Strip the symbol table from the executable file. This option makes the executable file smaller and more difficult to reverse engineer. However, this option prevents debugging. -sb Produce table information for the Sun WorkShop Source Browser. Note: -sb cannot be used on source files the compiler automatically passes through the fpp or cpp preproces- sors; for example, source files with .F, .F90,or .F95 extensions, or used with the -F option. -sbfast Similar to -sb, but faster. Produce _o_n_l_y table information for the Sun WorkShop Source Browser. Do not assemble, link, or make object files. (See also the discussion of -sb and its use with Last change: 2001/04/27 33 User Commands F95(1) source code preprocessors.) -silent Supress compiler messages. Normally, f95 does not issue messages, other than error diagnostics, during compilation. This option is pro- vided only for compatibility with the f77 compiler com- mand line. -stackvar Force all _l_o_c_a_l variables to be allocated on the stack. Allocates all the local variables and arrays in routinesonto the memory stack unless otherwise speci- fied. This option makes these variables _a_u_t_o_m_a_t_i_c rather than _s_t_a_t_i_c and provides more freedom to the optimizer when parallelizing loops with calls to sub- programs. Use of -stackvar is recommended with any of the paral- lelization options. Variables and arrays are local, unless they are: o Arguments in a SUBROUTINE or FUNCTION statement (already on stack) o Global items in a COMMON or SAVE, or STATIC state- ment o Initialized items in a type statement or a DATA statement, such as: REAL X/8.0/ or DATA X/8.0/ Putting large arrays onto the stack with -stackvar can overflow the stack causing segmentation faults. Increasing the stack size may be required. The initial thread executing the program has a main stack, while each helper thread of a multithreaded pro- gram has its own thread stack. The default stack size is about 8 Megabytes for the main stack and 1 Megabyte (2 Megabytes on SPARC V9 platforms) for each thread stack. The limit command (with no parameters) shows the current main stack size. Use the limit shell command to set the size (in Kilo- bytes) of the main thread stack. For example, to set the _m_a_i_n stack size to 64 Megabytes, use a % limit stacksize 65536 Last change: 2001/04/27 34 User Commands F95(1) command. You can set the stack size to be used by each slave thread by giving the STACKSIZE environment variable a value (in Kilobytes): % setenv STACKSIZE 8192 sets the stack size for each slave thread to 8 Mb. See the _F_o_r_t_r_a_n _U_s_e_r'_s _G_u_i_d_e. -stop_status={_y_e_s|_n_o} Permit STOP statement to return an integer status value. The optional argument is either yes or no. The default is yes. With -stop_status=yes a STOP statement may contain an integer constant that will be passed to the environment as the program terminates. This value will be avail- able as $status for the C shell or $? for the Bourne and Korn shells. The value on the STOP statement can be any positive integer. The value returned to the shell will be modulo 256 (in the range 0 to 255). -temp=_d_i_r Define directory for temporary files. Set the directory for temporary files used by f95 to be _d_i_r instead of the /tmp directory. -time Show execution time for each compilation phase. -U Recognize upper and lower case in source files. Do not treat uppercase letters as equivalent to lower- case. The default is to treat uppercase as lowercase except within character-string constants. With this option, the compiler treats Delta, DELTA, and delta as different symbols. Portability and mixing Fortran with other languages may require use of -U. Calls to intrinsic functions, Fortran library func- tions, and routines explicitly declared EXTERNAL are not affected by this option. -U_n_a_m_e Last change: 2001/04/27 35 User Commands F95(1) Undefine preprocessor macro _n_a_m_e Removes any initial definition of the preprocessor macro symbol _n_a_m_e created by -D_n_a_m_e on the same command line, or implicitly placed there by the command-line driver, regardless of the order the options appear. It has no affect on any macro definitions in source files. Multiple -U_n_a_m_e flags may appear on the same line, and there must be no space between -U and _n_a_m_e. This option applies only to .F, .F90, and .F95 source files that invoke the fpp or cpp preprocessors. -u Imply IMPLICIT NONE Equivalent to specifying IMPLICIT NONE in each compila- tion unit. This has the affect of making the default type of variables _u_n_d_e_c_l_a_r_e_d rather than using standard Fortran implicit typing. This option does _n_o_t override any existing IMPLICIT statements or explicit _t_y_p_e statements. -unroll=_n Enable unrolling of DO loops n times where possible. _n is a positive integer. _n = 1, inhibits all loop unrolling _n > 1, this option _s_u_g_g_e_s_t_s to the optimizer that it unroll loops _n times. If any loops are actually unrolled, then the executable file is larger. -V Show name and version of each compilation phase. -v Verbose mode - show compilation details Like -V but also details the options, macro flag expan- sions, and environment variables used by the driver. -vpara Show verbose parallelization messages Parallelization options require a Forte for HPC license. As the compiler detects each explicitly parallelized loop that has dependencies, it issues a warning message but the loop is parallelized. Last change: 2001/04/27 36 User Commands F95(1) Use with -explictpar and a C$MIC DOALL parallel pragma. Example: demo% f95 -explicitpar -vpara any.f -w[_0|_1|_2|_3|_4] Show or suppress warning messages. -w suppresses warning messages from the compiler. -w0 shows just error messages. -w1 shows errors and warnings. (This is the default.) -w2 shows errors, warnings, and cautions. -w3 shows errors, warnings, cautions, and notes. -w4 shows errors, warnings, cautions, notes, and com- ments. If you specify two options, and the second one over- rides all or part of the first one, the compiler issues a warning. -Xlist[_z] Produce listings and do global program checking. Find potential programming bugs. Invokes an extra com- piler pass to check for consistency in calls and common across the global program. Generates line-numbered source code listing with cross references. Diagnostic messages from -Xlist are warnings and do not prevent compiling and linking. Be sure to correct all syntax errors first; -Xlist might produce unpredictable reports when run on a source program with syntax errors. Output is to a file with a name like the first file name but with a .lst extension. Example: Errors, listing, and xref to file1.lst demo% f95 -Xlist file1.f file2.f Use the -Xlist options to check for interprocedural problems, but only after all other compiler errors and warnings have been resolved. Last change: 2001/04/27 37 User Commands F95(1) Summary of -Xlist Suboptions -Xlist Default: listings, errors, xref -Xlistc Call graphs and errors. -XlistE Errors only (no xref or listings) -Xlisterr Suppress all -Xlist error messages -Xlisterr[_n] Suppress -Xlist error message _n. -Xlistf Errors, listing, and cross references, but no object files compiled. -Xlisth Terminate if errors detected. -XlistI Check include files also -XlistL Listings only (no xref) -Xlistl[_n] Page length is _n lines -Xlisto_n_m Output to _n_m instead of to _f_i_l_e.lst -Xlists Suppress unreferenced names from cross- reference table. -Xlistv_n Set checking level to _n (1,2,3, or 4) - default is 2 -Xlistw[_n_n_n] Set output line width to _n; default is 79 -Xlistwar Suppress all -Xlist warning messages -Xlistwar[_n] Suppress -Xlist warning message _n. -XlistX Xref only (no listings) See the _F_o_r_t_r_a_n _P_r_o_g_r_a_m_m_i_n_g _G_u_i_d_e for details. -xa Synonym for -a. -xarch=_i_s_a Specifies the target architecture instruction set (ISA). This option limits the code generated by the compiler to the instructions of the specified instruction set architecture by allowing only the specified set of instructions. This option does not guarantee use of any target-specific instructions. However, use of this option may affect the portability of a binary program. See the Notes and Warnings sections at the end of this entry. Values (SPARC platforms): Value Meaning generic Compile for good performance on most 32-bit architectures. Last change: 2001/04/27 38 User Commands F95(1) This is the default. This option uses the best instruction set for good performance on most 32-bit processors without major perfor- mance degradation on any of them. With each new release, the definition of "best" instruction set may be adjusted, if appropri- ate. generic64 Compile for good performance on most 64-bit architectures. This option uses the best instruction set for good performance on most 64-bit processors without major performance degradation on any of them. With each new release, the defini- tion of "best" instruction set may be adjusted, if appropriate. native Compile for good performance on this system (assuming a 32-bit architecture). This is the default for the -fast option. The compiler chooses the appropriate setting for the current 32-bit system processor it is running on. native64 Compile for good performance on this system (assuming a 64-bit architecture). The compiler chooses the appropriate setting for the current 64-bit system processor it is running on. v7 Compile for the SPARC-V7 ISA. Enables the compiler to generate code for good performance on the V7 ISA. This is equivalent to using the best instruction set for good performance on the V8 ISA, but with- out integer mul and div instructions, and the fsmuld instruction. Examples: SPARCstation 1, SPARCstation 2 v8a Compile for the V8a version of the SPARC-V8 ISA. Last change: 2001/04/27 39 User Commands F95(1) By definition, V8a means the V8 ISA, but without the fsmuld instruction. This option enables the compiler to generate code for good performance on the V8a ISA. Example: Any system based on the microSPARC I chip architecture v8 Compile for the SPARC-V8 ISA. Enables the compiler to generate code for good performance on the V8 architecture. Example: SPARCstation 10 v8plus Compile for the V8plus version of the SPARC- V9 ISA. By definition, V8plus means the V9 ISA, but limited to the 32-bit subset defined by the V8plus ISA specification, without the Visual Instruction Set (VIS), and without other implementation- specific ISA extensions. This option enables the compiler to generate code for good performance on the V8plus ISA. The resulting object code is in SPARC-V8+ ELF32 format and only executes in a Solaris UltraSPARC environment -- it does not run on a V7 or V8 processor. Example: Any system based on the UltraSPARC chip architecture v8plusa Compile for the V8plusa version of the SPARC-V9 ISA. By definition, V8plusa means the V8plus architecture, plus the Visual Instruction Set (VIS) version 1.0, and with UltraSPARC exten- sions. This option enables the compiler to generate code for good performance on the UltraSPARC architecture, but limited to the 32-bit subset defined by the V8plus specifi- cation. The resulting object code is in SPARC-V8+ ELF32 format and only executes in a Solaris UltraSPARC environment -- it does not run on a V7 or V8 processor. Example: Any system based on the UltraSPARC Last change: 2001/04/27 40 User Commands F95(1) chip architecture v8plusb Compile for the V8plusb version of the SPARC-V8plus ISA with UltraSPARC III exten- sions. Enables the compiler to generate object code for the UltraSPARC architecture, plus the Visual Instruction Set (VIS) version 2.0, and with UltraSPARC III extensions. The resulting object code is in SPARC-V8+ ELF32 format and executes only in a Solaris UltraSPARC III environment. Compiling with this option uses the best instruction set for good performance on the UltraSPARC III architecture. v9 Compile for the SPARC-V9 ISA. Enables the compiler to generate code for good performance on the V9 SPARC architec- ture. The resulting .o object files are in ELF64 format and can only be linked with other SPARC-V9 object files in the same for- mat. The resulting executable can only be run on an UltraSPARC processor running a 64-bit enabled Solaris operating environment with the 64-bit kernel. -xarch=v9 is only available when compiling in a 64-bit enabled Solaris environment. v9a Compile for the SPARC-V9 ISA with UltraSPARC extensions. Adds to the SPARC-V9 ISA the Visual Instruc- tion Set (VIS) and extensions specific to UltraSPARC processors, and enables the com- piler to generate code for good performance on the V9 SPARC architecture. The resulting .o object files are in ELF64 format and can only be linked with other SPARC-V9 object files in the same format. The resulting exe- cutable can only be run on an UltraSPARC pro- cessor running a 64-bit enabled Solaris operating environment with the 64-bit kernel. -xarch=v9a is only available when compiling in a 64-bit enabled Solaris operating environment. Last change: 2001/04/27 41 User Commands F95(1) v9b Compile for the SPARC-V9 ISA with UltraSPARC III extensions. Adds UltraSPARC III extensions and VIS ver- sion 2.0 to the V9a version of the SPARC-V9 ISA. Compiling with this option uses the best instruction set for good performance in a Solaris UltraSPARC III environment. The resulting object code is in SPARC-V9 ELF64 format and can only be linked with other SPARC-V9 object files in the same format. The resulting executable can only be run on an UltraSPARC III processor running a 64-bit enabled Solaris operating environment with the 64-bit kernel. -xarch=v9b is only available when compiling in a 64-bit enabled Solaris operating environment. Notes: o SPARC instruction set architectures V7, V8, and V8a are all upwardly binary compatible. o Object binary files (.o) compiled with v8plus and v8plusa can be linked and can execute together, but only on a SPARC V8plusa compatible platform. o Object binary files (.o) compiled with v8plus, v8plusa, and v8plusb can be linked and can execute together, but only on a SPARC V8plusb compatible platform. o -xarch values v9, v9a, and v9b are only available on UltraSPARC 64-bit Solaris environments. o Object binary files (.o) compiled with v9 and v9a can be linked and can execute together, but will run only on a SPARC V9a compatible platform. o Object binary files (.o) compiled with v9, v9a, and v9b can be linked and can execute together, but will run only on a SPARC V9b compatible platform. For any particular choice, the generated executable may run much more slowly on earlier architectures. Also, although quad-precision (REAL*16 and long dou- ble) floating-point instructions are available in many of these instruction set architectures, the Last change: 2001/04/27 42 User Commands F95(1) compiler does not use these instructions in the code it generates. Defaults: If -xarch=isa is not specified, -xarch=generic is assumed. Interactions: Although this option can be used alone, it is part of the expansion of the -xtarget option and may be used to override the -xarch value that is set by a specific -xtarget option. For example, -xtarget=ultra2 expands to -xarch=v8 -xchip=ultra2 -xcache=16/32/1:512/64/1. In the following command -xarch=v8plusb overrides the -xarch=v8 that is set by the expansion of -xtarget=ultra2. example% f95 -xtarget=ultra2 -xarch=v8plusb ... Warnings: If this option is used with optimization, the appropriate choice can provide good performance of the executable on the specified architecture. An inappropriate choice, however, might result in seri- ous degradation of performance or in in a binary pro- gram that is not executable on all intended target platforms. -xautopar Synonym for -autopar -xcache=_c Define cache for optimizer Define cache properties for use by optimizer. _c must be one of the following: o generic o native o _s_1/_l_1/_a_1 o _s_1/_l_1/_a_1:_s_2/_l_2/_a_2 o _s_1/_l_1/_a_1:_s_2/_l_2/_a_2:_s_3/_l_3/_a_3 Last change: 2001/04/27 43 User Commands F95(1) The _s_i, _l_i, and _a_i, are defined as follows: _s_i The size of the data cache at level _i, in kilobytes _l_i The line size of the data cache at level _i, in bytes _a_i The associativity of the data cache at level _i This option specifies the cache properties that the optimizer can use. It does not guarantee that any par- ticular cache property is used. Although this option can be used alone, it is part of the expansion of the -xtarget option; its primary use is to override a value supplied by the -xtarget option. The -xcache values are: generic Define the cache properties for good performance on most SPARC platforms. This is the default. native Define the cache properties for good performance on this host platform. _s_1/_l_1/_a_1 Define level 1 cache properties. _s_1/_l_1/_a_1:_s_2/_l_2/_a_2 Define levels 1 and 2 cache properties. _s_1/_l_1/_a_1:_s_2/_l_2/_a_2:_s_3/_l_3/_a_3 Define levels 1, 2, and 3 cache properties. -xcg89 Synonym for -cg89. -xcg92 Synonym for -cg92. -xchip=_c Specify target processor for optimizer. Specify the target processor for use by the optimizer. _c must be one of the following, depending on platform. On SPARC platforms: generic, native, old, super, Last change: 2001/04/27 44 User Commands F95(1) super2, micro, micro2, hyper, hyper2, powerup, ultra, ultra2, ultra2e, ultra2i, ultra3. This option specifies timing properties by specifying the target processor. Although this option can be used alone, it is part of the expansion of the -xtarget option; its primary use is to override a value supplied by the -xtarget option. Some effects are: o The ordering of instructions, that is, scheduling o The way the compiler uses branches o The instructions to use in cases where semantically equivalent alternatives are available The -xchip values on SPARC are: generic Optimize for good performance on most 32-bit SPARC platforms. native Optimize for good performance on this 32-bit host platform. old Optimize for processors older than SuperSPARC(TM). super Optimize for the SuperSPARC chip. super2 Optimize for the SuperSPARC II chip. micro Optimize for the MicroSPARC(TM) chip. micro2 Optimize for the MicroSPARC II chip. hyper Optimize for the HyperSPARC(TM) chip. hyper2 Optimize for the HyperSPARC II chip. powerup Optimize for the Weitek(R) PowerUp(TM) chip. ultra Optimize for the UltraSPARC(TM) chip. ultra2 Optimize for the UltraSPARC II chip. ultra2i Optimize for the UltraSPARC IIi chip. ultra3 Optimize for the UltraSPARC III chip. Last change: 2001/04/27 45 User Commands F95(1) For complete information, see the _F_o_r_t_r_a_n _U_s_e_r'_s _G_u_i_d_e -xcode=v Specify code address space The following values for -xcode are: abs32 Generate 32-bit absolute addresses. Code + data + bss size is limited to 2**32 bytes. This is the default on 32-bit architec- tures: arch=generic,v7,v8,v8a,v8plus,v8plusa abs44 Generate 44-bit absolute addresses. Code + data + bss size is limited to 2**44 bytes. Available only on 64-bit architectures: -xarch=v9,v9a,v9b abs64 Generate 64-bit absolute addresses. Available only on 64-bit architectures: -xarch=v9,v9a,v9b pic13 Generate position-independent code (small model). Equivalent to -pic. Permits references to at most 2**11 unique external symbols on 32-bit architectures, 2**10 on 64-bit. pic32 Generate position-independent code (large model). Equivalent to -PIC. Permits references to at most 2**30 unique external symbols on 32-bit architectures, 2**29 on 64-bit. The default is -xcode=abs32 for SPARC V8 and V7. The default is -xcode=abs64 for SPARC and UltraSPARC V9 (with -xarch=v9,v9a,v9b). When building shared dynamic libraries with -xarch=v9 (or v9a or v9b) 64-bit Solaris environment, the -xcode=pic13 or pic32 (or -pic or -PIC) option MUST be specified. -xcommonchk[={yes|no}] Enable runtime checking of common block Last change: 2001/04/27 46 User Commands F95(1) inconsistencies. This option is provided as a debugging aid for programs using task common and parallelization (-explicitpar or -parallel). (See the _t_a_s_k _c_o_m_m_o_n pragma.) By default, runtime checking for inconsistent task com- mon declarations is disabled. Compiling with -xcommonchk=yes will enable this runtime check when the program is executed. If a common block is declared in one source module as a regular common block, and some- where else appears in a task common pragma, the program will stop and a message pointing to the first such inconsistency issued. Because the runtime check invoked by this option will degrade program performance, it should only be used during program development and debugging. Specifying -xcommoncheck alone is equivalent to -xcommoncheck=yes -xcrossfile[=_n] Enable optimization and inlining across source files (_S_P_A_R_C _O_n_l_y). If specified, _n may be 0, or 1. Normally, the scope of the compiler's analysis is lim- ited to each separate file on the command line. For example, -O4's automatic inlining is limited to subpro- grams defined and referenced within the same source file. With -xcrossfile, the compiler analyzes all the files named on the command line as if they had been con- catenated into a single source file. -xcrossfile is only effective when used with -O4 or -O5. The files produced from this compilation are inter- dependent (due to possible inlining) must be used as a unit when linking into a program. If any one routine is changed and the files recompiled, they must all be recompiled. As a result, use of this option will affect how makefiles are constructed. The default, if not specified on the command line, is Last change: 2001/04/27 47 User Commands F95(1) -xcrossfile=0 and no cross file optimizations are per- formed. -xcrossfile is equivalent to -xcrossfile=1. -xdepend Synonym for -depend -xexplicitpar Synonym for -explicitpar -xF Allow function-level reordering by the Sun WorkShop Analyzer Allow the reordering of functions (subprograms) in the core image using the compiler, the Analyzer and the linker. If you compile with the -xF option, then run the Analyzer, you can generate a map file that optim- izes the ordering of the functions in memory depending on how they are used together. A subsequent link to build the executable file can be directed to use that map by using the linker -Mmapfile option. It places each function from the executable file into a separate section. Reordering the subprograms in memory is useful only when the application text page fault time is consuming a large percentage of the application time. Otherwise, reordering may not improve the overall performance of the application. The Analyzer is part of the Sun WorkShop. See the _A_n_a_l_y_z_i_n_g _P_r_o_g_r_a_m _P_e_r_f_o_r_m_a_n_c_e _W_i_t_h _S_u_n _W_o_r_k_S_h_o_p manual for further information on the analyzer. -xhasc[={yes|no}] Treat Hollerith constant as character string in actual argument lists. With -xhasc=yes the compilers treat as character strings Hollerith constants appearing as an actual argument in a subprogram call. This is the default and complies with the Fortran 77 standard. With -xhasc=no Hollerith constants are treated as type- less values in subprogram call lists. This flag is provided to aid porting older Fortran pro- grams. Compile routines calling subprograms with Last change: 2001/04/27 48 User Commands F95(1) Hollerith constants with -xhasc=no if the called sub- program expects that argument as INTEGER or any other type other than CHARACTER. -xhelp=_h Show options summary or README file. _h is either readme or flags. readme: Show the online README file. flags: Show the compiler flags (options). -xhelp=flags is a synonym for -help. -xia[=widestneed|strict] Enable interval arithmetic extensions and set a suit- able floating-point environment. Interval arithmetic is an extension to the numerical computation techniques in Fortran 95. For further information, see the Fortran 95 documentation. -xia is a macro flag that expands as follows: -xia and -xia=widestneed expand to: -xinterval=widestneed -ftrap=%none -fns=no -fsimple=0 -xia=strict expands to: -xinterval=strict -ftrap=%none -fns=no -fsimple=0 -xildoff Turn off Incremental Linker This forces the use of the standard linker, ld. This option is the default if you do _n_o_t use -g. It is also the default if you use -G or name any source file on the command line. Override this default by using -xildon. -xildon Turn on Incremental Linker Turn on the Incremental Linker and force the use of ild in incremental mode. Last change: 2001/04/27 49 User Commands F95(1) This option is the default if you use -g, and do _n_o_t use -G, and do _n_o_t name any source file on the command line. Override this default by using -xildoff. -xinline=_r_l Synonym for -inline=_r_l. -xinterval[=no|widestneed|strict] Enable processing of interval arithmetic extensions. Interval arithmetic is an extension to the numerical computation techniques in Fortran 95. For further information, see the Fortran 95 documentation. This flag controls the expression evaluation syntax permitted. -xinterval specified without a value defaults to widestneed. no Interval arithmetic is not enabled. widestneed Promotes all non-interval variables and literals in any mixed-mode expression to the widest interval data type in the expression. strict Prohibits mixed-type or mixed-length interval expres- sions. All interval type and length conversions must be explicit. -xipo[={1|0}] Perform interprocedural optimizations. Invoke interprocedural analysis pass to perform whole- program optimizations. Unlike -xcrossfile, -xipo optim- izes across all object files in the link step, and is not limited to just the source files on the compile command. Last change: 2001/04/27 50 User Commands F95(1) Analysis and optimization is limited to object files compiled with -xipo. -xipo=0 disables, and -xipo=1 enables, interprocedural analysis. The default is -xipo=0 If specifed without a value, -xipo=1 is assumed. When compiling and linking in separate steps, you must specify -xipo in both steps to be effective. Libraries, even if compiled with -xipo do not partici- pate in crossfile interprocedural analysis. Additional information about -xipo: Requires at least optimization level -xO4 Do not use with -xcrossfile. If used together a compilation error will result. Objects compiled without -xipo can be linked freely with objects not compiled with this flag. In this release of the compilers, crossfile subprogram inlining is the only interprocedural optimization per- formed by -xipo See the _F_o_r_t_r_a_n _U_s_e_r'_s _G_u_i_d_e for more details. -xlang=_l_a_n_g_u_a_g_e[,_l_a_n_g_u_a_g_e] Include the appropriate runtime libraries and insure the proper runtime environment for the specified language. _l_a_n_g_u_a_g_e can only be f77. Interactions: The option -xlang=f77 implies linking with the f77compat library, and is a shorthand way for linking Fortran 95 object files with Fortran 77 object files. Using -xlang=f77 insures the proper runtime environ- ment. Warnings: Do not use -xnolib with -xlang. If you are mixing Fortran object files with C++, link with the C++ compiler and specify -xlang=f95. If you are mixing parallel Fortran objects with C++ Last change: 2001/04/27 51 User Commands F95(1) objects, the link line must specify the -mt flag. -xlibmil Synonym for -libmil. -xlibmopt Use library of optimized math routines Use a library of selected math routines optimized for performance. This option usually generates faster code. It may produce slightly different results; if so, they usually differ in the last bit. The order on the command line for this library option is not signifi- cant. -xlicinfo Show license server user IDs. Return license information about the licensing system. In particular, return the name of the license server and the IDs of users who have obtained licenses. Generally, with this option, no compilation is done, and a license is not checked out. If a conflicting option is used, then the latest one on the command line takes precedence, and a warning is issued. -xlic_lib=sunperf Link with the Sun Performance Library Example: f95 -o pgx -fast -pgx.f -xlic_lib=sunperf As with -l it should appear after all source and object file names on the command line. This option must be used to link with the Sun Performance Library. -xloopinfo Synonym for -loopinfo -xmaxopt[=_n] Enable optimization pragma and set maximum optimization level. Limits the optimization level specified by a C$PRAGMA SUN OPT=m directive to _n. When a directive specifying Last change: 2001/04/27 52 User Commands F95(1) a level m greater than _n on the -xmaxopt flag appears, the compiler will use _n. The value corresponds to the values 1 through 5 of the -O optimization level flag. The value of _n must be greater or equal to the value of highest optimization level specified by other options. So, for example: f95 ... -O3 -xmaxopt=4 would be appropriate. The flag -xmaxopt by itself defaults to -xmaxopt=5 -xmemalign[=<_a><_b>] Specify maximum assumed memory alignment and behavior of misaligned data accesses. For memory accesses where the alignment is determinable at compile time, the compiler will generate the appropriate load/store instruction sequence for that alignment of data. For memory accesses where the alignment cannot be determined at compile time, the compiler must assume an alignment to generate the needed load/store sequence. The -xmemalign flag allows the user to specify the max- imum memory alignment of data to be assumed by the com- piler in these indeterminable situations. It also specifies the error behavior to be followed at run-time when a misaligned memory access does take place. VALUES: If a value is specified, it must consist of two parts: a numerical alignment value, <_a>, and an alphabetic behavior flag, <_b>. Allowed values for alignment, <_a> are: 1 Assume at most 1 byte alignment. 2 Assume at most 2 byte alignment. 4 Assume at most 4 byte alignment. 8 Assume at most 8 byte alignment. 16 Assume at most 16 byte alignment. Allowed values for behavior, <_b> are: i Interpret access and continue execution. s Raise signal SIGBUS. Last change: 2001/04/27 53 User Commands F95(1) f Raise signal SIGBUS for alignments less than or equal to 4, otherwise interpret access and con- tinue execution. DEFAULTS: The first default, which applies when no -xmemalign flag appears, is: -xmemalign=4s for -xarch=generic,v7,v8,v8a,v8plus,v8plusa -xmemalign=8s for -xarch=v9,v9a for C and C++ -xmemalign=8f for -xarch=v9,v9a for Fortran The second default, which applies when -xmemalign appears but without a value, is: -xmemalign=1i for all platforms -xnolib Synonym for -nolib. -xnolibmil Synonym for -nolibmil. -xnolibmopt Cancel -xlibmopt Use with -fast to cancel linking with the optimized math library. -xO[_n] Synonym for -O[_n]. -xopenmp Synonym for -openmp -xpad Synonym for -pad -xparallel Synonym for -parallel -xpg Synonym for -pg. Last change: 2001/04/27 54 User Commands F95(1) -xpp=_p Select source file preprocessor. _p is either fpp or cpp. Selects the source file preprocessor to be used with .F files. The default is fpp, which is appropriate for Fortran. Previous ver- sions of the compiler used cpp, the standard C language preprocessor. To select cpp, specify -xpp=cpp. -xprefetch[=_a[,_a]] Enable and adjust prefetch instructions on those archi- tectures that support prefetch, such as UltraSPARC II (-xarch=v8plus, v8plusa, v8plusb, v9, v9a, or v9b) _a must be one of the following values. Value Meaning auto Enable automatic generation of prefetch instructions. no%auto Disable automatic generation explicit Enable explicit prefetch macros no%explicit Disable explicit prefectch macros. latx:_f_a_c_t_o_r Adjust the compiler's assumed prefetch- to-load and prefetch-to-store latencies by the specified factor. The factor must be a positive floating-point or integer number. The prefetch latency is the hardware delay between the execution of a pre- fetch instruction and the time the data being prefetched is available in the cache. The compiler assumes a prefetch latency value when determining how far apart to place a prefetch instruction and the load or store instruction that uses the prefetched data. Note - the assumed latency between a prefetch and a load may not be the same as the assumed Last change: 2001/04/27 55 User Commands F95(1) latency between a prefetch and a store. The compiler tunes the prefetch mechan- ism for optimal performance across a wide range of machines and applications. This tuning may not always be optimal. For memory-intensive applications, espe- cially applications intended to run on large multiprocessors, you may be able to obtain better performance by increas- ing the prefetch latency values. To increase the values, use a _f_a_c_t_o_r that is greater than 1 (one). A value between .5 and 2.0 will most likely pro- vide the maximum performance. For applications with datasets that reside entrely within the external cache, you may be able to obtain better performance by decreasing the prefetch latency values. To decrease the values, use a _f_a_c_t_o_r that is less than one. To use the latx:_f_a_c_t_o_r suboption, start with a _f_a_c_t_o_r value near 1.0 and run performance tests against the applica- tion. Then increase or decrease the fac- tor, as appropriate, and run the perfor- mance tests again. Continue adjusting the factor and running the performance tests until you achieve optimum perfor- mance. When you increase or decrease the factor in small steps, you will see no performance difference for a few steps, then a sudden difference, then it will level off again. yes Same as -xprefetch=auto,explicit. no Same as -xprefetch=no%auto,no%explicit. With -xprefetch, -xprefetch=auto, and -xprefetch=yes, the compiler is free to insert prefetch instructions into the code it generates. This may result in a per- formance improvement on architectures that support pre- fetch. Defaults: If -xprefetch is not specified, -xprefetch=no%auto,explicit is assumed. Last change: 2001/04/27 56 User Commands F95(1) If only -xprefetch is specified, -xprefetch=auto,explicit is assumed. The default of no%auto is assumed unless explicitly overridden with the use of -xprefetch without any argu- ments or with an argument of auto or yes. For example, -xprefetch=explicit is the same as -xprefetch=explicit,no%auto. The default of explicit is assumed unless explicitly overriden with no%explicit or no. For example, -xprefetch=auto is the same as -xprefetch=auto,explicit. If automatic prefetching is enabled, such as with -xprefetch or -xprefetch=yes, but a latency factor is not specified, then latx:1.0 is assumed. Interactions: With -xprefetch=explicit, the compiler will recognize the directives: $PRAGMA SPARC_PREFETCH_READ_ONCE (_a_d_d_r_e_s_s) $PRAGMA SPARC_PREFETCH_READ_MANY (_a_d_d_r_e_s_s) $PRAGMA SPARC_PREFETCH_WRITE_ONCE (_a_d_d_r_e_s_s) $PRAGMA SPARC_PREFETCH_WRITE_MANY (_a_d_d_r_e_s_s) The -xchip setting effects the determination of the assumed latencies and therefore the result of a latx:_f_a_c_t_o_r setting. The latx:_f_a_c_t_o_r suboption is valid only when automatic prefetching is enabled. That is, latx:_f_a_c_t_o_r is ignored unless it is used in conjunction with yes or auto. Warnings: Explicit prefetching should only be used under special circumstances that are supported by measurements. Because the compiler tunes the prefetch mechanism for optimal performance across a wide range of machines and applications, you should only use the latx:_f_a_c_t_o_r suboption when the performance tests indicate there is a clear benefit. The assumed prefetch latencies may change from release to release. Therefore, retesting the effect of the latency factor on performance when- ever switching to a different release is highly recom- mended. -xprofile=_p Collect or optimize with runtime profiling data Last change: 2001/04/27 57 User Commands F95(1) Collect and save execution frequency data during execu- tion; then use the data in subsequent runs to improve performance. _p must be collect[:_n_m], use[:_n_m], or tcov. If compilation and linking are performed in separate steps, the same -xprofile option must appear on the compile as well as the link step. collect[:_n_m] Collect and save execution frequency data for later use by the optimizer with -xprofile=use. The compiler generates code to measure state- ment execution frequency. _n_m is the name of the program that is being analyzed. This name is optional. If not speci- fied, a.out is assumed to be the name of the executable. At runtime a program compiled with - xprofile=collect:_n_m will create the subdirec- tory _n_m.profile to hold the runtime feedback information. Data is written to the file feed- back in this subdirectory. If you run the pro- gram several times, the execution frequency data accumulates in the feedback file; that is, output from prior runs is not lost. Set the environment variables SUN_PROFDATA and SUN_PROFDATA_DIR to control where the program writes its runtime profile data. If set, the program writes to $SUN_PROFDATA_DIR/$SUN_PROFDATA in the current directory, instead of _n_m.profile/feedback. use[:_n_m] Use execution frequency data to optimize stra- tegically. As with collect:_n_m, the _n_m is optional and may be used to specify the name of the program. The program is optimized by using the execu- tion frequency data previously generated and saved in the feedback files written by a pre- vious execution of the program compiled with -xprofile=collect. The source files and other compiler options must be exactly the same as used for the Last change: 2001/04/27 58 User Commands F95(1) compilation that created the compiled program that generated the feedback file. If compiled with -xprofile=collect:_n_m, the same program name nm must appear in the optimizing compila- tion: -xprofile=use:_n_m. tcov Basic block coverage analysis using "new" style tcov(1). Code instrumentation is similar to that of -a, but .d files are no longer generated for each source file. Instead, a single file is gen- erated, whose name is based on the name of the final executable. For example, if stuff is the executable file, then stuff.profile/tcovd is the data file. When running tcov you must pass it the -x option to make it use the new style of data. If not, tcov uses the old .d files, if any, by default for data, and produces unexpected out- put. Unlike -a, the TCOVDIR environment variable has no effect at compile-time. However, its value is used at program runtime to identify where to create the profile subdirectory. Note - The report produced by tcov can be unreliable if there is inlining of subprograms due to -O4 or -inline. Coverage of calls to routines that have been inlined is not recorded. -xrecursive Allow routines without RECURSIVE attribute to call themselves recursively. Normally, only subprograms defined with the RECURSIVE attribute can call themselves recursively. Compiling subprograms with -xrecursive enables them to call themselves recursively even if they are not defined with the attribute RECURSIVE. Compiling routines with -xrecursive may cause perfor- mance degradations. Also, this flag does not cause local variables to be allocated on the stack. Consider using -stackvar with -xrecursive -xreduction Last change: 2001/04/27 59 User Commands F95(1) Synonym for -reduction -xregs=_r Specify register usage (_S_P_A_R_C _O_n_l_y). Specify usage of registers in generated code. _r is a comma-separated list of one or more of the fol- lowing: [no%]appl, [no%]float. Example: -xregs=appl,no%float The -xregs values are for specific -xarch values): appl Allow using registers g2, g3, and g4. (v8, v8a) Allow using registers g2, g3, and g4. (v8plus, v8plusa) Allow using registers g2, g3. (v9, v9a) no%appl Do not use appl registers. float Allow using floating-point registers as speci- fied in the SPARC ABI. no%float Do not use floating-point registers. The default is: -xregs=appl,float. -xs Allow debugging by dbx without .o files. With -xs, if you move executables to another directory, then you can use dbx and ignore the object (.o) files. Use this option in case you cannot keep the .o files around. This option reverts to implementing symbol tables as implemented in release 1.4 and earlier. For this older way, if you move the executables, you must also move the source files, but you can ignore the object files. Also, the loader links more slowly, and dbx initializes more slowly. For comparison, with the newer way, which is now the default, the loader links faster, and dbx initial- izes faster. If you move the executables, you must move both the source files and the object ( .o ) files, or set the path with the dbx pathmap or use command. This option passes the -s option to the assembler. Last change: 2001/04/27 60 User Commands F95(1) -xsafe=mem Allow the compiler to assume that no memory protection violations occur. This option allows the compiler to use the non-faulting load instruction in the SPARC V9 architecture. Warnings: Because non-faulting loads do not cause a trap when a fault such as address misalignment or segmentation vio- lation occurs, you should use this option only for pro- grams in which such faults cannot occur. Because few programs incur memory-based traps, you can safely use this option for most programs. Do not use this option for programs that explicitly depend on memory-based traps to handle exceptional conditions. Interactions: This option takes effect only when used with optimiza- tion level -xO5 and one of the following -xarch values: v8plus, v8plusa, v8plusb, v9, v9a, or v9b. -xsb Synonym for -sb. -xsbfast Synonym for -sbfast. -xspace Do not increase code size Do no optimizations that increase the code size. Example: Do not unroll loops. -xtarget=_t Specify system for optimization Specify the target system for the instruction set and optimization. _t must be one of: native, native64, generic, generic64, _s_y_s_t_e_m-_n_a_m_e. The -xtarget option permits a quick and easy specifica- tion of the -xarch, -xchip, and -xcache combinations that occur on real systems. The only meaning of -xtarget Last change: 2001/04/27 61 User Commands F95(1) is in its expansion. The -xtarget values are: native: Get the best performance on the host system (32-bit architecture): -xarch=native -xchip=native -xcache=native native64: Get the best performance on the host system (64-bit architecture): -xarch=native64 -xchip=native64 -xcache=native generic: Get the best performance for most 32-bit plat- forms This is the default and is equivalent to: -xarch=generic -xchip=generic -xcache=generic generic64: Get the best performance for most 64-bit platforms This is equivalent to: -xarch=generic64 -xchip=generic64 -xcache=generic _s_y_s_t_e_m-_n_a_m_e: Get the best performance for the specified system. Valid system names on SPARC are: sun4/15, sun4/20, sun4/25, sun4/30, sun4/40, sun4/50, sun4/60, sun4/65, sun4/75, sun4/110, sun4/150, sun4/260, sun4/280, sun4/330, sun4/370, sun4/390, sun4/470, sun4/490, sun4/630, sun4/670, sun4/690, sselc, ssipc, ssipx, sslc, sslt, sslx, sslx2, ssslc, ss1, ss1plus, ss2, ss2p, ss4, ss4/85, ss4/110, ss5, ss5/85, ss5/110, ssvyger, ss10, ss10/hs11, ss10/hs12, ss10/hs14, ss10/20, ss10/hs21, ss10/hs22, ss10/30, ss10/40, ss10/41, ss10/50, ss10/51, ss10/61, ss10/71, ss10/402, ss10/412, ss10/512, ss10/514, ss10/612, ss10/712, ss20, ss20/hs11, ss20/hs12, ss20/hs14, ss20/hs21, ss20/hs22, ss20/50, ss20/51, ss20/61, ss20/71, ss20/151, ss20/152, ss20/502, ss20/512, /514, ss20/612, ss20/712, ss600/41, ss600/51, ss600/61, ss600/120, ss600/140, ss600/412, ss600/512, ss600/514, ss600/612, ss1000, sc2000, cs6400, solb5, solb6, ultra, ultra2, ultra2i, ultra1/140, ultra1/170, tra1/200, ultra2/1170, ultra2/1200, ultra2/1300, ultra2/2170, ultra2/2200, ultra2/2300, ultra2e, ultra2i, ultra3, entr2, entr2/1170, entr2/2170, entr2/1200, 200, entr150, entr3000, entr4000, entr5000, entr6000. Compiling for a 64-bit Solaris environment on SPARC or UltraSPARC V9 is indicated by the -xarch=v9 or -xarch=v9a flag. Setting -xtarget=ultra or ultra2 is not necessary or sufficient. If -xtarget is specified, the -xarch=v9 or v9a option must appear AFTER the -xtarget, as in: -xtarget=ultra2 ... -xarch=v9 otherwise the Last change: 2001/04/27 62 User Commands F95(1) -xtarget setting will revert -xarch to v8. See the Appendix in the _F_o_r_t_r_a_n _U_s_e_r'_s _G_u_i_d_e for the -xtarget expansions that show the mnemonic encodings of the actual system names and numbers. This option is a macro. Each specific value for -xtarget expands into a specific set of values for the -xarch, -xchip, and -xcache options. For example: -xtarget=sun4/15 is equivalent to: -xarch=v8a -xchip=micro -xcache=2/16/1 fpversion(1) can be used to see the -xtarget or -xarch, -xchip, and -xcache options equivalent to -xtarget=native on any system. -xtime Synonym for -time. -xtypemap=_s_p_e_c Specify default data mappings. This option provides a flexible way to specify the byte sizes for default data types. The syntax of the string _s_p_e_c is: _t_y_p_e:_b_i_t_s,_t_y_p_e:_b_i_t_s,... The allowable data types are REAL, DOUBLE, INTEGER. The data sizes accepted are 32, 64,and 128. This option applies to all variables declared without explicit byte sizes, as in REAL XYZ. The allowable combinations are: real:32 or real:64, double:64 or double:128, integer:32 or integer:64. A useful mapping is: -xtypemap=real:64,double:64:integer:64 which maps REAL and DOUBLE to 8 bytes, but does not pro- mote DOUBLE PRECISION to QUAD PRECISION. Note also that INTEGER and LOGICAL are treated the same, and COMPLEX is mapped as two REAL data elements. Also, Last change: 2001/04/27 63 User Commands F95(1) DOUBLE COMPLEX will be treated the way DOUBLE is mapped. For more information, see the _F_o_r_t_r_a_n _U_s_e_r'_s _G_u_i_d_e -xunroll=_n Synonym for -unroll=_n -xvector[={yes|no}] Enable automatic generation of calls to the vector library functions. -xvector=yes permits the compiler to transform math library calls within DO loops into single calls to the equivalent vector math routines when such transforma- tions are possible. This could result in a performance improvement for loops with large loop counts. The default if not specified is -xvector=no. Specifying -xvector is equivalent to -xvector=yes. This option also triggers -depend if -depend is not already specified prior to -xvector on the command line. However, -nodepend following -xvector on the command line will cancel the effect of -xvector. The compiler automatically informs the linker to include the libmvec and libc libraries in the load step. If com- piling and linking are done in separate commands, -xvec- tor must also appear on the linking f95 command. -ztext Make no library with relocations Do not make the library if relocations remain. The gen- eral purpose of -ztext is to verify that the generated library is pure text; instructions are all position- independent code. Therefore, it is generally used with both -G and -pic. With -ztext, if ld finds an incomplete relocation in the text segment, then it does not build the library. If it finds one in the data segment, then it generally builds the library anyway; the data segment is writable. Without -ztext, ld builds the library, relocations or not. A typical use is to make a library from both source Last change: 2001/04/27 64 User Commands F95(1) files and object files, where you do not know if the object files were made with -pic. Other arguments are taken to be either linker option argu- ments, or names of f95-compatible object programs, typically produced by an earlier run, or libraries of routines that are f95-compatible. These programs, together with the results of any compilations specified, are linked in the order given to produce an executable program in the file specified by the -o option, or in a file named a.out if the -o option is not specified. DIRECTIVES _G_e_n_e_r_a_l _D_i_r_e_c_t_i_v_e_s: f95 allows _g_e_n_e_r_a_l compiler directive lines starting with C$PRAGMA, !$PRAGMA, or *$PRAGMA, and any uppercase or lowercase is allowed. Examples: C$PRAGMA C( suba, subz) C$PRAGMA SUN UNROLL 2 C$PRAGMA WEAK FUNK C$PRAGMA SUN OPT=4 C$PRAGMA PIPELOOP=5 C$PRAGMA SPARC_PREFETCH_READ_ONCE (name) C$PRAGMA SPARC_PREFETCH_READ_MANY (name) C$PRAGMA SPARC_PREFETCH_WRITE_ONCE (name) C$PRAGMA SPARC_PREFETCH_WRITE_MANY (name) _P_a_r_a_l_l_e_l _D_i_r_e_c_t_i_v_e_s: f95 recognizes Sun-style _p_a_r_a_l_l_e_l com- piler directive lines starting with C$PAR, !$PAR, or *$PAR, and any uppercase or lowercase is allowed. Examples: C$PAR DOALL C$PAR DOSERIAL C$PAR DOSERIAL* C$PAR TASK COMMON Cray-style parallelization directives are also recognized. The directive sentinel is CMIC$ or !MIC$ See the _F_o_r_t_r_a_n _U_s_e_r'_s _G_u_i_d_e for details and variations. Last change: 2001/04/27 65 User Commands F95(1) ENVIRONMENT The paths shown below assume a standard installation of the Sun WorkShop Compilers to /_o_p_t/_S_U_N_W_s_p_r_o/. Contact your sys- tem administrator if your compilers were custom installed to some other directory path. PATH To use f95, add the following to the _s_t_a_r_t of the search path: /opt/SUNWspro/bin/ MANPATH To access the f95 man pages, add the following to the MAN- PATH environment variable: /opt/SUNWspro/man/ LD_LIBRARY_PATH Generally, you need not set up LD_LIBRARY_PATH. If you do need to do so, then maybe there is some discrepancy in the installation, or some executable has been built incorrectly. Set the LD_LIBRARY_PATH, environment variable to: /opt/SUNWspro/lib/ LD_LIBRARY_PATH_64 On Solaris 7, this environment variable is similar to LD_LIBRARY_PATH but overrides it when searching for 64-bit dependencies. When running Solaris 7 on a SPARC processor and linking in 32-bit mode, LD_LIBRARY_PATH_64 is ignored. If only LD_LIBRARY_PATH is defined, it us used for both 32-bit and 64-bit linking. If both LD_LIBRARY_PATH and LD_LIBRARY_PATH_64 are defined, the 32-bit linking will be done using LD_LIBRARY_PATH and the 64-bit linking using LD_LIBRARY_PATH_64. See _L_i_n_k_e_r _a_n_d _L_i_b_r_a_r_i_e_s _G_u_i_d_e for more information on these environment variables. LD_RUN_PATH If you use LD_RUN_PATH, note that for f95, LD_RUN_PATH is not identical with -R. (For ld.so, they are identical.) See -R, in the _F_o_r_t_r_a_n _U_s_e_r'_s _G_u_i_d_e, for details. Last change: 2001/04/27 66 User Commands F95(1) FILES Selected major files used by the compiler a.out Executable output file _f_i_l_e.a Library of object files _f_i_l_e.d Test coverage input file for tcov(1) _f_i_l_e.f FORTRAN source file _f_i_l_e.f95 Fortran 95 source file _f_i_l_e.F FORTRAN source file for fpp(1) _f_i_l_e.F90 Fortran 95 source file for fpp(1) _f_i_l_e.for FORTRAN source file _f_i_l_e.il In-line expansion file _f_i_l_e.o Object file _f_i_l_e.r Ratfor source file _f_i_l_e.s Assembler source file _f_i_l_e.S Assembler source for cpp(1) _f_i_l_e.tcov Output from tcov(1) /usr/lib/libc.a Standard C library, see intro(3) /usr/lib/libp/libc.a Profiling library, see intro(3) /tmp/* Compiler temporary files mon.out File produced for analysis by prof(1) gmon.out File produced for analysis by gprof(1) For the remaining files, if no absolute path is shown then they are in the following directory: /opt/SUNWspro/<_r_e_l_e_a_s_e>/ where <_r_e_l_e_a_s_e> varies with each release of Sun WorkShop. (See your systems administrator for details.) bin/fpp Fortran preprocessor bin/cpp C preprocessor include/f95 Path searched for f95 INCLUDE statement include/f95/f95_floatingpoint.h f95 IEEE arithmetic type definitions The following libraries exist in both .so and .a versions: lib/libfsu f95 support intrinsics lib/libfui f95 - UNIX interface lib/libfio Fortran 95 I/O lib/lib*fai Fortran 95 array intrinsics libraries lib/libifai Fortran 95 interval array intrinsics library Last change: 2001/04/27 67 User Commands F95(1) lib/libf77compat f77 I/O compatibility library /usr/lib/libm.a Math lib /usr/lib/libp/libm.a Math profile lib lib/libsunmath.a Sun value-added math lib lib/libsunimath.a Sun value-added interval math lib lib/libp/libsunmath.a Sun value-added math profile lib lib/libp/libsunimath.a Sun value-added interval math profile lib READMEs A number of README files provide valuable last-minute infor- mation on the compilers and libraries, including white papers. Of particular interest are: o fortran_95 o math_libraries o 64bit_Compilers The path to the READMEs directory is: /SUNWspro/READMEs/ where <_i_n_s_t_a_l_l__p_a_t_h> is usually /_o_p_t in a standard install. SEE ALSO asa(1), cc(1), dbx(1), fpp(1), fpr(1), fsplit(1), gprof(1), ild(1), ld(1), perror(3f), prof(1), tcov(1) _F_o_r_t_r_a_n _U_s_e_r'_s _G_u_i_d_e _F_o_r_t_r_a_n _P_r_o_g_r_a_m_m_i_n_g _G_u_i_d_e _N_u_m_e_r_i_c_a_l _C_o_m_p_u_t_a_t_i_o_n _G_u_i_d_e _S_u_n _P_e_r_f_o_r_m_a_n_c_e _L_i_b_r_a_r_y _U_s_e_r'_s _G_u_i_d_e _A_n_a_l_y_z_i_n_g _P_r_o_g_r_a_m _P_e_r_f_o_r_m_a_n_c_e _w_i_t_h _S_u_n _W_o_r_k_S_h_o_p _F_o_r_t_r_a_n _L_i_b_r_a_r_y _R_e_f_e_r_e_n_c_e _L_i_n_k_e_r _a_n_d _L_i_b_r_a_r_i_e_s _G_u_i_d_e (ld) _D_e_b_u_g_g_i_n_g _a _P_r_o_g_r_a_m _W_i_t_h _d_b_x _S_u_n _P_e_r_f_o_r_m_a_n_c_e _L_i_b_r_a_r_y: See the performance_library README file. This library is part of the Sun Performance WorkShop and contains subroutines and functions for operations in computational linear algebra and Fourier transforms. DIAGNOSTICS The diagnostics produced by f95 itself are intended to be self-explanatory. Occasional messages may be produced by the linker. When compiling within the Sun WorkShop "Building" Last change: 2001/04/27 68 User Commands F95(1) window, the compiler's diagnostic messages are hyper-linked to online help. Clicking on the message information icon launches a browser with additional information about the diagnostic. Last change: 2001/04/27 69