f90(1)
f90 - Invokes the MIPSpro Fortran 90 compiler
As shipped in MIPSpro 7.4.3m.
NAME f90 - Invokes the MIPSpro Fortran 90 compiler SYNOPSIS f90 [options] file.suffix ... DESCRIPTION This man page describes the f90(1) command which invokes the MIPSpro Fortran 90 compiler. Typically, the f90 command processes the input files named on the command line and generates a binary object file. The loader loads the binary object file and generates file a.out. Some f90(1) command options, for example, -LIST, -LNO, -MP, -OPT, -TARG, and -TENV, accept several suboptions and allow you to specify a setting for each argument. To specify multiple suboptions, either use colons to separate each suboption or specify multiple options on the command line. For example, the following command lines are equivalent: f90 -LIST:notes=ON:options=OFF b.f f90 -LIST:notes=ON -LIST:options=OFF b.f Some suboptions to options of this type are specified with a setting that will either enable or disable the feature. To enable a feature, specify the suboption either alone or with =1, =ON, or =TRUE. To disable a feature, specify the suboption with either =0, =OFF, or =FALSE. For example, the following command lines are equivalent: f90 -LNO:auto_dist:blocking=OFF:oinvar=FALSE a.f f90 -LNO:auto_dist=1:blocking=0:oinvar=OFF a.f For brevity, this man page shows only the ON or OFF settings to suboptions, but the compiler also accepts 0, 1, TRUE, and FALSE as settings. The f90 command accepts the following options: -64, -n32 Specifies the Application Binary Interface (ABI). Option Action -64 Generates 64-bit objects. -n32 Generates 32-bit objects. When in effect, the total memory allocation for a program and individual arrays cannot exceed 2 Gbytes. You can use the hinv(1M) command to determine your system's processor. The -64 and -n32 options can affect the Instruction Set Architecture (ISA) used during compilation. For more information on this interaction, see the -mipsn option. -alignn Aligns object on specified boundaries. The alignn specifications are as follows: Option Action -align32 Aligns objects 32 bits or larger on 32-bit boundaries. -align64 Aligns objects 64 bits or larger on 64-bit boundaries. Default. When an alignment is specified, objects smaller than the specification are aligned on boundaries that correspond to their sizes. For example, when align64 is specified, 32-bit and larger objects are aligned on 32-bit boundaries; 16-bit and larger objects are aligned on 16-bit boundaries; and 8-bit and larger objects are aligned on 8-bit boundaries. -ansi Causes the compiler to generate messages when it encounters source code that does not conform to the Fortran 90 standard. Specifying this option in conjunction with the -fullwarn option causes all messages, regardless of level, to be generated. If the SGI_CC environment variable is set to -ansi, then -ansi becomes the default behavior. -apo, -apokeep, -apolist Invokes the Auto-Parallelizing Option (APO), which automatically converts sequential code into parallel code by inserting parallel directives where it is safe and beneficial to do so. Specifying the -apo option invokes APO and sets the -mp option, which enables recognition of parallel directives inserted into your code. Specifying -apolist produces a parallelization listing, file.list. Specifying -apokeep specifies that file.anl and file.m should be retained after compilation. If -apokeep is specified in conjunction with -ipa or -IPA, the default settings for IPA suboptions are used (with the exception of the inline suboption, where the default becomes OFF). For more information about IPA, see the ipa(5) man page. APO is not invoked if you are not licensed for it. For licensing information, see your sales representative. For more information on APO, its directives, and these command line options, see the MIPSpro Fortran 90 Commands and Directives Reference Manual. -auto_use module_name[,module_name] ... Directs the compiler to behave as if a USE module_name statement were entered in your Fortran source code for each module_name. The USE statements are entered in every program unit and interface body in the source file being compiled (for example, f90 -auto_use mpi_interface or f90 -auto_use shmem_interface). -bigp_off Disables the use of large pages within the program. This is the default for all optimization levels except -Ofast. For more information, see the -bigp_on option. -bigp_on Enables the use of large pages within the program. After a program is compiled with this option, set the PAGESIZE_DATA, PAGESIZE_STACK, and PAGESIZE_TEXT environment variables to be one of the following values: 16, 256, 1024, 4096, or 16384. These values represent the size, in kilobytes, of the pages you wish to use. If these environment variables are not set, by default, your program uses 16KB pages. This option is enabled when -Ofast is also specified. For more information, see the -bigp_off option. -c Disables the load step and writes the binary object file to file.o. -C, -check_bounds Performs runtime subscript range checking. Subscripts that are out of range cause fatal run time errors. If you set the F90_BOUNDS_CHECK_ABORT environment variable to YES, the program aborts. These options are equivalent to the -DEBUG:subscript_check option. For more information about that option, see debug_group(5). -chunk=integer When compiling a multitasked program, this option specifies the number of loop iterations per chunk. For scheduling purposes, the iterations of a loop are broken up into pieces. This option must be specified in conjunction with the -mp option. Specify a nonzero, unsigned, positive integer for integer. -cif Generates a compiler information file (CIF) for use by the programming tools. -coln Specifies the line width for fixed-format source lines. Specify 72, 80, or 120 for n. By default, fixed-format lines are 72 characters wide. Specifying -col120 implies -extend_source and recognizes lines up to 132 characters wide. For more information on specifying line length, see the -extend_source and -noextend_source options. -cord Runs the procedure rearranger, cord(1), on the resulting file after loading. The rearrangement is done to to reduce virtual memory paging and/or instruction cache misses. For more information on procedure rearranging, see the cord(1), pixie(1), and prof(1) man pages. -cpp Runs a nondefault preprocessor, cpp(1), on all input source files, regardless of suffix, before compiling. This preprocessor automatically expands macros outside of preprocessor statements. The default is to run the Fortran preprocessor if the input file ends in a .F or .F90 suffix. For more information on controlling preprocessing, see the -ftpp, -E, -EP, and -nocpp options. For information on enabling macro expansion, see the -macro_expand option. By default, no preprocessing is performed on files that end in a .f or .f90 suffix. -dn Specifies the kind specification used for objects declared DOUBLE COMPLEX and DOUBLE PRECISION. Option Kind value -d8 Uses REAL(KIND=8) for objects declared as DOUBLE PRECISION. Uses COMPLEX(KIND=8) for objects declared DOUBLE COMPLEX. Default. -d10 Uses REAL(KIND=10) for objects declared as DOUBLE PRECISION. Uses COMPLEX(KIND=10) for objects declared DOUBLE COMPLEX. -d16 Uses REAL(KIND=16) for objects declared as DOUBLE PRECISION. Uses COMPLEX(KIND=16) for objects declared DOUBLE COMPLEX. -Dvar=[def][,var=[def] ...] Defines variables used for source preprocessing as if they had been defined by a #define directive. If no def is specified, 1 is used. For information on undefining variables, see the -Uvar option. -DEBUG: ... Controls the compiler's attempts to detect various errors (at compile time or run time) and controls how the errors are reported. In addition, some options can save space. For more information on the debugging options, see the debug_group(5) man page. -default64 Sets the sizes of default integer, real, logical, and double precision objects. This option causes the following options to go into effect: -r8, -i8, -d16, and -64. Some separately released library packages (for example, the SGI Message Passing Toolkit), have interfaces that require the use of SGI-default data sizes and are not usable with the default64 compiler option. -E Runs only the source preprocessor files, without considering suffixes, and writes the result to stdout. This option overrides the -nocpp option. The output file contains line directives. To generate an output file without line directives, see the -EP option. For more information on controlling source preprocessing, see the -cpp, -ftpp, -macro_expand, and -nocpp options. -EP Runs only the source preprocessor files, without considering suffixes, and writes the result to stdout. This option overrides the -nocpp option. The output does not contain line directives. The output is the same as -E -P except that it writes the output to stdout rather than to <file>.i. -extend_source Specifies a 132-character line length for fixed-format source lines. By default, fixed-format lines are 72 characters wide. For more information on controlling line length, see the -coln option -fbfile Specifies the feedback file to be used. This file (with the suffix .cfb) can be produced by prof(1) with its -feedback option from one or more .Counts files generated by the execution of the instrumented program produced by pixie(1). -fb_create path Generates an instrumented executable program. Such an executable is suitable for producing one or more .instr files for subsequent feedback compilation. When the -c option is used to produce an object file that is eventually linked to form an instrumented executable, the -fb_create option should also be specified. The executable is instrumented with special instructions that generate information that the compiler can use to better optimize your program. When this instrumented executable is run (usually with a representative training inputset) that information is stored in a file called a.out.instr.pid in the directory that you specified by path. The path should be a complete path that also includes the name of the executable. For example, /tmp/fbdir/a.out produces a file called /tmp/fbdir/a.out.instr.pid, where pid is the process id of the invocation of your intrumented program run with a training input. -fb_opt path Specifies the directory that contains the instrumentation output generated by compiling with -fb_create and then running your program with a training inputset. Directs the compiler to use this information to better optimize the program. When the -c option is used to produce an object file that is eventually linked to form an instrumented executable, the -fb_opt option should also be specified. -fixedform Treats all input source files, regardless of suffix, as if they were written in fixed source form. By default, only input files suffixed with .f or .F are assumed to be written in fixed source form. -flist Invokes all Fortran listing control options. The effect is the same as if all -FLIST options are enabled. -FLIST: ... Invokes the Fortran listing control group, which controls production of the compiler's internal program representation back into Fortran code, after IPA inlining and loop-nest transformations. This is used primarily as a diagnostic tool, and the generated Fortran code may not always compile. The arguments to the -FLIST option are as follows: Argument Action =setting Enables or disables the listing. setting can be either ON or OFF. The default is OFF. This option is enabled when any other -FLIST options are enabled, but it can also be used to enable a listing when no other options are enabled. ansi_format=setting Sets ANSI format. setting can be either ON or OFF. When set to ON, the compiler uses a space (instead of tab) for indentation and a maximum of 72 characters per line. The default is OFF. emit_pfetch=setting Writes prefetch information, as comments, in the transformed source file. setting can be either ON or OFF. The default is OFF. In the listing, PREFETCH identifies a prefetch and includes the variable reference (with an offset in bytes), an indication of read/write, a stride for each dimension, and a number in the range from 1 (low) to 3 (high), which reflects the confidence in the prefetch analysis. prefetch identifies the reference(s) being prefetched by the PREFETCH descriptor. The comments occur after a read/write to a variable and note the identifier of the PREFETCH-spec for each level of the cache. emit_omp=setting Controls whether or not code written to listings and intermediate files is written using OpenMP Fortran API directives. setting can be either ON or OFF. The default is ON. When ON is in effect, which is the default, all generated files are written using OpenMP directives. When OFF is in effect, all generated files are written using the outmoded MIPS multiprocessing directives. ftn_file=file Writes the program to file. By default, the program is written to file.w2f.f. linelength=n Sets the maximum line length to n characters. show=setting Writes the input and output filenames to stderr. setting can be either ON or OFF. The default is ON. -freeform Treats all input source files, regardless of suffix, as if they were written in free source form. By default, only input files suffixed with .f90 or .F90 are assumed to be written in free source form. -ftpp Runs the Fortran source preprocessor on input Fortran source files that are suffixed with .f or .f90 before compiling. By default, only files suffixed with .F or .F90 are run through the Fortran source preprocessor. The Fortran source preprocessor does not automatically expand macros outside of preprocessor statements, so you need to specify -macro_expand if you want macros expanded. For more information on controlling preprocessing, see the -cpp, -E, and -nocpp options. For information on enabling macro expansion, see the -macro_expand option. For more information on the Fortran source preprocessor, see the MIPSpro Fortran 90 Commands and Directives Reference Manual. -fullwarn Requests that the compiler generate comment-level messages. These messages are suppressed by default. Specifying this option can be useful during software development. -Gnum Specifies the maximum size, in bytes, of a data item that is to be accessed from the global pointer (GP). num must a decimal number. If num is 0, no data is accessed. The default value for num is 8 bytes. Data stored relative to the GP can be accessed by the program quickly, but this space is limited. Large programs can overflow the space accessed by the GP at load time. If the loader gives the Bad -G num value error message, recompile the program with G0. Use the same value for this option or for compiling all files that comprise a program executable or DSO. -gdebug_lvl Generates debugging information and establishes a debugging level. Specify one of the following for debug_lvl: Option Support -g0 No debugging information produced. Default. -g2, -g Information for symbolic debugging is produced and optimization is disabled. -g3 Information for symbolic debugging of fully optimized code is produced. The debugging information produced may be inaccurate. This option can be used in conjunction with the -O, -O1, -O2, and -O3 options. -help Lists all available options. The compiler is not invoked. -in Specifies the length of default integer constants, default integer variables, and logical quantities. Specify one of the following: Option Action -i4 Specifies 32-bit (4 byte-) objects. Default. -i8 Specifies 64-bit (8 byte-) objects. -Idir Specifies a directory to be searched. This is used for the following types of files: * Files named in INCLUDE lines in the Fortran source file that do not begin with a slash (/) character * Files named in #include source preprocessing directives that do not begin with a slash (/) character * Files specified on USE statements Files are searched in the following order: first, in the directory that contains the input file; second, in the directories specified by dir; and third, in the standard directory, /usr/include. -INLINE: ... Specifies actions for the standalone inliner. These options control the application of subprogram inlining within one file when interprocedural analysis (IPA) is not enabled. If you have included inlining directives in your source code, the -INLINE option must be specified in order for those directives to be honored. For more information on the individual options in this group, see the ipa(5) man page. -ipa Invokes interprocedural analysis (IPA). Specifying this option is identical to specifying -IPA or -IPA:. Default settings for the individual IPA suboptions are used. -IPA[: ...] Controls the application of interprocedural analysis (IPA) and optimization. This includes inlining, common block array padding, constant propagation, dead function elimination, alias analysis, and other features. Specify -IPA with no arguments to invoke the interprocedural analysis phase with default options. If you have included IPA directives in your source code, the -IPA option must be specified in order for those directives to be honored. If you compile and load in distinct steps, you must use at least -IPA for the compile step, and you must specify -IPA and the individual options in the group for the load step. For more information on the individual options in this group, see the ipa(5) man page. -keep Writes all intermediate compilation files. file.s contains the generated assembly language code. file.i contains the preprocessed source code. These files are retained after compilation is finished. -KPIC Generates position-independent code (PIC), which is necessary for programs linked with dynamic shared libraries. Enabled by default. -llibrary Searches the library named liblibrary.a or liblibrary.so. Libraries are searched in the order given on the command line. The following libraries are loaded by default: * -lfortran: contains intrinsic procedures, I/O, multiprocessing, IRIX interface, and indexed sequential access method library for shared loading and compiling. Link library: /usr/lib*/libfortran.so. * -lm: contains the mathematics library. Link library: /usr/lib*/libm.so/. -Ldirectory Changes the library search algorithm for the loader. For directory, specify the path to a directory that should be searched before using the default system libraries. You can specify multiple -L options on the command line. The library search algorithm searches these directories in left to right order. -LANG: ... Controls the language option group. The following sections describe the suboptions available in this group. Argument Action heap_allocation_threshold=size Determines heap or stack allocation. If the size of an automatic array or compiler temporary exceeds size bytes it is allocated on the heap instead of the stack. If size is -1, objects are always put on the stack. If size is 0, objects are always put on the heap. The default is -1 for maximum performance and for compatibility with previous releases. IEEE_minus_zero=setting Enables or disables the SIGN(3I) intrinsic function's ability to recognize negative floating-point zero (-0.0). Specify either ON or OFF for setting. The default is OFF, which suppresses the minus sign. The minus sign is suppressed by default to prevent problems from hardware instructions and optimizations that can return a -0.0 result from a 0.0 value. To obtain a minus sign (-) when printing a negative floating-point zero (-0.0), use the -z option on the assign(1) command. recursive=setting Invokes the language option control group to control recursion support. setting can be either ON or OFF. The default is OFF. In either mode, the compiler supports a recursive, stack-based calling sequence. The difference lies in the optimization of statically allocated local variables, as described in the following paragraphs. With -LANG:recursive=ON, the compiler assumes that a statically allocated local variable could be referenced or modified by a recursive procedure call. Therefore, such a variable must be stored into memory before making a call and reloaded afterwards. With -LANG:recursive=OFF, the compiler can safely assume that a statically allocated local variable is not referenced or modified by a procedure call. This setting enables the compiler to optimize more aggressively. -LIST: ... Writes an assembler listing file to file.l. This information is also written to the assembly language file (file.s) if the -S option is also in effect. For an alternative method of obtaining a listing, see the -listing option. The individual -LIST: options are as follows: Option Action -LIST:=setting Writes or suppresses the listing file. Specify ON or OFF for setting. If one or more -LIST options are enabled, the listing file is written. By default, the listing file contains a list of options in effect during compilation. -LIST:all_options=setting Writes or suppresses the list of supported options in the listing file. Specify ON or OFF for setting. The default is OFF. -LIST:notes=setting Writes or suppresses notes regarding various optimization phases in the assembly listing file. Must be specified in conjunction with -S. Enter ON or OFF for setting. The default is ON. -LIST:options=setting Writes or suppresses a listing of the compiler options in effect during compilation in the listing file. Specify ON or OFF for setting. The default is OFF. -LIST:symbols=setting Writes or suppresses a listing of the internal compiler symbol tables used in the compilation in the listing file. Specify ON or OFF for setting. The default is OFF. -listing Writes a source code listing and a cross reference listing to file.L. -LNO: ... Specifies options and transformations performed on loop nests by the Loop Nest Optimizer (LNO). The -LNO options are enabled only if -O3 is also specified on the f90(1) command line. The arguments to -LNO are divided into the following groups: * General options * Transformation options * Cache memory management options * Translation Lookaside Buffer (TLB) options * Prefetch options For information on the individual options in this group, see the lno(5) man page. For information on the LNO options that are in effect during a compilation, use the -LIST:all_options=ON option. -lscs Loads the SCSL Scientific Library. -lscs_mp Loads the multi-processor version of the SCSL Scientific Library. -macro_expand Enables macro expansion in preprocessed Fortran source files throughout each file. Without this option specified, macro expansion is limited to preprocessor # directives in files processed by the Fortran preprocessor. When specified, macro expansion occurs throughout the source file. -MDupdate[file] Updates makefile dependencies in file. The file can be included by smake(1) and pmake(1) to get dependencies. Files named on INCLUDE statements and modules named on USE statements are updated. When file is not specified, the lines updated are those that begin with the name of the output file, followed by a colon (:), and end with a distinctive make(1) comment. When file is specified, file is updated during compilation to contain header, library, and run-time make(1) dependencies for the output file. For example, assume that file foo.f90 contains the following two lines: INCLUDE "bar.h" USE mod The updated file will contain a line similar to the following: foo.o : bar.h MOD.mod -mipsn Specifies the Instruction Set Architecture (ISA). Specify -mips3 to specify the MIPS III instruction set. Specify -mips4 to specify the MIPS IV instruction set. For more information on the default setting for your system, see file /etc/compiler.defaults. The -mipsn option interacts with the -64 and -n32 options. -mp Generates multiprocessing code for the files being compiled. This option causes the compiler to recognize all multiprocessing directives and enables all -MP options. If you have specified more than one type of multiprocessing directive for an individual loop, you need to disable one or more sets of directives by using the -MP option in conjunction with the -mp option. Only one set of multiprocessing directives can be recognized for a specific loop. Specifying -mp sets all the -MP options to ON. To disable one or more sets of directives, specify one or more -MP options in conjunction with -mp. The following list describes the sets of multiprocessing directives and indicates the command line options needed to selectively disable one or more sets of directives: * The OpenMP Fortran API multiprocessing directives and the SGI directives that are extensions to OpenMP. These directives begin with the !$OMP and !$SGI prefixes. To disable these directives, but allow other multiprocessing directives to be recognized, specify -mp and -MP:open_mp=OFF. * The SGI multiprocessing directives. These directives begin with the !$ and !$PAR prefix. These directives are outmoded. To disable these directives, but allow other directives to be recognized, specify -mp and -MP:old_mp=OFF. * The Origin series distributed shared memory directives. These directives begin with the !$ prefix. These directives are outmoded. To disable these directives, but allow other multiprocessing directives to be recognized, specify -mp and -MP:dsm=OFF. For more information on the multiprocessing options, see the -MP option. -MP: ... Specifies individual multiprocessing options that provide fine control over certain optimizations. Specifying -mp enables all the -MP options. For any -MP options to be honored, -mp must also be specified on the command line. The arguments to the -MP option are as follows: Argument Action check_reshape=setting Enables or disables runtime consistency checks across procedure boundaries when passing reshaped arrays (or portions thereof) as actual arguments. Specify ON or OFF for setting. The default is check_reshape=OFF. clone=setting Enables or disables autocloning. Specify ON or OFF for setting. The compiler automatically duplicates procedures that are called with reshaped arrays as actual arguments for the incoming distribution. If you have explicitly specified the distribution on all relevant dummy arguments, you can disable autocloning. The consistency checking of the distribution between actual and dummy arguments is not affected by this option and is always enabled. The default is clone=ON. dsm=setting (Origin series systems only) Enables or disables recognition of the Origin Series distributed shared memory directives. These directives begin with a !$ prefix and are outmoded. Specify ON or OFF for setting. When the -mp option is not in effect, the default is dsm=OFF. Otherwise, the default is dsm=ON. When the -mp option is specifed on the command line, the compiler silently generates bookkeeping information in the rii_files directory. This information is used to implement data distribution directives, as well as perform consistency checks of these directives across multiple source files. To disable the processing of the data distribution directives and not generate the rii_files, compile the program with the -MP:dsm=off option. old_mp=setting Enables or disables recognition of the SGI multiprocessing directives and the Origin Series distributed shared memory directives that begin with a !$ prefix. These directives are the loop-level multiprocessing directives (including those for Origin series systems) and the PCF directives. These directives begin with a !$ or !$PAR prefix. Specify ON or OFF for setting. The default is old_mp=ON. open_mp=setting Enables or disables recognition of the OpenMP Fortran API multiprocessing directives and the SGI extensions to OpenMP. These directives begin with a !$OMP or a !$SGI prefix. Specify ON or OFF for setting. The default is ON. -mplist Generates .w2f.f files. -mp_schedtype=mode Specifies a default mode for scheduling work among the participating tasks in loops. This option must be specified in conjunction with -mp. Specifying this option has the same effect as putting a !$MP_SCHEDTYPE=mode directive at the beginning of the file. Specify one of the following for mode: mode Action DYNAMIC Breaks the iterations into pieces, the size of which is specified by the -chunk=integer option. As each process finishes a piece, it enters a critical section and obtains the next available piece. For more information, see the -chunk=integer option. GSS Schedules pieces according to the sizes of the pieces awaiting execution. INTERLEAVE Breaks the iterations into pieces, this size of which is specified by the -chunk=integer option. Execution of the pieces is interleaved among the processes. For more information, see the -chunk=integer option. RUNTIME Schedules pieces according to information contained in the MP_SCHEDTYPE environment variable. SIMPLE Divides the iterations among processes by dividing them into contiguous pieces and assigning one piece to each process. Default. For more information on environment variables, these modes, and their effects, see the pe_environ(5) man page. -noappend Prevents the compiler from appending a trailing underscore character (_) on external names. -nocpp Disables the source preprocessor. See the -cpp, -E, and -ftpp options for more information on controlling preprocessing. -noextend_source Restricts Fortran source code lines to columns 1 through 72. See the -coln and -extend_source options for more information on controlling line length. -nostdinc Directs the system to skip the standard directory, /usr/include, when searching for #include files and files named on INCLUDE statements. -oout_file Writes the executable file to out_file rather than to a.out. By default, the executable output file is written to a.out. -Olevel Specifies the basic optimization level. Option Action -O0 No optimization. -O1 Local optimization. -O2, -O Extensive optimization. Optimizations performed at this level are almost always beneficial. The execution time is shortened, but compile time may be lengthened. -O3 Aggressive optimization. Optimizations performed at this level may generate results that differ from those obtained when -O2 is specified. Vector versions of certain single-precision and double-precision intrinsic procedures (ACOS(3I), ASIN(3I), ATAN(3I), COS(3I), EXP(3I), LOG(3I), LOG10(3I), SIN(3I), SQRT(3I), and TAN(3I)) are used at this level. For more information on how this is implemented, see the MATH(3M) man page. -Ofast[=ipxx] Maximizes performance for the target platform ipxx processor type. To determine your default platform ipxx designation, use the hinv(1M) command. The optimizations performed may differ from release to release and among the supported platforms. The optimizations always enable the full instruction set of the target platform (for example, -mips4 for an R10000). Although the optimizations are generally safe, they may affect floating-point accuracy due to operator reassociation (for more information, see the -OPT:roundoff=3 and -OPT:div_split options on the opt(5) man page). Typical optimizations selected include those performed at -O3. See the -TARG:platform[=ipxx] option for more information on the ipxx argument. The default is an Origin 3000, IP35, or what -DEFAULT:platform=ipxx specifies. NOTE: When this option is in effect, the order of operations may be different from that described in the Fortran standard. The ordering is different because -OPT:roundoff=3 is put into effect when -Ofast is specified. Ofast inlines the computation of abs (and related abs routines) and may result in underflow of small arguments and overflow for large arguments. If -O is not specified on the command line, the default action is the same as -O0. If -O is specified without a value for n, the default action is the same as -O2. -OPT: ... Controls miscellaneous optimizations. These options override defaults based on the main optimization level. For information on the individual options in this group, see the opt(5) man page. For information on inlining and interprocedural optimization, see the -INLINE: ... option or the ipa(5) man page. For information on loop nest optimization, see the -LNO: ... option or the lno(5) man page. -P Runs only the source preprocessor and puts the results for each source file (that is, for file.f[90], file.F[90], and/or file.s) in a corresponding file.i. The file.i that is generated does not contain # lines. -pad_char_literals Blank pads all character literal constants that are shorter than the size of the default integer type and that are passed as actual arguments. The padding extends the length to the size of the default integer type. -pfa, -pfakeep, -pfalist The -pfa, -pfakeep, and pfalist options have been superseded by the -apo, -apokeep, and -apolist options. For information on these options, see the descriptions for -apo, -apokeep, and -apolist on this man page. -rprocessor Specifies the code scheduler. The -r option accepts 4000, 5000, 8000, 10000, and 12000 as arguments, as follows: Option Action -r4000 Schedules code for the R4000 processor. -r5000 Schedules code for the R5000 processor. -r8000 Schedules code for the R8000 processor. -r10000 Schedules code for the R10000 processor. -r12000 Schedules code for the R12000 processor. -r14000 Schedules code for the R14000 processor. -r16000 Schedules code for the R16000 processor. This option adds one of the following to the head of the library search path, where processor is as you specified: * -L/usr/lib32/mips3/processor * -L/usr/lib32/mips4/processor * -L/usr/lib64/mips3/processor * -L/usr/lib64/mips4/processor The actual library search path that is added depends on the ABI that is specified or implied. See the -64 and -n32 options for more information on specifying an ABI. -rreal_spec Specifies the default kind specification for real values. Option Kind value -r4 Uses REAL(KIND=4) and COMPLEX(KIND=4) for real and complex variables, respectively. Default. -r8 Uses REAL(KIND=8) and COMPLEX(KIND=8) for real and complex variables, respectively. -S Generates an assembly file, file.s, rather than an object file (file.o). See the MIPSpro Assembly Language Programmer's Guide for details about the file produced by this option. -show Print the passes as they execute with their arguments and their input and output files. -show_defaults List all defaults used in the compiler environment. This option does not compile the program. -static Statically allocates all local variables. Statically allocated local variables are initialized to zero and exist for the life of the program. This option can be useful when porting programs from older systems in which all variables are statically allocated. When compiling with the -static option, global data is allocated as part of the compiled object file. The total size of any file.o cannot exceed 2 GB, but the total size of a program loaded from multiple .o files can exceed 2 GB. An individual common block cannot exceed 2 GB, but you can declare multiple common blocks, each having that size. If a parallel loop in a multiprocessed program calls an external routine, that external routine cannot be compiled with this option. You can mix static and multiprocessed object files in the same executable, but a static routine cannot be called from within a parallel region. -static_threadprivate Makes all static variables private to each thread. This option can be specified in conjunction with the -static option, which statically allocates all local variables. -TARG: ... Controls the target architecture and machine for which code is generated. The arguments to -TARG: ... are as follows: Argument Action dismiss_mem_faults=setting Forces the kernel to dismiss any memory faults, such as SIGSEGV or SIGBUS, which occur during execution of the program (not just the code being compiled). This option allows optimizations that might cause extra faults and can slow down execution if extra faults occur. It also prevents recognition of legitimate faults. Default is OFF. exec_max=letter Specifies the maximum set of IEEE-754 floating- point exceptions for which traps may be enabled at runtime for the program (not just the code being compiled). Zero or more of the five letters specify exceptions as follows: I specifies inexact; U specifies underflow; O specifies overflow; Z specifies divide by zero; and V specifies invalid operations. This option allows optimizations that might cause extra exceptions, and it may prevent recognition of legitimate faults. It does not affect explicit setting of exception enable flags by the program and should be avoided if the program does this. For related information, see the -TARG:exc_min option description. The default is IUOZV. The default can be affected by the -TENV:X option. exec_min=letter Specifies the minimum set of IEEE-754 floating- point exceptions for which traps must be enabled at runtime for the program (not just the code being compiled). Zero or more of the five letters specify exceptions as follows: I specifies inexact; U specifies underflow; O specifies overflow; Z specifies divide by zero; and V specifies invalid operations. This option does not affect explicit setting of exception enable flags by the program and should be avoided if the program does this. For related information, see the -TARG:exc_max option description. The -TARG:exc_max and -TARG:exc_min options specified for the various files that comprise a program must be consistent; for example, none of the -TARG:exc_min values may require exceptions disabled by -TARG:exc_max values. The default is none. fp_precise=setting Forces the target processor into precise floating-point mode at execution time. Using this option to compile any component source files of a program invokes this feature in the resulting program. Specify ON or OFF for setting. The default is OFF. This option is only meaningful when -r8000 is in effect. It can cause significant performance degradation for programs with heavy floating-point usage. For more information on floating-point mode, see the fpmode(1) man page. isa=instruction_set Identifies the target instruction set architecture for compilation, such as the set of instructions that are generated. For instruction_set specify mips3 or mips4. Specify -TARG:isa=mips3 for code that must run on R4000 processors. This option is equivalent to specifying -mips3 or -mips4. See those options for defaults. madd=setting Enables or prevents transformations from using multiply and add instructions. Specify ON or OFF for setting. The default is ON. This option is ignored unless -mips4 is in effect. These instructions perform a multiply/add with a single round off. They are more accurate than the usual discrete operations, and they may cause results not to match baselines from other targets. Use this option to determine whether observed differences are due to multiply/add instructions. platform=ipxx Specifies the target platform for compilation and chooses various internal parameters (such as cache sizes) appropriately. Supported values are as follows: ip19, ip20, ip21, ip22_4k, ip22_5k, ip24, ip25, ip26, ip27, ip28, ip30, ip32_5k, ip32_10k and ip35. The default selection for your platform can be determined by entering the following command: hinv -c processor The first line of output identifies the proper IP number. If a processor suffix (for example, _4k) is required, the next line identifies the processor (for example, R4000). processor=processor Selects the processor for which to schedule code. The chosen processor must support the ISA specified (or implied by the ABI). Specify one of the following for processor: r4000, r5000, r8000, r10000, r12000, r14000 or r16000. r4krev22=setting Generates code to work around bugs in the R4000 rev 2.2 chip. This currently means simulating 64-bit variable shifts in the software. Specify ON or OFF for setting. The default is OFF. sync=setting Enables or disables use of SYNC instructions. Specify ON or OFF for setting. The default is ON. -TENV: ... Specifies the target environment option group. These options control the target environment assumed and/or produced by the compiler. The arguments to -TENV: ... are as follows: Argument Action align_aggregate=bytes Controls alignment of allocated aggregates (that is, arrays and derived types). The value specified for bytes specifies that any aggregate object at least that large is to be given at least that alignment. By default, or if bytes is not specified, aggregates are aligned to the integer register size, which, for example, is 8 bytes for 64-bit programs and 4 bytes for 32-bit programs. If align_aggregate=0 is specified, the minimum alignment consistent with the ABI is used. Otherwise, the value specified must be 1, 2, 4, 8, or 16. Attempts to reduce the value below 0 will be ignored. check_div=n Inserts checks for divide-by-0 operations and overflow conditions on integer divide operations. Specify 0, 1, 2, or 3 for n. The default is check_div=1. check_div=0 inhibits checking. check_div=1 checks for division by zero. check_div=2 checks for overflow. check_div=3 checks for both division by zero and overflow. NOTE: This option is deprecated. It will be removed in a future release. The preferred alternative is to specify -DEBUG:div_check. large_GOT=setting large_GOT=ON accommodates a larger Global Offset Table (GOT) than is standard. Specify ON or OFF for setting. The default is large_GOT=OFF. The standard GOT is 64K bytes. For more information on controlling the GOT, see the -TENV:small_GOT option. small_GOT=setting small_GOT=ON generates a Global Offset Table (GOT) for shared code that is smaller than than 64K bytes (that is, it assumes small offsets for references to it). Specify ON or OFF for setting. The default is small_GOT=ON. For more information on controlling the GOT, see the -TENV:large_GOT option. X=n Specifies the level of enabled exceptions that will be assumed for purposes of performing speculative code motion. The default is X=2 when -O3 is in effect. The default is X=1 when other -O optimization levels are in effect. Specify 0, 1, 2, 3, or 4 for n. The default is X=1. X=0 inhibits speculative code motion. X=1 specifies that safe speculative code motion be performed and disables all underflow and inexact exceptions according to ANSI/IEEE 754-1985, the IEEE Standard for Binary Floating-point Arithmetic. X=2 disables all exceptions described in ANSI/IEEE 754-1985, except divide by zero. X=3 disables all exceptions according to ANSI/IEEE 754-1985, including divide by zero. X=4 disables or ignores memory exceptions. -Uvar Undefines a variable for the source preprocessor. See the -Dvar option for information on defining variables. -u Makes the default type of a variable undefined, rather than using default rules. -version Writes compiler release version information to stdout. No input file needs to be specified when this option is used. -warg Specifies messages. This option can take one of the following forms: Option Action -w Suppresses warning messages. -w2 Shows warning messages. Default. -Wl,opt[,arg][,opt[,arg]] ... Specifies options to be passed directly to the loader. For opt, specify any of the options that the loader, ld(1) accepts. For arg, specify an argument, if necessary, to opt. For information on possible values for opt and arg, see the ld(1) man page. -woffnum Specifies message numbers to suppress. Examples: * Specifying -woff2026 suppresses message number 2026. * Specifying -woff2026-2352 suppresses messages 2026 through 2352. * Specifying -woff2026-2352,2400-2500 suppresses messages 2026 through 2352 and messages 2400 through 2500. In the message level indicator, the message numbers appear after the dash. -xdirlist Disables specified directives or specified classes of directives. If specifying a multiword directive, either enclose the directive name in quotation marks or remove the spaces between the words in the directive's name. For dirlist, enter one of the following: dirlist Directives disabled all or mipspro All directives. conditional_omp Directives prefixed with !$. dir Directives with a !DIR$ or CDIR$ prefix. mic Directives with a !MIC$ or CMIC$ prefix. directive One or more directives. If specifying more than one, separate them with commas, as follows: -x DOACROSS,"ASSERT NOARGUMENTALIASING". -- Signifies the end of options. After this symbol, you can specify the files to be processed. Not allowed in non-XPG4 environments. file.suffix[90] [file.suffix[90]] ... File or files to be processed, where suffix is either an uppercase F or a lowercase f for source files. Files ending in .i, .o, and .s are also accepted. The Fortran source files are compiled, and an executable object file is produced. The default name of the executable object file is a.out. For example, the following command line produces a.out: f90 myprog.f By default, several files are created during processing. The compiler adds a suffix to the file portion of the file name and places the files it creates into your working directory. See the FILES section for more information on files used and generated. By default, the compiler looks at the suffix of a file to determine how to compile it. For example, f90 a.f90 b.s will treat a.f90 as a f90 file, and b.s as an assembly file. However, for compatibility, we allow the .f suffix to be interpreted as either f77 or f90. Thus, f90 a.f will treat a.f as a f90 file, and f77 a.f will treat a.f as a f77 file. But there are also several options that can be used to control how suffixes are interpreted. These options are: -ignore_suffix Determines the language of the source file being compiled by the command used to invoke the compiler. By default, the language is determined by the file suffixes. When the -ignore_suffix option is specified, those suffixes are ignored. For example, f90 -ignore_suffix a.cxx b.foo will treat a.cxx and b.foo as f90 source. -use_command Use the command name to determine which compiler to invoke for recognized source files. For example, f90 -use_command a.cxx b.foo will treat a.cxx as f90 source, b.foo as object. -use_suffix Use the file suffix to determine which compiler to invoke. For example, f90 -use_suffix a.cxx b.foo will treat a.cxx as C++ source, b.foo as object. -x <lang> The following files are assumed to be of the specified language, regardless of suffix. The valid values for lang are c, c++, f, f90, assembler, object, or none. The none value means that we revert back to the default suffix rules for determining how to compile the file. Cross-compiling (CPU Targeting) Cross compiling is the method of compiling a program on one system and executing it on another. To cross compile, you can either use the -TARG command line options to control the target architecture and machine for which code is geenrated, or you can set the COMPILER_DEFAULTS_PATH environment variable to specify the file that contains the default processor information needed to generate executable code for the target system. The compiler retrieves default information for the Application Binary Interface (ABI), instruction set architecture (ISA), and processor type, optimization, and IEEE arithmetic computations from the /etc/compiler.defaults file. To compile for a different system, set the COMPILER_DEFAULTS_PATH environment variable to a path or to a colon-separated list of paths designating where the compiler is to look for the compiler.defaults file. The compiler.defaults file must contain a -DEFAULT: option specifier that specifies the default information in the following format: -DEFAULT:[abi=n32|64] [:isa=mips3|mips4] [:proc=r4000|r5000|r8000|r10000|f12000] [:opt=0|1|2|3] [:arith=1|2|3] ENVIRONMENT VARIABLES For information on environment variables, see the pe_environ(5) man page. EXAMPLES Certain predefined system defaults can greatly affect your compilation. These include system defaults for your ABI, Instruction Set Architecture (ISA), and processor type. To determine the default ABI for your system, look in the /etc/compiler.defaults file. To determine your system's processor, use the hinv command. The -64 and -n32 options can affect the Instruction Set Architecture (ISA) used during compilation. For more information on this interaction, see the -mips option. When -n32 is specified, the total memory allocation for a program and individual arrays cannot exceed 2 gigabytes (2 GB, or 2,048 MB). When -64 is specified, the compiler supports arrays that are larger than 2 GB. As the following example shows, the arrays can be local, global, or dynamically created when compiling with the following command line: % f90 -64 -i8 -mips3 whale.f MODULE DEFS INTEGER, PARAMETER :: ARRAY_SIZE = 4294967304_8 ! Z'100000008' INTEGER :: I(ARRAY_SIZE) END MODULE PROGRAM MAIN USE DEFS INTEGER, ALLOCATABLE :: J(:) INTEGER :: STATUS ALLOCATE(J(ARRAY_SIZE), STAT=STATUS) IF (STATUS == 0) THEN I(ARRAY_SIZE) = 7 J(ARRAY_SIZE) = 8 CALL SUB END IF END PROGRAM SUBROUTINE SUB USE DEFS INTEGER :: K(ARRAY_SIZE) K(ARRAY_SIZE) = 9; END SUBROUTINE The following example compiles and runs the preceding code after setting the stack size to a correct value: $ uname -a IRIX64 cydrome 6.2 03131016 IP19 $ f90 -64 -i8 -mips3 whale.f $ limit cputime unlimited filesize unlimited datasize unlimited stacksize 65536 kbytes coredumpsize 0 kbytes memoryuse 524288 kbytes descriptors 300 vmemoryuse unlimited threads 1024 $ limit stacksize unlimited $ limit cputime unlimited filesize unlimited datasize unlimited stacksize 524288 kbytes coredumpsize 0 kbytes memoryuse 754544 kbytes descriptors 300 vmemoryuse unlimited threads 1024 FILES The following is a file summary: File Type a.out Executable output file. file.a Object file archive. file.B Intermediate file written by the front end of the compiler. To retain this file, specify the -keep option. file.cfb Feedback file for use with the performance tools. file.f or file.F Input Fortran source file in fixed source form. If file ends in .F, the Fortran source preprocessor is invoked. file.f90 or file.F90 Input Fortran source file in free source form. If file ends in .F90, the Fortran source preprocessor is invoked. file.i File generated by the source preprocessor. To retain this file, specify the -P option. file.l Assembler listing file. To retain this file, specify the -LIST option. file.list APO listing file. To retain this file, specify the -apolist option. file.L Listing file containing a cross reference and a source listing. To retain this file, specify the -listing option. file.mod Module file. file.o Object file. file.s Assembly language file. To retain this file, specify the -S option. file.so Dynamic Shared Object (DSO) library. f90sigfpe.h Floating-point exception-handling include file. SEE ALSO cc(1), CC(1), cord(1), fpmode(1), ld(1), make(1), pixie(1), pmake(1), prof(1), smake(1) hinv(1M) math(3M) debug_group(5), dso(5), gp_overflow(5), ipa(5), lno(5), opt(5), pe_environ(5), rld(5) MIPSpro Fortran 90 Commands and Directives Reference Manual MIPSpro Assembly Language Programmer's Guide