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