f95(1) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

f95(1)

f95(1)                           User Commands                          f95(1)



NAME
       f95, f90 - Fortran 95 compiler

SYNOPSIS
       Can be invoked by either f95 or f90 commands; they are
       equivalent.


       f95  [ -aligncommon[=a] ] [ -ansi ] [ -arg=local ]
            [ -autopar ] [ -Bx ] [ -C ] [ -c ]
            [ -copyargs ] [ -Dnm[=def] ] [ -dalign ]
            [ -dbl_align_all[={yes|no}] ] [ -depend[={yes|no}] ]
            [ -dryrun ] [ -d{y|n} ] [ -e ] [ -erroff[=taglist] ]
            [ -errtags[={yes|no}] ] [ -errwarn[=taglist] ]
            [ -ext_names=e ] [ -F ] [ -f ]
            [ -f77[=list] ] [ -fast ] [ -features=a ] [ -fixed ] [ -flags ]
            [ -fma={none|fused} ] [ -fnonstd ] [ -fns[={yes|no}] ]
            [ -fpover[={yes|no}] ] [ -fpp ] [ -fopenmp ]
            [ -fprecision=p ] [ -free ] [ -fround=r ]
            [ -fserialio ] [ -fsimple[=n] ] [ -fstore ]
            [ -ftrap=t ] [ -G ] [ -g ]
            [ -g[n] ] [-gz[=cmp-type]] [ -hnm ] [ -help ] [ -Ipath ] [ -inline=rl ]
            [ -iorounding[=r] ] [ -keepmod[={yes|no}] ]
            [ -keeptmp ] [ -KPIC ] [ -Kpic ] [ -Lpath ] [ -lx ]
            [ -libmil ] [ -library=sunperf ]
            [ -loopinfo ] [ -Mpath ]
            [ -m32|-m64 ] [ -moddir=path ] [ -mt ]
            [ -native ] [ -noautopar ] [ -nodepend ]
            [ -nofstore ] [ -nolib ]
            [ -nolibmil ] [ -noreduction ] [ -norunpath ]
            [ -O[n] ] [ -o nm ] [ -onetrip ]
            [ -openmp[=a] ] [ -PIC ] [ -p ]
            [ -pad[=a] ] [ -pg ] [ -pic ]
            [ -preserve_argvalues[=int|none] ]
            [ -Qoption pr ls ] [ -qp ] [ -R list ] [ -r8const ]
            [ -recl=a[,b] ] [ -reduction ] [ -S ] [ -s ]
            [ -shared] [-silent ] [ -stackvar ] [ -stop_status={yes|no} ]
            [ -temp=path ] [ -time ] [ -traceback[=list] ]
            [ -U ] [ -Uname ] [ -u ]
            [ -unroll=n ] [ -use=list ] [ -V ] [ -v ] [ -vax=v ]
            [ -vpara ] [ -Wc,arg ] [ -w[n] ]
            [ -Xlinker arg ] [ -Xlist[z] ]
            [ -xaddr32[={no|yes}] ] [ -xalias[=a[,a]...] ]
            [ -xannotate[={yes|no}] ] [ -xarch=a ]
            [ -xassume_control[=a[,a]...] ]
            [ -xautopar ]
            [ -xcache=c ] [ -xcheck=n ] [ -xchip=c ]
            [ -xcode=v ] [ -xcommonchk[={no|yes}] ]
            [-xcompress={[no%]debug}] [-xcompress_format=cmp-type]
            [ -xdebugformat=dwarf ]
            [ -xdebuginfo=a[,a...] ] [ -xdepend ]
            [ -xdryrun ] [ -xF ] [ -xfilebyteorder=options ]
            [ -xglobalize[={yes|no}] ]
            [ -xhasc[={yes|no}] ] [ -xhelp=h ]
            [ -xhwcprof[=e] ] [ -xinline=rl ]
            [ -xinline_param=a[,a[,a]...] ] [ -xinline_report[=n] ]
            [ -xinstrument=d ]
            [ -xipo[=n] ] [ -xipo_archive=a ]
            [ -xipo_build=[yes|no] ] [ -xivdep[=p] ]
            [ -xjobs=[n|auto] ]
            [ -xkeep_unref[={[no%]funcs, [no%]vars}] ]
            [ -xkeepframe[=p] ]
            [ -xknown_lib=lib ] [ -xl ] [ -xld ] [ -xlang=f77 ]
            [ -xlibmil ] [ -xlibmopt ]
            [ -xlinkopt[=level] ]
            [ -xloopinfo ] [ -xM ] [ -xmaxopt[=n] ]
            [ -xmemalign[=ab] ] [ -xmodel=[a] ] [ -xnolib ]
            [ -xnolibmil ] [ -xnolibmopt ] [ -xO[n] ]
            [ -xopenmp[=a] ] [ -xpad[=a] ] [ -xpagesize=n ]
            [ -xpagesize_heap=n ] [ -xpagesize_stack=n ]
            [ -xpatchpadding[={fix|patch|size}] ]
            [ -xpec[={yes|no}] ] [ -xpg ] [ -xpp=p ]
            [ -xprefetch=a[,a]]
            [ -xprefetch_auto_type=[no%]indirect_array_access ]
            [ -xprefetch_level=n ] [ -xprofile=p ]
            [ -xprofile_ircache=path ] [ -xrecursive ]
            [ -xreduction ] [ -xregs=r ]
            [ -xs[={yes|no}] ] [ -xsafe=mem ]
            [ -xsecure_code_analysis{=[yes|no] ] [-xsegment_align=n]
            [ -xspace ] [ -xtarget=t ] [ -xtemp=path ]
            [ -xthroughput[={yes|no}] ] [ -xtime ]
            [ -xtypemap=spec ] [ -xunboundsym={yes|no} ]
            [ -xunroll=n ] [ -xvector[={v}] ] [ -xvpara ]
            [ -ztext ]   source file(s) ...  [ -lx ]

DESCRIPTION
       Oracle Developer Studio 12.6 Fortran 95 compiler, version 8.8.


       The f95 compiler accepts standard-compliant Fortran 95 source code pro‐
       grams. It also accepts some Fortran 2003 features, and  the  OpenMP[tm]
       Fortran  95 API version 3.1. It also accepts many FORTRAN 77 (f77) lan‐
       guage extensions under the -f77 compatibility option, and VAX VMS  For‐
       tran extensions (-vax).


       Version  8.8  of the Fortran 95 compiler f95 is released as a component
       of Oracle Developer Studio  12.6,  and  is  available  for  the  Oracle
       Solaris  Operating  System  (Oracle  Solaris OS) on SPARC and x86 plat‐
       forms, and on Linux x86 platforms.


       See the Oracle Developer Studio 12.6:
                 Release Notes for a complete list of system environments  and
       versions.


       Complete  documentation  for  this  release  is available on the Oracle
       Technical Network (OTN) Oracle Developer  Studio  website:  http://ora‐
       cle.com/technetwork/server-storage/developerstudio.


       The  OTN website is a complete resource for Oracle Developer Studio and
       includes many technical articles  detailing  best  practices  and  deep
       dives into various programming technologies and other topics.


       For  the  full description of all new features and functionality in the
       Oracle Developer Studio suite, see What's New in the
                 Oracle Developer Studio 12.6 Release.


       A man page, by definition, is a  quick  reference.  For  more  detailed
       information  on  using the f95 compiler and its options, see the Oracle
       Developer Studio 12.6: Fortran
                 User' Guide and the Fortran Programming
               Guide.


       See the Oracle Developer Studio 12.6:
                 Fortran User' Guide for complete details on how  to  use  the
       f95  compiler.  The  user  guide details all the options, pragma direc‐
       tives, and environment variables accepted by  f95,  and  describes  any
       differences between standard Fortran 95 and this Fortran 95 compiler.


       See  the  Fortran  Programming Guide for information on program perfor‐
       mance and optimization, parallelization, and porting from other Fortran
       platforms.


       A list of relevant Oracle Developer Studio documentation appears at the
       end of this man page.

   Compiling for 64-Bit Platforms
       Use the -m32 and -m64 options to specify the data  type  model  of  the
       target compilation, ILP32 or LP64 respectively.


       The -xarch option no longer carries an implicit data type model defini‐
       tion, and should be used only to specify the  instruction  set  of  the
       target processor.


       The  ILP32  model specifies that C-language int, long, and pointer data
       types are each 32-bits wide. The LP64 model  specifies  that  long  and
       pointer  data  types are each 64-bits wide and int is 32-bits wide. The
       Oracle Solaris and Linux OS also support large files and  large  arrays
       under the LP64 data type model.


       When  compiling  with  -m64, the resulting executable will work only on
       64-bit SPARC or x86 processors under Oracle Solaris OS or Linux OS run‐
       ning  a  64-bit  kernel.  Compilation, linking, and execution of 64-bit
       objects can only take place in a Oracle Solaris or Linux OS  that  sup‐
       ports 64-bit execution.

   Special x86 Notes
       There  are  some important issues to be aware of when compiling for x86
       Oracle Solaris platforms.


       Programs compiled with -xarch set to sse2, sse2a, or  sse3  and  beyond
       must  be  run  only on platforms that provide these extensions and fea‐
       tures.


       With this release, the default  instruction  set  and  the  meaning  of
       -xarch=generic has changed to sse2. Now, compiling without specifying a
       target platform option results in  an  sse2  binary  incompatible  with
       older Pentium III or earlier systems.


       If  you  compile and link in separate steps, always link using the com‐
       piler and with same -xarch setting to ensure that the  correct  startup
       routine is linked.


       Numerical  results  can  also  differ  between Oracle Solaris and Linux
       because the intrinsic math libraries (for example, sin(x)) are not  the
       same.

   Binary Compatibility Verification
       Program  binaries  compiled and built using specialized -xarch hardware
       flags are verified that they are being run on the appropriate platform.
       Running  programs compiled with specialized -xarch options on platforms
       that are not enabled with the appropriate features or  instruction  set
       extensions  could  result  in  segmentation faults or incorrect results
       occurring without any explicit warning messages.


       On Linux, however, there is no such verification check. Running  binary
       objects compiled by Oracle Developer Studio compilers on older hardware
       platforms could result in runtime failures; on Linux it is  the  user's
       responsibility to deploy these binaries on suitable hardware platforms.


       This  warning  extends also to programs that employ .il inline assembly
       language functions or __asm() assembler code that utilize SSE2,  SSE2a,
       and SSE3 (and beyond) instructions and extensions.

   User-Supplied Default Compiler Options Startup File
       The  default compiler options file enables the user to specify a set of
       default options that are applied  to  all  compiles,  unless  otherwise
       overridden.  For  example,  the  file  could  specify that all compiles
       default at -xO2, or automatically include the file setup.il.


       At startup, the compiler searches for a default  options  file  listing
       default  options  it  should  include for all compiles. The environment
       variable SPRO_DEFAULTS_PATH specifies a colon-separated list of  direc‐
       tories to search for the the defaults file.


       If  the  environment variable is not set, a standard set of defaults is
       used. If the environment variable is set but is empty, no defaults  are
       used.


       The  defaults  file  name  must be of the form compiler.defaults, where
       compiler is one of the following: cc, c89, c99, CC, ftn, or  lint.  For
       example, the defaults for the Fortran compiler would be ftn.defaults


       If  a defaults file for the compiler is found in the directories listed
       in SPRO_DEFAULTS_PATH, the compiler will read the file and process  the
       options  prior to processing the options on the command line. The first
       defaults file found will be used and the search terminated.


       System administrators may create system-wide default files  in  Studio-
       install-path/lib/compilers/etc/config.  If  the environment variable is
       set, the installed defaults file will not be read.


       The format of a defaults file is similar to the command line. Each line
       of the file may contain one or more compiler options separated by white
       space. Shell expansions, such as wild cards and substitutions, will not
       be applied to the options in the defaults file.


       The value of the SPRO_DEFAULTS_PATH and the fully expanded command line
       will be displayed in the verbose output produced by options  -#,  -###,
       and -dryrun.


       Options specified by the user on the command line will usually override
       options read from the defaults file. For example, if the defaults  file
       specifies  compiling  with -xO4 and the user specifies -xO2 on the com‐
       mand line, -xO2 will be used.


       Some options appearing in the default options  file  will  be  appended
       after  the  options  specified  on the command line. These are the pre‐
       processor option -I, linker options -B, -L, -R, and -l,  and  all  file
       arguments,  such  as  source  files, object files, archives, and shared
       objects.


       The following is an example of how  a  user-supplied  default  compiler
       option startup file might be used.


         demo% cat /project/defaults/ftn.defaults
         -fast -I/project/src/hdrs -L/project/libs -llibproj -xvpara
         demo% setenv SPRO_DEFAULTS_PATH /project/defaults
         demo% f95 -c -I/local/hdrs -L/local/libs -lliblocal tst.f




       The compiler command is now equivalent to:


         f95 -fast -xvpara -c -I/local/hdrs -L/local/libs -lliblocal \
                tst.f -I/project/src/hdrs -L/project/libs -llibproj




       While  the  compiler defaults file provides a convenient way to set the
       defaults for an entire project, it can become  the  cause  of  hard  to
       diagnose  problems.  Set the environment variable SPRO_DEFAULTS_PATH to
       an absolute path rather than the current directory to avoid such  prob‐
       lems.


       The interface stability of the default options file is uncommitted. The
       order of option processing is subject to change in a future release.

OPTIONS
       Options valid only on SPARC platforms are marked (SPARC).


       Options valid only on x86/x64 platforms are marked (x86).


       Deprecated options are marked (Obsolete) and should not be  used  going
       forward.   They  are  provided  only  for  compatibility  with  earlier
       releases. Use the indicated replacement option.


       See ld(1) for linker options.


       f95 compiles "silently". Except for error and warning messages, it does
       not issue "progress" messages during compilation.


       In  general,  processing of the compiler options is from left to right,
       permitting selective overriding of macro options. This  rule  does  not
       apply to linker or preprocessor options.


       In the syntax of the command-line options, items shown in square brack‐
       ets ( [] ) are optional. Curly brackets enclose a bar-separated list of
       literal  items to be chosen, as in {yes | no | maybe } . The first item
       in a list usually indicates the default value  when  the  flag  appears
       without a value.


       For  example, -someoption[={no|yes}] implies -someoption is the same as
       -someoption=no.


       The following options are supported:


       -aligncommon[={1|2|4|8|16}]

           Specify alignment of data in common  blocks  and  standard  numeric
           sequence types.

           The  value specified indicates the maximum alignment (in bytes) for
           data elements within common blocks and  standard  numeric  sequence
           types.  For  example,  -aligncommon=4 would align common block data
           elements with natural alignments of  4  bytes  or  more  on  4-byte
           boundaries. This option does not affect data with natural alignment
           smaller than the specified size.

           The default, when -aligncommon  is  not  specified,  aligns  common
           block  and  standard numeric sequence data on at most 4-byte bound‐
           aries.

           Specifying -aligncommon without a value defaults to 1 on all  plat‐
           forms:  All data aligns on byte boundaries (no padding between ele‐
           ments).

           -aligncommon=16 reverts to -aligncommon=8 when compiling with -m32.

           Using -aligncommon=1 on SPARC platforms might result in a bus error
           due to misalignment, requiring an appropriate choice of the -xmema‐
           lign option be used. Depending on the  application,  -xmemalign=1s,
           -xmemalign=4ior -xmemalign=8i should give optimal performance while
           avoiding the segmentation fault.

           See also: -xmemalign


       -ansi

           Identify nonstandard extensions.


       -arg=local

           Preserve actual arguments over ENTRY statements.

           When you compile a subprogram with alternate entry points with this
           option,  f95 uses copy restore to preserve the association of dummy
           and actual arguments.

           This option is provided for compatibility with  legacy  Fortran  77
           programs. Code that relies on this option is nonstandard.


       -autopar

           Turns  on automatic loop parallelization. Analyzes loops for inter-
           iteration data dependence) and loop restructuring. If  optimization
           is  not at -O3 or higher, optimization is raised to -O3 and a warn‐
           ing is issued.

           Note that -autopar does not enable the recognition of OpenMP  dire‐
           cives.  To  enable  the  recognition  of OpenMP directives, use the
           -xopenmp compiler option.

           Specify the -stackvar option when  using  -autopar.  The  -stackvar
           option might provide better performance when using -autopar because
           it might allow the optimizer to detect additional opportunities for
           parallelization.  See  the Oracle Developer Studio 12.6: OpenMP API
           User's
                         Guide for more information on how to set the sizes of
           the main thread stack and the helper thread stacks.

           Use  the OMP_NUM_THREADS environment variable to specify the number
           of threads to use when running a program automatically parallelized
           by  the  -xautopar  compiler option. If OMP_NUM_THREADS is not set,
           the default number of threads used is a multiple of the  number  of
           cores per socket (that is, cores per processor chip), which is less
           than or equal to the total number of  cores  or  32,  whichever  is
           less.  You can specify a different number of threads by setting the
           OMP_NUM_THREADS environment variable.  For  best  performance,  the
           number  of  threads  used  should not exceed the number of hardware
           threads (or virtual processors) available on the machine. On Oracle
           Solaris  systems,  this  number  can  be  determined  by  using the
           psrinfo(1M) command. On Linux systems, this number  can  be  deter‐
           mined  by  inspecting the file /proc/cpuinfo. See the Oracle Devel‐
           oper Studio 12.6: OpenMP API User's
                           Guide for more information.

           If you compile and link in separate steps, specify -autopar in both
           the  compilation  step  and  the link step. When used with the link
           step, the -autopar option will link with the OpenMP runtime support
           library, libmtsk.so.


       -B{dynamic|static}

           Prefer dynamic or require static library linking.

           This  flag  indicates  that  either dynamic library linking is pre‐
           ferred, or static linking required for any libraries  listed  later
           in the command. This is a linker option.



           -Bdynamic    Prefer dynamic linking (shared libraries).


           -Bstatic     Require static linking (no shared libraries).


           The default is -Bdynamic.

           If  you specify static but the linker finds only a dynamic library,
           then the library is not linked and a warning issued.

           However, if you specify -Bdynamic  but  the  linker  finds  only  a
           static version, that library is linked with no warning.

           You  can toggle between -Bdynamic and -Bstatic on the command line,
           linking some libraries statically and others dynamically.

           Because these are linker options, compiling with -Bstatic or  -Bdy‐
           namic requires the same options on a linker command if done in sep‐
           arate steps.

           Note: Mixing static Fortran runtime system libraries  with  dynamic
           Fortran  runtime system libraries is not recommended and can result
           in linker errors or silent data corruption. Always  link  with  the
           latest shared dynamic Fortran runtime system libraries.


       -C

           Check array references for out of range subscripts and conformance.

           Arrays  subscripted beyond their declared sizes can result in unex‐
           pected results, including segmentation faults. The -C option checks
           for possible array subscript violations in the source code and dur‐
           ing execution.

           With the -C option specified, run-time array  subscript  violations
           are  treated  as  an  error. The compiler will also flag array sub‐
           script range violations in the source code as warnings.

           Compiling with -C also adds checks for array conformance at runtime
           in statements using array syntax.

           This  option  will  increase  the  size  of the executable file and
           degrade execution performance. It should only be used while  debug‐
           ging.


       -c

           Compile and produce a .o file for each source file without linking.
           You can explicitly name a  single  object  file  by  using  the  -o
           option.  When  the  compiler produces object code for each or input
           file, it always creates an  object  file  in  the  current  working
           directory.  If you suppress the linking step, you also suppress the
           removal of the object files.


       -copyargs

           Allow assignment to constant arguments.

           Allow a subprogram to change a dummy argument that is  a  constant.
           This  option  is  provided only to allow legacy code to compile and
           execute without a runtime error for changing a constant.

           Without -copyargs, if you pass a constant argument to a subroutine,
           and then within the subroutine try to change that constant, the run
           gets a runtime error.

           With -copyargs, if you pass a constant argument  to  a  subroutine,
           and  then  within the subroutine change that constant, the run does
           not necessarily get a runtime error.

           Programs that require compilation with the -copyargs flag  are  not
           Fortran standard-compliant.


       -Dname[=def]

           Define symbol name for the source code preprocessor.

           This  is  equivalent  to a "#define" directive in the source. If no
           def is given, name is defined as "1". This  option  applies  to  .F
           .F90 .F95 .F03 suffix files only.

           These predefined macros are used on the corresponding platforms:


             __SUNPRO_F90=0x880
             __SUNPRO_F95=0x880
             __SVR4 (Oracle Solaris)
             __SVR4__ (Oracle Solaris)
             __SunOS (Oracle Solaris)
             __SunOS_5_10 (Oracle Solaris)
             __SunOS_5_11 (Oracle Solaris)
             __amd64 (x86 -m64)
             __amd64__ (x86 -m64)
             __gnu__linux__ (linux)
             __i386 (x86)
             __i386__ (x86)
             __linux (linux)
             __linux__ (linux)
             __sparc (SPARC)
             __sparc__ (SPARC)
             __sparc_v9__(SPARC -m64)
             __sparcv8 (SPARC -m32)
             __sparcv9 (SPARC -m64)
             __sun (Oracle Solaris)
             __sun__ (Oracle Solaris)
             __svr4__ (Oracle Solaris)
             __unix
             __unix__
             __x86_64 (x86 -m64)
             __x86_64__ (x86 -m64)
             i386 (x86)
             linux (linux)
             sparc (SPARC)
             sun (Oracle Solaris)
             unix
             __SunOS_RELEASE (Oracle Solaris)
             _LP64 (-m64)
             __LP64__ (-m64)

           A hex value 0xRRrrmm representing the Oracle Solaris release, where
           RR.rr is the output of the sysinfo (SI_RELEASE) system call, or  of
           the  uname -r command, with leading zeros added when needed. The mm
           digits are reserved for possible future  micro  releases.  All  the
           digits  are  decimal. Example for Oracle Solaris 11, which is SunOS
           5.11: __SunOS_RELEASE,  has  the  value,  0x051100.  The  value  of
           __SunOS_RELEASE  for an older Oracle Solaris release is always less
           than the value for a later release.

           Fortran syntax might not support the actual values  of  these  sym‐
           bols.  They  should  appear  only on fpp or cpp preprocessor state‐
           ments, such as conditionals: #ifdef __sparc.

           Corresponding older values (prior releases) are: sparc, unix, sun.

           These earlier predefined  values  might  be  deleted  in  a  future
           release.

           f95  uses the fpp(1) preprocessor by default. Like the C preproces‐
           sor cpp(1), fpp expands source code macros and enables  conditional
           compilation of code. Unlike cpp, fpp understand Fortran syntax, and
           is preferred as a Fortran preprocessor. Use the  -xpp=cpp  flag  to
           force the compiler to specifically use cpp rather than fpp.


       -dalign

           Align  COMMON blocks and standard numeric sequence types and gener‐
           ate faster multi-word load/stores.

           This flag changes the data layout in COMMON blocks (and EQUIVALENCE
           classes),  and  enables  the compiler to generate faster multi-word
           load/stores for that data.

           -dalign is a macro equivalent to


             -xmemalign=8s -aligncommon=16

           Note that -aligncommon=16 is reverted to -aligncommon=8  when  com‐
           piled with --m32.

           The  data  layout  effect is that of the -f flag: double- and quad-
           precision data in COMMON blocks and EQUIVALENCE  classes  are  laid
           out  in  memory along their "natural" alignment, which is on 8-byte
           boundaries (or 16-byte boundaries for quad-precision when compiling
           for  64-bit  platforms  with -m64.) The default alignment in COMMON
           blocks and standard-conforming numeric sequence derived thpes is on
           4-byte boundaries.

           Using  -dalign  along  with  -xtypemap=real:64,double:64,integer:64
           also causes 64-bit integer variables to be double-word  aligned  on
           SPARC.

           Using  -dalign,  can  result in nonstandard FORTRAN alignment which
           could cause problems with variables in EQUIVALENCE  or  COMMON  and
           can render the program non-portable if -dalign is required.

           If  you  compile one subprogram or file with -dalign, then all sub‐
           programs and files in  the  program  unit  must  be  compiled  with
           -dalign.

           Because  -dalign  invokes  -aligncommon,  the alignment of standard
           numeric sequence types is also affected.

           The -fast flag selects -dalign.


       -dbl_align_all[={yes|no}]

           Force alignment of data on 8-byte boundaries.

           If yes all variables will be aligned on 8-byte boundaries.  Default
           is  -dbl_align_all=no.  By  itself, -dbl_align_all is equivalent to
           -dbl_align_all=yes.

           Double  precision  and  quad-precision  data  alignments  are   not
           affected by this option.

           This  flag  does  not  alter the layout of data in COMMON blocks or
           user-defined structures.


       -depend[=yes|no]

           Analyze loops for data dependence and restructuring.

           -depend is equivalent to -depend=yes and  enables  loop  dependence
           analysis. It is on by default on all platforms.

           -depend=no disables DO loop data dependence analysis


       -dryrun

           Show commands built by the f95 driver but do not compile.

           Useful  when  debugging, this option displays the commands the com‐
           piler will run to perform the compilation.


       -d{y|n}

           Allow/disallow dynamic libraries for executable

           Allow or disallow dynamic libraries for the entire executable. This
           flag is a linker option.



           -dy          Allow dynamic libraries.


           -dn          Do not allow dynamic libraries.


           The default is -dy.

           Unlike  -B{dynamic|static},  this  option applies to the whole exe‐
           cutable and need appear only once on the command line.

           -d{y|n} are linker options. If you compile  and  link  in  separate
           steps  with  these  options,  then  you need the same option in the
           final link step.


       -e

           Extend source line maximum length to 250 characters.

           The compiler pads on the right with trailing blanks to column  250.
           If  you use continuation lines while compiling with -e, then do not
           split  character  constants  across  lines,  otherwise  unnecessary
           blanks might be inserted in the constants.


       -erroff[={%all|%none|taglist}]

           Suppress warning messages listed by tag name.

           This  option  only affects warning messages. Error messages are not
           affected. The taglist specifies a list of comma-separated tag names
           that  appear  with warning messages. If just %all is specified, all
           warnings are suppressed (this is equivalent to the -w  option.)  If
           just %none is specified, no warnings are suppressed. -erroff speci‐
           fied without a value is equivalent to -erroff=%all.

           See also: -errtags


       -errtags[={yes|no}]

           Display the message tag with each warning message.

           The compiler's internal error tag name  appears  along  with  error
           messages.  The default is not to display the tag (-errtags=no). The
           second default (-errtags without a value) is -errtags=yes.


       -errwarn[={%all|%none|taglist}]

           Treat warning messages as errors.

           The taglist specifies a list of comma-separated tag names of  warn‐
           ing  messages  that  should  be  treated as errors. If just %all is
           specified, all warnings are treated as errors.  If  just  %none  is
           specified, no warnings are treated as errors.

           See also: -errtags


       -ext_names=e

           Create external names with or without underscores.

           e must be plain, underscores, or fsecond-underscore.



           plain

               Do not use trailing underscores.


           underscores

               Use trailing underscores.


           fsecond-underscore

               Append two underscores to external names that contain an under‐
               score, and a single underscore to those that do not.


           The default is underscores.

           An external name is a name of a subroutine,  function,  block  data
           subprogram, or labeled common. This option affects both the name in
           the routine itself and, of course, the name  used  in  the  calling
           statement (both symdefs and symrefs).

           fsecond-underscore is provided for compatibility with gfortran.


       -F

           Invoke the source file preprocessor, but do not compile

           Apply  the  fpp  preprocessor to .F90, .F95, .F03, and .F files and
           put the result in the file with the suffix changed to  .f90,  .f95,
           .f03,or .f, but do not compile.

           fpp  is  the  default preprocessor for Fortran. The C preprocessor,
           cpp, can be selected instead by specifying -xpp=cpp.


       -f

           Align double- and quad-precision data in COMMON blocks.

           This flag changes the data layout in COMMON blocks (and EQUIVALENCE
           classes):  double-  and  quad-precision  data  in COMMON blocks and
           EQUIVALENCE classes are laid out in memory  along  their  "natural"
           alignment,  which is on 8-byte boundaries (or on 16-byte boundaries
           for quad-precision when  compiling  for  64-bit  environments  with
           -m64).  The default alignment of data in COMMON blocks is on 4-byte
           boundaries.

           -f is is a legacy option  equivalent  to  -aligncommon=16.  Use  of
           -aligncommon is preferred.

           This option applies to both real and complex data.

           Resulting code might not be standard and might not be portable.

           If  you  compile one subprogram with -f, compile all subprograms of
           the program with -f.

           By itself, this option does not enable  the  compiler  to  generate
           faster  double  word  fetch/store  instructions and double and quad
           precision data. Only -dalign will do this.


       -f77[=list]

           Select Fortran 77 compatibility mode.

           list is a comma-separated list selected from the following possible
           keywords:



           %all

               Select all the f77 compatibility features.


           %none

               Disable the f77 compatibility features.


           output

               Generate  f77-style  formatted  output, including list-directed
               and namelist output.


           input

               Accept input formats allowed by f77.


           tab

               Enable f77-style  TAB-formatting,  including  unlimited  source
               line  length.  Also,  no  blank padding will be added to source
               lines shorter than 72 characters.


           backslash

               Accept a backslash character as  the  beginning  of  an  escape
               sequence in character strings.


           intrinsics

               Limit recognition of intrinsics to only Fortran 77 intrinsics.


           logical

               Accept Fortran 77 usage of logical variables, such as:

                   o      Allow  assignment of integer values to logical vari‐
                          ables.


                   o      Allow arithmetic expressions  in  place  of  logical
                          expressions  in  conditional  statements, with .NE.0
                          representing .TRUE..


                   o      Allow use of relational operators .EQ. and .NE. with
                          logical operands.



           subscript

               Allow non-integer expressions as array subscripts.


           misc

               Allow  other  miscellaneous Fortran 77 extensions not supported
               by Fortran 95.


           All keywords can be prefixed by no% to  disable  the  corresponding
           feature, as in:


             -f77=%all,no%backslash

           The default, when -f77 is not specified is -f77=%none. When -f77 is
           used without a list, it is equivalent to -f77=%all.

           Specifying -f77 does not change the Fortran 95 trapping mode, which
           is -ftrap=common. Fortran 95 differs from the Fortran 77 compiler's
           behavior regarding arithmetic  exception  trapping,  which  was  to
           allow  execution  to  continue after arithmetic exceptions. It also
           made the program call ieee_retrospective on program exit to  report
           on  any arithmetic exceptions that occurred during execution. Spec‐
           ify -ftrap=%none after -f77 to revert to trapping that mimics  For‐
           tran 77's behavior.

           See the chapter on FORTRAN 77 compatibility in the Oracle Developer
           Studio 12.6: Fortran User'
                           Guide for details on  -f77  and  the  compatibility
           features  it  provides. See also the -xalias flag for handling non‐
           standard FORTRAN 77 programming that can cause incorrect results.

           A Fortran 77 compiler script has been provided for convenience. The
           f77 command-line script invokes the f95 compiler with the appropri‐
           ate set of options for Fortran 77 compatibility. See the f77(1) man
           page for details.


       -fast

           Select options that optimize execution performance.

           -fast  provides high performance for certain applications. However,
           the particular choice of options might not be appropriate for  your
           application.  Use -fast as a good starting point for compiling your
           application for best performance. But additional tuning might still
           be  required. If your program behaves improperly when compiled with
           -fast, look closely at the individual options that  make  up  -fast
           and  invoke  only  those  appropriate to your program that preserve
           correct behavior.

           Note also that a program compiled with -fast might show  good  per‐
           formance  and  accurate  results  with some data sets, but not with
           others. Avoid compiling with -fast those programs  that  depend  on
           particular properties of floating-point arithmetic.

           -fast selects the following options:


               o      -xtarget=native sets the hardware target. If the program
                      is intended to run on a different target than the compi‐
                      lation  machine,  follow  the -fast with the appropriate
                      -xtarget= option. For example:

                        f95 -fast -xtarget=generic ...



               o      -O5 selects optimization level 5.


               o      -libmil selects inlining of certain  math  library  rou‐
                      tines.


               o      -fsimple=2  selects  aggressive floating-point optimiza‐
                      tions.  This  option  might  be  unsuited  for  programs
                      requiring strict IEEE 754 standards compliance.


               o      -dalign   selects   generation  of  faster  double  word
                      load/store instructions, and  alignment  of  double  and
                      quad  data on their natural boundaries in common blocks.
                      Using this option  might  generate  nonstandard  Fortran
                      data alignment.


               o      -xlibmopt selects linking the optimized math library.


               o      -depend=yes  selects dependence analysis to better opti‐
                      mize DO loops. (This option is always selected for opti‐
                      mization levels -O3 and greater.)


               o      -fma=fused  enables  automatic  generation  of floating-
                      point fused multiply-add instructions.


               o      -fns selects faster (but nonstandard) handling of float‐
                      ing-point arithmetic exceptions and gradual underflow.


               o      -ftrap=common  selects trapping on common floating-point
                      exceptions (this is the default for f95).


               o      -pad=local selects  local  padding  to  improve  use  of
                      cache. (SPARC)


               o      -xvector=lib   selects   the  vectorized  math  library.
                      (SPARC)


               o      -fround=nearest is selected because -xvector and  -xlib‐
                      mopt require it.


               o      -nofstore cancels forcing expressions to have the preci‐
                      sion of the result. (x86)


               o      -xregs=frameptr on x86 allows the compiler  to  use  the
                      frame-pointer register as a general-purpose register. Be
                      sure to read the  discussion  of  -xregs=frameptr  espe‐
                      cially  when  compiling mixed C, Fortran, and C++ source
                      codes. Specify -xregs=no%frameptr after  -fast  and  the
                      frame  pointer  register  will  not be used as a general
                      purpose register. (x86)

           Note that this selection of component option flags  is  subject  to
           change  with  each  release  of  the  compiler.  For details on the
           options set by -fast, see the Oracle Developer Studio 12.6:
                           Fortran User' Guide.

           To determine the expansion of -fast on a  running  system,  execute
           the command


             f95 -fast -dryrun |& grep ###

           It  is  possible to add or subtract from this list by following the
           -fast option with other options, as in:


             f95 -fast -fsimple=1 -xlibmopt=%none

           which overrides the -fsimple=2  flag  and  disables  the  -xlibmopt
           selected by -fast.

           Because -fast selects


             -dalign -fns -fsimple=2

           programs compiled with this option can result in nonstandard float‐
           ing-point arithmetic, nonstandard alignment of data,  and  nonstan‐
           dard  ordering of expression evaluation. These selections might not
           be appropriate for most programs.

           Also, because -fast selects  -xlibmopt  and  -xvector=lib,  default
           rounding  mode, -fround=nearest, is assumed and required when using
           -fast.

           For separate compile and link steps: if  you  compile  with  -fast,
           then be sure to link with -fast.


       -features=a

           Enables/disables the following Fortran language feature.


           [no%]mergestrings

               (SPARC)  Causes  the  compiler to put string literals and other
               suitable const or read-only data into a special section of  the
               binary where the linker removes duplicate strings.

               The default is -features=no%mergestrings, and duplicate strings
               are not removed.




       -fixed

           Assume fixed-format source input.

           Interpret all source files as Fortran  95  fixed-format.  Overrides
           the file suffix.


       -flags

           Synonym for -help.


       -fma[={none|fused}]

           Enables  automatic  generation of floating-point fused multiply-add
           instructions. -fma=none disables generation of these  instructions.
           -fma=fused  allows the compiler to attempt to find opportunities to
           improve the performance of the code by using  floating-point  fused
           multiply-add instructions.

           The default is -fma=none.

           The  minimum  architecture requirement is -xarch=sparcfmaf on SPARC
           and -xarch=avx2 on x86 to generate fused multiply-add instructions.
           The  compiler  marks  the  binary  program  if  fused  multiply-add
           instructions are generated in order to  prevent  the  program  from
           executing  on  platforms  that  do  not  support fused multiply-add
           instructions. When the  minimum  architecture  is  not  used,  then
           -fma=fused has no affect.

           Fused multiply-add instructions eliminate the intermediate rounding
           step between the multiply and add. Consequently, programs may  pro‐
           duce  different results when compiled with -fma=fused although pre‐
           cision will tend to increase rather than decrease.


       -fnonstd

           Initialize floating-point hardware to nonstandard preferences.

           This option is a macro for the combination


             -fns -ftrap=common

           which initializes the floating-point hardware to:


               o      Abort on exceptions.


               o      Flush denormalized numbers to zero if  it  will  improve
                      speed.

           To be effective, compile the main program with this flag.

           See  -fns  for a information on underflow and handling of denormal‐
           ized numbers.

           The -fnonstd option enables hardware traps for floating-point over‐
           flow, division by zero, and invalid operation exceptions. These are
           converted into SIGFPE signals, and if the  program  has  no  SIGFPE
           handler, it aborts. See ieee_handler(3M), the Oracle
                           Developer Studio 12.6: Numerical Computation Guide,
           and Fortran Programming Guide for more information.


       -fns[={yes|no}]

           Select nonstandard floating point.

           Optional use of =yes or =no provides a way  of  toggling  the  -fns
           flag  following  some  other macro flag that includes -fns, such as
           -fast.

           -fns is the same as -fns=yes. -fns=yes selects non-standard  float‐
           ing-point.  The  default, -fns=no, utilizes standard floating-point
           mode.

           -fast selects -fns.

           On SPARC platforms, nonstandard floating point mode disables "grad‐
           ual  underflow",  causing tiny results to be flushed to zero rather
           than producing subnormal numbers. It also causes subnormal operands
           to  be  silently replaced by zero. On those SPARC platforms that do
           not support gradual underflow and subnormal  numbers  in  hardware,
           use  of  this  option  can significantly improve the performance of
           some programs.

           On x86 platforms, this option is enabled only for Pentium  III  and
           Pentium 4 processors (sse or sse2).

           On  x86,  -fns  selects SSE flush-to-zero mode and where available,
           denormals-are-zero mode. This flag causes subnormal results  to  be
           flushed  to  zero. Where available, this flag also causes subnormal
           operands to be treated as zero.

           This flag has no effect on traditional  x87  floating-point  opera‐
           tions not utilizing the SSE or SSE2 instruction set.

           Warning:  When  nonstandard  mode is enabled, floating point arith‐
           metic can produce results that do not conform to  the  requirements
           of  the  IEEE  754  standard. See the Oracle Developer Studio 12.6:
           Numerical
                           Computation Guide and the Oracle  Developer  Studio
           12.6: Fortran User'
                         Guide for more information.

           This  option is effective only if used when compiling the main pro‐
           gram.


       -fpover[={yes|no}]

           Detect floating-point overflow in formatted input.

           With -fpover=yes specified, the I/O library will  detect  floating-
           point  overflows  in formatted input and cause an arithmetic excep‐
           tion. Combine with -ftrap to get full diagnostic information.

           The default is no such overflow detection (-fpover=no). -fpover  is
           equivalent to -fpover=yes.


       -fpp

           Force preprocessing of input files with fpp.

           Pass  all the input source files listed on the command line through
           the fpp preprocessor, regardless of  file  extension.  (Files  with
           .F90,  .F95,  .F,  F03  extension are automatically preprocessed by
           fpp.)

           See also: -xpp


       -fopenmp

           Same as -xopenmp=parallel.


       -fprecision=p

           (x86)  Initialize  non-default  floating-point  rounding  precision
           mode.

           On  x86,  sets  the floating-point precision mode to either single,
           double, or extended.

           When p is single or double, this flag causes the rounding precision
           mode  to  be set to single or double precision respectively at pro‐
           gram initiation. When p is extended or the -fprecision flag is  not
           used, the rounding precision mode is initialized to extended preci‐
           sion.

           This option is effective only on x86 systems and only if used  when
           compiling  the main program, but is ignored if compiling for 64-bit
           platforms (-m64), or SSE2-enabled processors (-xarch=sse2).  -fpre‐
           cision is ignored on SPARC platforms.


       -free

           Assume free-format source input.

           Interpret all source files as Fortran 95 free-format. Overrides the
           file suffix.


       -fround=r

           Select the IEEE rounding mode in effect at startup.

           r must be one of: nearest, tozero, negative, or positive

           The default is -fround=nearest.

           When r is tozero, negative, or positive this flag causes the round‐
           ing  direction  mode to be set to round-to-zero, round-to-negative-
           infinity, or round-to-positive-infinity respectively when the  pro‐
           gram begins execution. When r is nearest or the -fround flag is not
           used, the rounding direction mode is not altered from  its  initial
           value (round-to-nearest by default).

           This  option is effective only if used when compiling the main pro‐
           gram.

           Note that compiling with -xvector  or  -xlibmopt   require  default
           rounding.  Programs  that  link with libraries compiled with either
           -xvector or -xlibmopt or both must ensure that default rounding  is
           in effect.


       -fserialio

           A  linking  option that specifies that the program does not perform
           I/O in more than one thread at a time. It allows Fortran I/O state‐
           ments  to  be  executed without performing synchronization to avoid
           race conditions. This option should be specified only when creating
           an  executable  program. It should not be specified when creating a
           shared object library.


       -fsimple[=n]

           Select floating-point optimization preferences.

           Allow the optimizer  to  make  simplifying  assumptions  concerning
           floating-point arithmetic.

           If n is present, it must be 0, 1, or 2.

           If -fsimple is not specified, f95 uses -fsimple=0. If only -fsimple
           is specified, f95 uses -fsimple=1.


           -fsimple=0

               Permit no simplifying assumptions.  Preserve  strict  IEEE  754
               conformance.


           -fsimple=1

               Allow conservative simplifications. The resulting code does not
               strictly conform to IEEE 754.

               With -fsimple=1, the optimizer can assume the following:


                   o      IEEE 754  default  rounding/trapping  modes  do  not
                          change after process initialization.


                   o      Computations  producing no visible result other than
                          potential  floating  point   exceptions   might   be
                          deleted.


                   o      Computations  with Infinity or NaNs as operands need
                          not propagate NaNs to their results; e.g., x*0 might
                          be replaced by 0.


                   o      Computations do not depend on sign of zero.

               With  -fsimple=1, the optimizer is not allowed to optimize com‐
               pletely without regard to roundoff or exceptions.  In  particu‐
               lar,  a  floating-point  computation  cannot be replaced by one
               that produces different results with rounding modes  held  con‐
               stant at run time.


           -fsimple=2

               In  addition  to  -fsimple=1, permits aggressive floating-point
               optimizations that can cause many programs to produce different
               numeric  results  due to changes in rounding. Also, enables use
               of SIMD instructions to compute reductions when compiling  with
               -xvector=simd.

               In particular, the Fortran standard rule requiring compilers to
               honor explicit parentheses  around  subexpressions  to  control
               expression  evaluation  order  might be broken with -fsimple=2.
               This could result in numerical rounding differences  with  pro‐
               grams that depend on this rule.

               For example, with -fsimple=2, the compiler might evaluate C-(A-
               B) as (C-A)+B, breaking  the  standard's  rule  about  explicit
               parentheses,  if  the  resulting  code is better optimized. The
               compiler might also replace repeated computations of  x/y  with
               x*z,  where z=1/y is computed once and saved in a temporary, to
               eliminate the costly divide operations.

               Programs that depend on particular properties of floating-point
               arithmetic should not be compiled with -fsimple=2.

               -fsimple=2  allows  fp-transformations  which  may introduce fp
               exceptions.

               -fast selects -fsimple=2.




       -fstore

           (x86) Force precision of floating-point expressions.

           For assignment statements, this option  forces  all  floating-point
           expressions  to  the  precision  of  the  destination variable. The
           default is -fstore. However, the -fast option includes -nofstore to
           disable  this option. Follow -fast with -fstore to turn this option
           back on.


       -ftrap=t

           Set floating-point trapping mode.

           This option sets the IEEE floating-point trapping that is in effect
           at startup.

           t  is  a  comma-separated  list that consists of one or more of the
           following:

           %all, %none, common, [no%]invalid,  [no%]overflow,  [no%]underflow,
           [no%]division, [no%]inexact.

           The  f95  default is -ftrap=common. (Note that the default with f77
           was -ftrap=%none.)

           This option the IEEE 745 trapping mode in  effect  at  startup  but
           does  not install a SIGFPE handler. You can use ieee_handler(3M) or
           fex_set_handling(3M) to simultaneously enable traps and  install  a
           SIGFPE  handler.  If  you  specify more than one value, the list is
           processed sequentially from left to right.

           Example: Set all traps except inexact:


             -ftrap=%all,no%inexact

           The meanings are the same as for the ieee_flags function:



           [no%]division

               [Do not] Trap on division by zero.


           [no%]inexact

               [Do not] Trap on inexact result.


           [no%]invalid

               [Do not] Trap on invalid operation.


           [no%]overflow

               [Do not] Trap on overflow.


           [no%]underflow

               [Do not] Trap on underflow.


           %all

               Trap on all the above.


           %none

               Trap on none of the above.


           common

               Trap on invalid, division by zero, and overflow.


           Note that the [no%] form of the option is used only to  modify  the
           meanings  of  the %all or common value and must be used with one of
           these values, as shown in the exam  ple.  The  [no%]  form  of  the
           option by itself does not explicitly cause a particular t rap to be
           disabled.

           To be effective this option must be used when  compiling  the  main
           program.


       -fvisibility

           The  âfvisibility=v option is equivalent to the -xldscope option as
           follows:


           -fvisibility=default      -fvisibility=default  is  equivalent   to
                                     -xldscope=global


           -fvisibility=internal     -fvisibility=internal  is  equivalent  to
                                     -xldsdope=hidden


           -fvisibility=protected    -fvisibility=protected is  equivalent  to
                                     -xldscope=symbolic


           -fvisibility=hidden       -fvisibility=hidden   is   equivalent  to
                                     -xldscope=hidden




       -G

           Produce a shared object  rather  than  a  dynamically  linked  exe‐
           cutable.  This  option  is passed to ld and cannot be used with the
           -dn option.

           When you use the -G option, the compiler does not pass any  default
           -l  options  to ld. If you want the shared library to have a depen‐
           dency on another shared library, you must  pass  the  necessary  -l
           option on the command line.

           If  you  are  creating  a shared object by specifying -G along with
           other compiler options that must be specified at both compile  time
           and link time, make sure that those same options are also specified
           when you link with the resulting shared object. For  more  informa‐
           tion, see the -shared option.

           When you create a shared object, all the object files that are com‐
           piled for 64-bit SPARC architectures must also be compiled with  an
           explicit  -xcode  value  as  documented  under  the  description of
           -xcode.


       -g

           See -g[n].


       -g[n]

           Compile for debugging and performance analysis.

           Produce additional symbol  table  information  for  debugging  with
           dbx(1)  or  the  Oracle Developer Studio Debugger, and for analysis
           with the Oracle Developer Studio Performance Analyzer, analyzer(1).

           Although some debugging is possible without specifying -g, the full
           capabilities  of  dbx  are only available to those objects compiled
           with -g.

           To use the full capabilities of the Oracle Developer Studio Perfor‐
           mance  Analyzer,  compile  with -g. While some performance analysis
           features do not require -g, you must compile with -g to view  anno‐
           tated source, some function level information, and compiler commen‐
           tary messages. (See the analyzer(1) man page.)

           The commentary messages generated with -g  describe  the  optimiza‐
           tions  and  transformations  the compiler made while compiling your
           program. You must use er_src(1), er_print(1),  or  the  performance
           analyzer, analyzer(1) to view the commentary messages.

           Note  that commentary messages only appear if the compiler actually
           performed any optimizations. You are more likely to see  commentary
           messages  when  you  request high optimization levels, such as with
           -xO4, or -fast.

           -g is implemented as a macro that expands to  various  other,  more
           primitive,  options.  See -xdebuginfo for the details of the expan‐
           sions.

           Values:


           -g           Produce standard debugging information.


           -gnone       Do not produce any debugging information. This is  the
                        default.


           -g1          Produce file and line number as well as simple parame‐
                        ter information  that  is  considered  crucial  during
                        post-mortem debugging.


           -g2          Same as -g.


           -g3          Produce  additional  debugging information, which cur‐
                        rently consists only of macro definition  information.
                        This  added  information  can result in an increase in
                        the size of the debug information in the resulting  .o
                        and executable when compared to using only -g.




       -gz[=cmp-type]

           Equivalent  of  specifying  -xcompress=debug -xcompress_format=cmp-
           type.

           -gz with no sub-option is equivalent to -gz=zlib.


       -h           nm

           Specify the name of the generated dynamic shared library.

           If the library has an internal name, then whenever  the  executable
           is run, the linker must find a library with the same internal
                         name;  the file can be in any library search path. If
           the library has no internal name,  then  the  linker  must  find  a
           library  with  the  same  path  as when it was generated. Having an
           internal name allows more flexibility at runtime.

           Remarks:


               o      The space between the -h and nm is optional.


               o      -hnm is meaningless without -G.


               o      The names after -h and -o are usually the same.


               o      -hnm is a linker option.


               o      -hnm facilitates versions for dynamic libraries.

           See the Oracle Solaris 11.3 Linkers
                           and Libraries Guide.


       -help

           List the f95 command-line options.

           See also: -xhelp.


       -Ipath

           Add path to the include file search path.

           Insert directory path path at the start of the include file  search
           path. A space is allowed between -I and path.

           The  include  file  search path is the list of directories searched
           for include files. This search path is used by:


               o      the preprocessor directive #include


               o      the f95 statement INCLUDE

           Example: To search for include files in /usr/applib:


             f95 -I/usr/applib growth.F

           To invoke the preprocessor, you must be compiling source files with
           .F, .F90, .F95, and .F03 suffixes.

           The search path is also used to search for MODULE files.

           The  -Ipath search path is used while searching relative path names
           on INCLUDE statements, not absolute path names.  The  search  order
           for relative path names is:

               1.     The directory containing the source file


               2.     Directory paths named in -I options


               3.     Directories in the default list of the compiler


               4.     /usr/include




       -i8

           (There is no -i8 option.)

           Use  -xtypemap=integer:64  to specify 8-byte INTEGER with this com‐
           piler.


       -inline={%auto|[no%]function|...}

           Enable/disable inlining of specified user-written routines.

           Optimize by inlining the specified user-written routines  named  in
           the comma-separated list of functions and subroutines.

           The  argument list can include the string %auto to enable automatic
           inlining at optimization levels -O4 or higher.  Automatic  inlining
           is  normally  turned off when explicit inlining is specified on the
           command line by -inline.

           If you prefix the name of a routine on the list with no%,  inlining
           of that routine is inhibited.

           For  example, to enable automatic inlining while disabling inlining
           of a specific routine (gflub), use:


             -O5 -inline=%auto,no%gflub

           An empty list turns off automatic inlining:


             -fast -inline=sourcefile.f95

           Here, -fast implies -O5, which enables automatic inlining. However,
           the -inline= with an empty list disables it.

           Only  routines in the file being compiled are considered. The opti‐
           mizer decides which of these routines are appropriate for inlining.

           A routine is not inlined if any of the following conditions  apply,
           with no warnings:

               o      Optimization is less than -O3.


               o      The routine cannot be found.


               o      Inlining it is not profitable or safe.


               o      The  source  is  not  in  the file being compiled unless
                      -xipo is also specified.



       -iorounding[={compatible |             processor-defined}]

           Set rounding mode for formatted input/output.

           Sets the ROUND= specifier globally for all formatted input/output.

           With -iorounding=compatible, the value resulting from data  conver‐
           sion is the closer of the two nearest representations, or the value
           away from zero if the value is halfway between them.

           With -iorounding=processor-defined, the rounding mode is  the  pro‐
           cessor's  default mode. This is the default when -iorounding is not
           specified.

           Specifying  -iorounding  without  an  argument  is  equivalent   to
           -iorounding=compatible.


       -Kpic

           Synonym for -pic.


       -KPIC

           Synonym for -PIC.


       -keepmod[={yes|no}]

           If  a module file exists and its content is not changed by the lat‐
           est compilation, it will not be replaced even though  the  compila‐
           tion  is  supposed  to create a new module file with the same name.
           Since the content of the module file is unchanged by  the  compila‐
           tion, the only effect is that the time stamp of the existing module
           file will be preserved.

           The default, when -keepmod is not specified, is -keepmod=yes.  Note
           that  this  default  is  different from previous releases of Oracle
           Developer Studio Fortran.

           This option is best used together with the  dependencies  generated
           by  the  -xM  compilation  option. By retaining the time stamp of a
           module file when its content is  unchanged,  this  option  prevents
           cascading compilation for the source files depending on this module
           file. This is very helpful in an incremental build and can signifi‐
           cantly reduce the build time.

           When  this  option is used with user-specified dependencies and the
           user has an explicit build rule on how to create the module with  a
           dependency  on  the corresponding source file, the option can cause
           the source file to be recompiled multiple  times  even  though  the
           source  file  is  modified  only  once because of the outdated time
           stamp of the module file.


       -keeptmp

           Retains the temporary files that are created during compilation.


       -Lpath

           Add path to list of directory paths to search for libraries.

           path is added to the start of the search list. A space  between  -L
           and path is optional.

           Note:  Do  not  use  the  -Lpath  option  to  specify  /usr/lib  or
           /usr/ccs/lib, since they are searched  by  default,  and  including
           them here prevents using the unbundled libm.


       -lx

           Add library libx.a to the linker's list of search libraries.

           Direct  the loader to link with object library libx.a, where x is a
           string. See ld(1).

           Example: -lsumex links in the library libsumex.a

           Place -lx options after any .f, .F, or .o files. If you call  func‐
           tions in libx, and they reference functions in liby, then place -lx
           before -ly.

           The  linker  searches  for  libraries  in  several  locations.  For
           details,  see  the chapter, "Libraries," in the Fortran Programming
           Guide. See also ld(1).


       -libmil

           Inline selected libm math library routines for optimization.

           Some of the simpler library routines can be  inlined  by  the  com‐
           piler. This option inlines library calls depending on the floating-
           point options and platform currently being used.


       -library=sunperf

           Link  with  the  Oracle  Developer  Studio   supplied   performance
           libraries.


       -loopinfo

           Show which loops are parallelized.

           Show which loops are parallelized and which are not. This option is
           normally for use with the -autopar option. It generates a  list  of
           messages on standard error.


       -Mpath

           Specify MODULE directory, archive, or file.

           Look  in path for Fortran 95 modules referenced in the current com‐
           pilation. This path is searched in addition to the  current  direc‐
           tory.

           path can specify a directory, .a archive file of precompiled module
           files, or a .mod precompiled module file. The  compiler  determines
           the type of the file by examining its contents.

           A  .a archive file must be explicitly specified on a -M option flag
           to be searched for modules. The compiler will  not  search  archive
           files by default.

           Only  .mod  files with the same names as the MODULE names appearing
           on USE statements will be searched. For example, the statement  USE
           ME causes the compiler to look only for the module file me.mod.

           When  searching  for modules, the compiler gives higher priority to
           the directory where the module files are  being  written.  This  is
           controlled  by the -moddir flag or the MODDIR environment variable.
           When neither are specified, the default write-directory is the cur‐
           rent directory. When both are specified, the write-directory is the
           path specified by the -moddir flag.

           This means that if only the -M flag appears, the current  directory
           will  be searched for modules first before any object listed on the
           -M flag. To emulate the behavior of previous releases, use:


             -moddir=empty-dir -Mdir -M

           where empty-dir is the path to an empty directory.

           Directories named in -I  path will be searched for module files  if
           the  files  are  not  found  in any of the other locations that are
           searched.

           A space between the -M and the path is  allowed.  For  example,  -M
           /home/siri/PK15/Modules.

           On  Oracle  Solaris,  if the path identifies a regular file that is
           not an archive or a module file, the compiler passes the option  to
           the  linker, ld, which will treat it as a linker mapfile. This fea‐
           ture is provided as a convenience similar to the C and C++  compil‐
           ers.


       -m32 | -m64

           Specify data type model for compiled binary object.

           Use  -m32  to  create  32-bit executables and shared libraries. Use
           -m64 to create 64-bit executables and shared libraries.

           Object files or libraries compiled with -m32 cannot be linked  with
           object files or libraries compiled with -m64.

           When compiling applications with large amounts of static data using
           -m64, -xmodel=medium may also be required.

           Be aware that some Linux platforms do not support the medium model.

           Note that in previous compiler releases, the data type model, ILP32
           or  LP64,  was  implied  by  the choice of the instruction set with
           -xarch. Starting with the Sun  Studio  12  compilers,  this  is  no
           longer the case. On most platforms, just adding -m64 to the command
           line is sufficient to create 64-bit objects.

           On Oracle Solaris systems, -m32 is the default. On  Linux  systems,
           -m64 is the default.

           See also: -xarch


       -moddir=path

           Specify  the path to a directory where the compiler will write .mod
           MODULE files. The path can also be specified by  using  the  MODDIR
           environment variable. If both are specified, this option flag takes
           precedence.

           The default directory for writing .mod files is the current  direc‐
           tory.


       -mt[={yes|no}]

           Use this option to compile and link multithreaded code.

           This option passes -D_REENTRANT to the preprocessor.

           -mt=yes  is the default behavior of the compiler. -mt is equivalent
           to -mt=yes. If this behavior is not desired use the option -mt=no.

           The -xopenmp option (for  using  the  OpenMP  shared-memory  paral‐
           lelization API) includes -mt=yes automatically.

           Use  this option consistently. If you compile and link one transla‐
           tion unit with -mt, you must compile and link all units of the pro‐
           gram with -mt.

           To  determine  which  system  support  libraries  will be linked by
           default, compile with the -dryrun option.

           See also: -xnolib


       -native

           Optimize for the host system.

           The -native option is a synonym for the -xtarget=native option.


       -noautopar

           Cancel -autopar on the command line.

           Cancel automatic parallelization of loops invoked  by  -autopar  on
           the command line.


       -nodepend

           Cancel -depend in command line.

           Cancel  dependence  analysis  invoked by a -depend option appearing
           earlier in the command line.


       -nofstore

           (x86) Cancel -fstore on command line.

           Cancels forcing expressions to have the precision of  the  destina‐
           tion variable invoked by -fstore.

           -nofstore is invoked by -fast.  -fstore is the usual default.


       -nolib

           Do not link with system libraries.

           Do not automatically link with any system or language library; that
           is, do not pass any default -lx options to ld. The  default  is  to
           link  such  libraries into executables automatically, without users
           specifying them on the command line.

           The system and language libraries are required for final execution.
           It  is  your  responsibility  to link them in manually. This option
           provides you complete control (and responsibility).

           The -nolib option makes it easier to link  these  libraries  stati‐
           cally.


       -nolibmil

           Cancel -libmil on command line.

           Use with -fast to disable inlining of libm math routines:

             demo% f95 -fast -nolibmil ...



       -noreduction

           Cancel -reduction on command line.

           -reduction  is used along with parallelization options. This option
           cancels a -reduction appearing earlier on the command line.


       -norunpath

           Do not build a runtime library search path into the executable.

           If an executable file uses shared libraries, then the compiler nor‐
           mally  builds in a path that tells the runtime linker where to find
           those shared libraries. The path depends on the directory where you
           installed  the  compiler.  The -norunpath option prevents that path
           from being built into the executable.

           This option is helpful when libraries have been installed  in  some
           nonstandard location, and you do not wish to make the loader search
           down those paths when the executable is run at another  site.  Com‐
           pare with -R.


       -O[n]

           Specify optimization level (n).

           If  -O[n] is not specified, only a very basic level of optimization
           limited to local common subexpression  elimination  and  dead  code
           analysis is performed. A program's performance can be significantly
           improved when compiled with an explicit optimization level.

           Each -On level includes the optimizations performed at  the  levels
           below it. Generally, the higher the level of optimization, the bet‐
           ter the runtime performance. However,  higher  optimization  levels
           can  result  in  increased  compilation  time and larger executable
           files.

           There are five optimization levels that you can specify  with  -On.
           The  actual  optimizations  performed by the compiler at each level
           could change with each compiler release.

           Use of -O (which implies -O3) or -fast (which implies -O5) is  rec‐
           ommended for most programs.

           The -g option can be used with optimization.

           If  the  optimizer  runs out of memory, it attempts to proceed over
           again at a lower level of  optimization,  resuming  compilation  of
           subsequent routines at the original level.

           For details on optimization, see the Fortran Programming
                         Guide chapters Performance Profiling, and Performance
           and Optimization.



           -O     Optimize at the level most likely to give close to the maxi‐
                  mum  performance for many realistic applications (equivalent
                  to -O3).


           -O1    Do only the basic local optimizations (peephole).


           -O2    Do basic local and global optimization. This  level  usually
                  gives minimum code size.


           -O3    Adds  global  optimizations at the function level, and auto‐
                  matic inlining of functions whose body is smaller  than  the
                  overhead  of  calling the function. In general, this level,
                  and  -O4,usually   result   in   the   minimum   code   size
                  when used with  the -xspace option. Automatically turns on
                  -depend data dependence analysis.


           -O4    Adds automatic inlining of functions in the same  file.  -O4
                  results in larger code unless combined with -xspace.

                  See -inline to control which routines are inlined.


           -O5    Does  the  highest  level of optimization, suitable only for
                  the small fraction of a program that uses the largest  frac‐
                  tion  of  computer  time.  Uses optimization algorithms that
                  take more compilation time or that do not  have  as  high  a
                  certainty  of improving execution time. Optimization at this
                  level is more likely to improve performance if  it  is  done
                  with profile feedback. See -xprofile=collect|use.


           Interactions:

           If  you use -g and the optimization level is -O3 or lower, the com‐
           piler provides best-effort symbolic information  with  almost  full
           optimization. Tail-call optimization and back-end inlining are dis‐
           abled.

           For more information, see Oracle
                           Developer Studio 12.6:  Debugging  a  Program  with
           dbx.

           See also: -fast, -xprofile=p,  csh(1) man page


       -o           filename

           Names the output file filename, instead of the default a.out. file‐
           name cannot be the same as sourcefile since cc does  not  overwrite
           the source file.

           filename  must have an appropriate suffix. When used with -c, file‐
           name specifies the target .o object file; with -G it specifies  the
           target .so library file. This option and its argument are passed to
           ld.


       -onetrip

           Enable one-trip DO loops.

           Compile DO loops so they are performed at least once if reached.

           Fortran 95 DO loops are not performed at all if the upper limit  is
           smaller than the lower limit, unlike some legacy implementations of
           Fortran.


       -openmp

           Synonym for -xopenmp.


       -p

           (Obsolete) Compile for profiling with prof.

           Prepare object files for profiling with prof(1). This option  makes
           profiles  by  procedure, showing the number of calls to each proce‐
           dure and the percent of time used by each procedure.

           For separate compile and link steps, and if you  compile  with  -p,
           then be sure to link with -p.

           This  option  is  now obsolete. Use -g and the performance analyzer
           analyzer(1) instead.


       -pad[=p]

           Insert padding for efficient use of cache.

           This option inserts padding between arrays or character strings  if
           they are:


               o      static local and not initialized, or


               o      in common blocks.

           For  either one, the arrays or character strings can not be equiva‐
           lenced.

           If =p is present, it must be one of the following (no spaces):



           %none           No padding is done.


           local           Pad local variables.


           common          Pad variables in common blocks.


           local,common    Both local and common padding is done.


           local and common can appear in any order.

           Defaults:

           The compiler default is to do no padding. Specifying -pad,  without
           a value is equivalent to -pad=local,common.

           The program must conform to the following restrictions:


               o      If -pad=common is specified for a file that references a
                      common block, it must be specified for  all  files  that
                      reference that common block.


               o      With  -pad=common  specified, the layout of variables in
                      the same common block in different program units must be
                      the same except for the names of the variables.


               o      Padding  is  dependent  on  the  setting of -xcache. All
                      files must be compiled with the  same  -xcache  settings
                      when -pad=common is used.


               o      Do  not  specify  -pad=common if the program overindexes
                      arrays in common blocks. The  padding  inserted  between
                      arrays  by  the compiler will interfere with the assumed
                      layout of the data, and will cause the array  references
                      to fail in unpredictable ways.


               o      EQUIVALENCE  declarations  involving  common block vari‐
                      ables will cause warning messages that padding has  been
                      inhibited by EQUIVALENCE when compiled with -pad=common.
                      These arrays will not be padded.

           It is the programmer's responsibility  to  make  sure  that  common
           blocks  are  compiled consistently when -pad is used. Common blocks
           appearing in different program units that  are  compiled  inconsis‐
           tently  with  -pad=common  will cause errors. Compiling with -Xlist
           will report when common blocks with the same  name  have  different
           lengths in different program units.


       -pg

           Prepares  the  object  code  to  collect  data  for  profiling with
           gprof(1). -xpg is a synonym for -pg.

           Invokes a runtime recording mechanism that produces a gmon.out file
           (at normal termination).


           Note -




             There  is  no  advantage  compiling with -xprofile if you specify
             -xpg. The two do not prepare or use data provided by the other.


           Profiles are generated by using prof or  gprof  on  64  bit  Oracle
           Solaris  platforms or just gprof on 32 bit Oracle Solaris platforms
           include approximate user CPU times. These times are derived from PC
           sample  data  (see pcsample(2)) for routines in the main executable
           and routines in shared libraries specified as linker arguments when
           the  executable is linked. Other shared libraries (libraries opened
           after process startup using dlopen(3DL)) are not profiled.

           On 32 bit Oracle Solaris systems, profiles generated using  prof(1)
           are  limited to routines in the executable. 32 bit shared libraries
           can be profiled by linking  the  executable  with  -xpg  and  using
           gprof(1).

           The  latest Oracle Solaris releases do not include system libraries
           compiled with -p. As a result, profiles collected on current Oracle
           Solaris  platforms  do  not  include call counts for system library
           routines.

           Note: On x86 systems, -xpg  is  incompatible  with  -xregs=frameptr
           because the gprof runtime library requires a valid frame pointer to
           determine the return address of a profiled routine. Note also  that
           compiling  with  -fast  on x86 systems will invoke -xregs=frameptr.
           Compile with the following instead:


             -fast -xregs=no%frameptr -xpg

           Note: The compiler options -p, -pg, or -xpg should not be  used  to
           compile  multi-threaded  programs,  because the runtime support for
           these options is not thread-safe. If a program that  uses  multiple
           threads is compiled with these options invalid results or a segmen‐
           tation fault could occur at runtime.

           For separate compile and link steps, if you compile with -pg,  then
           link with -pg.

           Warning: Binaries compiled with -xpg for gprof profiling should not
           be used with binopt(1), as they are incompatible and can result  in
           internal errors.


       -pic

           Compile position-independent code for shared library.

           On SPARC, -pic is equivalent to -xcode=pic13.

           On x86, produces position-independent code. Use this option to com‐
           pile source files when building a shared library. Each reference to
           a  global  datum  is generated as a dereference of a pointer in the
           global offset table. Each function call is generated in pc-relative
           addressing mode through a procedure linkage table.


       -PIC

           On SPARC, -PIC is equivalent to -xcode=pic32.

           On x86, -PIC is identical to -pic.


       -preserve_argvalues[=simple|none|complete]

           (x86)  Saves  copies  of  register-based  function arguments in the
           stack.

           When none is specified or if the -preserve_argvalues option is  not
           specified on the command line, the compiler behaves as usual.

           When simple is specified, up to six integer arguments are saved.

           When complete is specified, the values of all function arguments in
           the stack trace are visible to the user in the proper order.

           The values are not updated during the function lifetime on  assign‐
           ments to formal parameters.


       -Qoption           pr ls

           Pass option list ls to the compilation phase pr.

           This option is used primarily by customer service.


       -qp

           Synonym for -p.


       -R           list

           Build library search paths into executable.

           With  this option, the linker, ld(1), adds a list of library search
           paths into the executable file.

           list is a colon-separated  list  of  directories  used  to  specify
           library  search  paths  to the runtime linker. The list is added to
           the default list that f95 passes to the linker.

           The blank between -R and list is optional.

           Multiple instances of this option are concatenated  together,  with
           each list separated by a colon.

           Use  this  option  if you want to export an executable that can run
           without any special option for paths to your dynamic libraries.

           Building an executable with this option adds  paths  to  a  default
           path that is always searched last:


             <installpath>/lib

           The  default  library search order can be seen by using the -dryrun
           option and examining the -Y option of the ld invocation.


       -r8const

           Promote single-precision constants to REAL*8 constants.

           All single precision literal constants are promoted to REAL*8. Dou‐
           ble-precision constants (REAL*8) are not promoted.

           This  flag applies only to constants. Use -xtypemap to promote both
           constants and variables.

           Use this flag carefully. It could  cause  interface  problems  when
           calling a routine with a REAL*4 literal constant as an actual argu‐
           ment where a REAL*4 value is expected. It could also cause problems
           with  programs  reading  unformatted  data files written by a write
           statement with a literal REAL*4 constant on its I/O list.


       -recl=a[,b]

           Set default output record length.

           Set the default record length (in characters) for  either  or  both
           preconnected  units  output  (standard  output) and error (standard
           error).

           This option must be specified using one of the following forms:



             -recl=out:N
             -recl=error:N
             -recl=out:N1,error:N2
             -recl=error:N1,out:N2
             -recl=all:N


           where N, N1, N2 are all positive integers in the range from  72  to
           2147483646.

           out  refers  to  standard  output, error to standard error, and all
           sets the default record length to both.

           The default is -recl=all:80.

           This option is only effective if the program being compiled  has  a
           Fortran main program.


       -reduction

           Parallelize reduction operations in loops.

           Analyze loops for reduction in automatic parallelization. To enable
           parallelization of reduction loops,  specify  both  -reduction  and
           -autopar.

           Example: demo% f95 -autopar -reduction any.f

           A  loop  that  transforms  the  elements  of an array into a single
           scalar value is called a reduction operation. For example,  summing
           the elements of a vector is a typical reduction operation. Although
           these operations violate the criteria for parallelization, the com‐
           piler can recognize them and parallelize them as special cases when
           -reduction is specified. See the Fortran Programming Guide  chapter
           Parallelization  for information on reduction operations recognized
           by f95. If you specify -reduction without  -autopar,  the  compiler
           issues a warning.

           There is always potential for roundoff error with reduction.


       -S

           Compile and only generate assembly code.

           Compile  the  named programs and leave the assembly language output
           on corresponding files suffixed .s (no .o file is created).


       -s

           Strip the symbol table from the executable file.

           This option makes the executable file smaller and more difficult to
           reverse engineer. However, this option prevents debugging.


       -shared

           Produces  a  shared  object  rather  than a dynamically-linked exe‐
           cutable. This option is passed to ld (as -G), and  cannot  be  used
           with the -dn option.

           When  you  use  the  -shared option, the compiler passes default -l
           options to ld, which are the same options that would be  passed  if
           you created an executable.

           If  you  are  creating  a  shared  object by specifying the -shared
           option along with other compiler options that are specified at both
           compile  time  and link time, make sure that that those options are
           also specified when you link with the resulting shared object.

           When you create a shared object, all the object files that are com‐
           piled  for 64-bit SPARC architectures must also be compiled with an
           explicit -xcode  value  as  documented  under  the  description  of
           -xcode.

           For more information, see the -G option.


       -silent

           Suppress compiler messages.

           Normally,  f95  does  not issue messages, other than error diagnos‐
           tics, during compilation. This option is provided only for compati‐
           bility with older scripts and makefiles. -silent is the default and
           its use is redundant.


       -stackvar

           Force all local variables to be allocated on the stack.

           Allocates all the local variables and arrays in routines  onto  the
           memory  stack  unless  otherwise specified. This option makes these
           variables automatic rather than static and provides more freedom to
           the optimizer when parallelizing loops with calls to subprograms.

           -stackvar  recommended  for use with the -autopar option. -stackvar
           is automatically turned on with  the  -xopenmp,  -xopenmp=parallel,
           and  -xopenmp=noopt options. See the Parallelization chapter in the
           Fortran  Programming  Guide  for  additional  information  on  when
           -stackvar should and should not be used.

           Variables and arrays are local, unless they are:


               o      Arguments in a SUBROUTINE or FUNCTION statement (already
                      on stack)


               o      Global items in a COMMON or SAVE, or STATIC statement


               o      Initialized items in a type statement or a  DATA  state‐
                      ment, such as:

                        REAL X/8.0/ or DATA X/8.0/


           Putting large arrays onto the stack with -stackvar can overflow the
           stack causing segmentation faults. Increasing the stack size  might
           be required.

           The  initial  thread  executing the program has a main stack, while
           each helper thread of a multithreaded program has  its  own  thread
           stack.

           The  default  size  for  the  main  stack is about 8 Megabytes. The
           default helper thread stack size is 4 Megabytes on 32-bit platforms
           and 8 Megabytes on 64-bit platforms.

           The limit command (with no parameters) shows the current main stack
           size.

           Use the limit shell command to set the size (in Kilobytes)  of  the
           main  thread  stack.  For example, to set the main stack size to 64
           Megabytes, use this command:


             % limit stacksize 65536

           You can set the stack size to be used by each slave thread by  giv‐
           ing the STACKSIZE environment variable a value (in Kilobytes):


             % setenv STACKSIZE 8192

           This sets the stack size for each slave thread to 8 Mb.

           The  STACKSIZE  environment  variable also accepts numerical values
           with a suffix of either  B,  K,  M,  or  G  for  bytes,  kilobytes,
           megabytes, or gigabytes respectively. The default is kilobytes.

           See  the  Fortran  Programming Guide chapter on parallelization for
           details.

           See also -xcheck=stkovf to enable runtime checking for stack  over‐
           flow situations.


       -stop_status[={yes|no}]

           Enable the STOP statement to return an integer status value.

           The optional argument is either yes or no. The default is yes.

           With  -stop_status=yes a STOP statement can contain an integer con‐
           stant that will be passed to the environment as the program  termi‐
           nates.  This  value will be available as $status for the C shell or
           $? for the Bourne and Korn shells.

           The value on the STOP statement can be any  positive  integer.  The
           value  returned  to the shell will be modulo 256 (in the range 0 to
           255).


       -temp=dir

           Define directory for temporary files.

           Set the directory for temporary files used by f95 to be dir instead
           of  the  /tmp directory. This option has precedence over the TMPDIR
           environment variable.


       -time

           Show execution time for each compilation phase.


       -traceback[={%none|common|signals_list}]

           Issue a stack trace if a severe error occurs in execution.

           The -traceback option causes the executable to issue a stack  trace
           to  stderr, dump core, and exit if certain signals are generated by
           the program. If multiple threads generate a signal, a  stack  trace
           will only be produced for the first one.

           To use traceback, add the -traceback option to the compiler command
           line when linking. The option is also accepted at compile-time  but
           is  ignored unless an executable binary is generated. Using -trace‐
           back with -G to create a shared library is an error.



           %none
           none

               Disables traceback.



           common

               Specifies that a stack trace should be issued if any of  a  set
               of   common  signals  is  generated:  sigill,  sigfpe,  sigbus,
               sigsegv, and sigabrt.


           signals_list

               Specifies a comma-separated list  of  names  of  signals  which
               should  generate  a  stack  trace, in lower case. The following
               signals (those that cause the generation of a core file) can be
               caught: sigquit, sigill, sigtrap, sigabrt, sigemt, sigfpe, sig‐
               bus, sigsegv, sigsys, sigxcpu, and sigxfsz.

               Any of these can be preceeded with no% to disable catching  the
               signal.

               For  example:  -traceback=sigsegv,sigfpe  will  produce a stack
               trace and core dump if either sigsegv or sigfpe is generated.


           If the option is not specified, the default is -traceback=%none.

           -traceback without any = sign implies -traceback=common.

           Note: If the core dump is not wanted, users may set  the  coredump‐
           size limit to zero using:


             % limit coredumpsize 0

           The -traceback option has no effect on runtime performance.


       -U

           Recognize upper and lower case in source files.

           Do  not  treat  uppercase  letters  as equivalent to lowercase. The
           default is to treat uppercase as lowercase except within character-
           string constants.

           With  this  option,  the compiler treats Delta, DELTA, and delta as
           different symbols.

           Portability and mixing Fortran with other languages  might  require
           use of -U.

           Calls to intrinsic functions are not affected by this option.


       -Uname

           Undefine preprocessor macro name.

           Removes  any  initial  definition  of the preprocessor macro symbol
           name created by -Dname on the  same  command  line,  or  implicitly
           placed  there  by  the command-line driver, regardless of the order
           the options appear. It has no affect on any  macro  definitions  in
           source  files.  Multiple  -Uname flags may appear on the same line,
           and there must be no space between -U and name.

           This option applies only to .F, .F90, .F95, and .F03  source  files
           that invoke the fpp or cpp preprocessors.


       -u

           Report on undeclared variables.

           Equivalent  to  specifying  IMPLICIT NONE in each compilation unit.
           This has the affect of making the default type of  variables  unde‐
           clared  rather  than  using  standard Fortran implicit typing. This
           option does  not  override  any  existing  IMPLICIT  statements  or
           explicit type statements.


       -unroll=n

           Enable unrolling of DO loops n times where possible.

           n is a positive integer.

           n =1 inhibits all loop unrolling.

           n > suggests to the optimizer that it unroll loops n times.

           If  any  loops  are  actually unrolled, then the executable file is
           larger.


       -use=list

           Specify implicit MODULE usage, globally. list is a  comma-separated
           list of module names or module file names. Compiling with -use=mod‐
           ule_name in effect adds a USE  module_name to each subprogram being
           compiled.  Similarly,  compiling  with -use=module_file_name effec‐
           tively adds to each subprogram being compiled  a  USE   module_name
           for each of the modules contained in the module_file_name file.


       -V

           Show name and version of each compilation phase.


       -v

           Verbose mode. Show compilation details.

           Like  -V  but  also details the options, macro flag expansions, and
           environment variables used by the driver.


       -vax=v

           Specify choice of VAX VMS Fortran extensions enabled.

           v must be one of the following  sub-options  or  a  comma-delimited
           list of a selection of these.



           blank_zero

               Interpret blanks in formatted input as zeros on internal files.


           debug

               Interpret  lines  starting with the character 'D' to be regular
               Fortran statements rather than comments, as in VMS Fortran.


           rsize

               Interpret unformatted record size to be in  words  rather  than
               bytes.


           struct_align

               Layout  components  of a VAX structure in memory as in VMS For‐
               tran, without padding. This option flag replaces  the  f77  -xl
               flag. Note: this can cause data misalignments ("bus error") and
               should be used with -xmemalign to avoid such errors.


           %all

               Enable all these VAX VMS features. (Default.)


           %none

               Disable all these VAX VMS features.


           Sub-options can be individually selected or turned off (by  preced‐
           ing with no%).

           Example:



             -vax=debug,rsize,no%blank_zero


           The  default  is  -vax=%none. If -vax is specified without any sub-
           options, it is equivalent to -vax=%all.


       -vpara

           Show parallelization warning messages.

           Issues warnings about potential parallel programming related  prob‐
           lems that may cause incorrect results with with -xopenmp and OpenMP
           API directives.

           Warnings are issued when the compiler detects a problematic use  of
           OpenMP  data  sharing attributes clauses, such as declaring a vari‐
           able "shared" whose accesses in an OpenMP parallel region may cause
           data  race, or declaring a variable "private" whose value in a par‐
           allel region is used after the parallel region.

           No warnings appear if all parallelization directives are  processed
           without issues.

           For example, f95 -xopenmp -vpara any.f


       -Wc,arg

           Passes the argument arg to component c. Each argument must be sepa‐
           rated from the preceding by only a comma. (A comma can be  part  of
           an  argument  by  escaping it by an immediately preceding backslash
           (\) character; the backslash is removed from  the  resulting  argu‐
           ment.)  All  -W arguments are passed after the regular command-line
           arguments.

           c can be one of the following:



           a    Assembler: (fbe), (gas)


           c    f95 code generator: (cg)(SPARC)


           d    f95 driver


           l    Link editor (ld)


           m    mcs


           O    (Capital letter 'O') Interprocedural optimizer


           o    Postoptimizer


           p    Preprocessor (fpp or cpp)


           0    (The number zero) Compiler (f90comp)


           2    Optimizer: (iropt)


           3    Static error checking: (previse)


           Note: You cannot use -Wd to pass the f95 options listed in this man
           page to the Fortran compiler.

           For example, -Wa,-o,objfile passes -o and objfile to the assembler,
           in that order; also -Wl,-I,name causes the linking phase  to  over‐
           ride the default name of the dynamic linker, /usr/lib/ld.so.1.

           The  order  in  which  the  argument(s)  are  passed to a tool with
           respect to the other specified command line options may change.


       -w[{0|1|2|3|4}]

           Show or suppress warning messages.

           -w suppresses warning messages from the compiler.

           -w0 shows just error messages.

           -w1 shows errors and warnings. (This is the default.)

           -w2 shows errors, warnings, and cautions.

           -w3 shows errors, warnings, cautions, and notes.

           -w4 shows errors, warnings, cautions, notes, and comments.

           If you specify two options, and the second  one  overrides  all  or
           part of the first one, the compiler issues a warning.


       -Xlinker           arg

           Pass arg to the linker, ld.


       -Xlist[z]

           (Obsolete) This option is obsolete and might be removed in a future
           release.

           Produce listings and do global program checking.

           Find potential programming bugs. Invokes an extra compiler pass  to
           check  for  consistency  in calls and common across the global pro‐
           gram. Generates line-numbered source code listing with cross refer‐
           ences.

           Diagnostic  messages  from  -Xlist  are warnings and do not prevent
           compiling and linking.

           Be sure to correct all syntax errors first;  -Xlist  might  produce
           unpredictable  reports  when  run  on  a source program with syntax
           errors.

           Output is to a file with a name like the first file name but with a
           .lst extension.

           Example: Errors, listing, and xref to file1.lst


             demo% f95 -Xlist file1.f file2.f

           Use  the  -Xlist options to check for interprocedural problems, but
           only after  all  other  compiler  errors  and  warnings  have  been
           resolved.

           Summary of -Xlist Sub-options



           -Xlist              Default: listings, errors, xref


           -Xlistc             Call graphs and errors.


           -XlistE             Errors only (no xref or listings)


           -Xlisterr           Suppress all -Xlist error messages


           -Xlisterr[n]        Suppress -Xlist error message n.


           -Xlistf             Errors,  listing,  and cross references, but no
                               object files compiled.


           -Xlisth             Terminate if errors detected.


           -XlistI             Check include files also


           -XlistL             Listings only (no xref)


           -Xlistl[n]          Page length is n lines


           -XlistMP            (SPARC) Check OpenMP directives.


           -Xlisto             Outpnumt to nm instead of to file.lst


           -Xlists             Suppress unreferenced names  from  cross-refer‐
                               ence table.


           -Xlistvn            Set checking level to n (1,2,3, or 4) - default
                               is 2


           -Xlistw[nnn]        Set output line width to n; default is 79


           -Xlistwar           Suppress all -Xlist warning messages


           -Xlistwar[n]        Suppress -Xlist warning message n.


           -XlistX             Cross-reference only (no listings)


           See the Fortran Programming Guide for details.


       -xaddr32[={yes|no}]

           (x86/x64) The -xaddr32=yes compilation flag restricts the resulting
           executable or shared object to a 32-bit address space.

           An  executable  that is compiled in this manner results in the cre‐
           ation of a process that is restricted to a 32-bit address space.

           When -xaddr32=no is specified a usual 64 bit binary is produced.

           If the -xaddr32 option is not specified, -xaddr32=no is assumed.

           If only -xaddr32 is specified -xaddr32=yes is assumed.

           This option is only applicable to -m64  compilations  and  only  on
           Oracle  Solaris platforms supporting SF1_SUNW_ADDR32 software capa‐
           bility.

           Since Linux kernel does not support addres  space  limitation  this
           option is not available on Linux. The -xaddr32 option is ignored on
           Linux.

           When  linking,  if  a  single  object  file   was   compiled   with
           -xaddr32=yes  the  whole output file is assumed to be compiled with
           -xaddr32=yes.

           A shared object that is restricted to a 32-bit address  space  must
           be  loaded  by  a  process that executes within a restricted 32-bit
           mode address space.

           For more information refer to the SF1_SUNW_ADDR32 software capabil‐
           ities  definition, described in the Oracle Solaris 11.3 Linkers and
           Libraries
                       Guide.


       -xalias[=type_list]

           Specify degree of aliasing to be assumed by the compiler.

           Nonstandard programming techniques can  introduce  situations  that
           interfere  with the compiler's optimization strategies. In particu‐
           lar, the use of overindexing, pointers, and passing global or  non-
           unique  variables  as  subprogram  arguments,  introduce  ambiguous
           aliasing situations that prevent the compiler from applying certain
           optimizations,  and  can introduce ambiguities that could result in
           unexpected results.

           See the Oracle Developer Studio
                           12.6: Fortran  User'  Guide  for  more  information
           about aliasing.

           Use the -xalias flag to inform the compiler about the ways in which
           the program deviates from the aliasing requirements of the  Fortran
           standard.

           The  flag  may  appear  with or without a list. The keywords on the
           list are comma-separated, and each keyword  indicates  an  aliasing
           situation  present  in the program. Each keyword may be prefixed by
           no% to indicate an aliasing type that is not present.

           The aliasing keywords are:



           dummy

               Dummy (formal) subprogram parameters can alias each  other  and
               global variables.


           no%dummy

               (Default).  Usage of dummy parameters follows the Fortran stan‐
               dard and may not alias each other or global variables.


           craypointer

               (Default). Cray pointers can point at any global variable or  a
               local  variable  whose  address is taken by the LOC() function.
               Also, two Cray pointers might point at the same data. This is a
               safe assumption that could inhibit some optimizations.


           no%craypointer

               Cray  pointers  point  only at unique memory addresses, such as
               obtained from malloc(). Also, no two Cray pointers point at the
               same  data.  This  assumption  enables the compiler to optimize
               Cray pointer references.


           actual

               The compiler treats actual subprogram arguments as if they were
               global  variables.  Passing  an  argument to a subprogram might
               result in aliasing through Cray pointers.


           no%actual

               (Default). Passing an  argument  does  not  result  in  further
               aliasing.


           overindex

               A  reference  to an element of an array in a COMMON block could
               refer to any element in a COMMON block  or  equivalence  group.
               Passing  any  element of a COMMON block or equivalence group as
               an actual argument to a subprogram gives access to any  element
               of that COMMON block or equivalence group to the called subpro‐
               gram. Elements of a sequence-derived type  are  treated  as  if
               they  were  COMMON  blocks. Individual array bounds may be vio‐
               lated, but except as noted above, the referenced array  element
               is assumed to stay within the array.

               Array  syntax,  WHERE, and FORALL statements are not considered
               for overindexing.


           no%overindex

               (Default). Array bounds are not violated. Array  references  do
               not reference other variables.


           ftnpointer

               Calls  to  external  functions  might cause Fortran POINTERS to
               point at TARGET variables of any type, kind, or rank.


           no%ftnpointer

               (Default). Fortran pointers follow the rules of the standard.


           The default, when -xalias is not specified on the compiler  command
           line, corresponds to:



             -xalias=no%dummy,craypointer,no%actual,no%overindex,\
                      no%ftnpointer


           Specifying  -xalias  without  a list gives the best performance for
           most programs that do not violate Fortran aliasing rules, and  cor‐
           responds to:



             -xalias=no%dummy,no%craypointer,no%actual,no%overindex,\
                      no%ftnpointer


           To  be  effective, -xalias should be used when compiling with opti‐
           mization levels -xO3 and higher.

           See the chapter on Porting in the Fortran Programming
                         Guide for further details.


       -xannotate[={yes|no}]

           Instructs the compiler to create binaries that can later be used by
           the  optimization  and  observability  tools  binopt(1),  code-ana‐
           lyzer(1), discover(1), collect(1), and uncover(1).

           The default on Oracle Solaris is  -xannotate=yes.  The  default  on
           Linux  is  -xannotate=no.  Specifying -xannotate without a value is
           equivalent to -xannotate=yes.

           For optimal use of the optimization and observability tools,  -xan‐
           notate=yes must be in effect at both compile and link time.

           Compile  and  link  with  -xannotate=no to produce slightly smaller
           binaries and libraries when optimization  and  observability  tools
           will not be used.


       -xarch=isa

           Specifies the target architecture instruction set (ISA).

           This  option  limits  the  code  generated  by  the compiler to the
           instructions of  the  specified  instruction  set  architecture  by
           allowing  only  the specified set of instructions. This option does
           not guarantee use of any target-specific instructions. However, use
           of  this option can affect the portability of a binary program. See
           the Notes and Warnings sections at the end of this entry.

           Note: The compiler and linker will mark .o  files  and  executables
           that  require  a  particular  instruction set architecture (ISA) so
           that the executable will not be loaded at runtime  if  the  running
           system does not support that particular ISA.

           Note: Use the -m64 or -m32 option to specify the intended data type
           model, LP64 (64-bits) or ILP32 (32-bits) respectively.  The  -xarch
           flag  no  longer indicates the data type model, except for compati‐
           bility with previous releases, as indicated below.

           If you compile and link in separate steps, make  sure  you  specify
           the same value for -xarch in both steps.

           Values for all platforms:



           generic

               This option uses the instruction set common to most processors.
               This is the default and is equivalent  to  -xarch=sse2  on  x86
               platforms and -xarch=sparcvis2 on SPARC platforms.


           native

               Compile for good performance on this system.

               The  compiler  chooses  the appropriate setting for the current
               system processor it is running on.


           Values specific to SPARC platforms:



           sparc

               Compile for the SPARC-V9 ISA.

               Compile for the V9 ISA, but without the Visual Instruction  Set
               (VIS),  and  without  other  implementation-specific ISA exten‐
               sions. This option enables the compiler to  generate  code  for
               good performance on the V9 ISA.


           sparc4

               Compile for the SPARC4 version of the SPARC-V9 ISA.

               Enables  the  compiler  to  use  instructions from the SPARC-V9
               instruction set, plus the UltraSPARC extensions, which includes
               VIS  1.0, the UltraSPARC-III extensions, which includes VIS2.0,
               the fused floating-point multiply-add  instructions,  VIS  3.0,
               and SPARC4 instructions.


           sparc4b

               Compile for the SPARC4B version of the SPARC-V9 ISA.

               Enables  the  compiler  to  use  instructions from the SPARC-V9
               instruction set, plus the UltraSPARC extensions, which includes
               VIS  1.0, the UltraSPARC-III extensions, which includes VIS2.0,
               the SPARC64 VI extensions for floating-point multiply-add,  the
               SPARC64  VII extensions for integer multiply-add, and the PAUSE
               and CBCOND instructions from the SPARC T4 extensions.


           sparc4c

               Compile for the SPARC4C version of the SPARC-V9 ISA.

               Enables the compiler to  use  instructions  from  the  SPARC-V9
               instruction set, plus the UltraSPARC extensions, which includes
               VIS 1.0, the UltraSPARC-III extensions, which includes  VIS2.0,
               the  SPARC64 VI extensions for floating-point multiply-add, the
               SPARC64 VII extensions for integer multiply-add, the VIS3B sub‐
               set of the VIS 3.0 instructions a subset of the SPARC T3 exten‐
               sions, called the VIS3B subset of VIS 3.0, and  the  PAUSE  and
               CBCOND instructions from the SPARC T4 extensions.


           sparc5

               Compile for the SPARC5 version of the SPARC-V9 ISA.

               Enables  the  compiler  to  use  instructions from the SPARC-V9
               instruction set, plus the extensions, which includes  VIS  1.0,
               the  Ultra  SPARC-III  extensions,  which  includes VIS2.0, the
               fused  floating-point  multiply-add  instructions,   VIS   3.0,
               SPARC4, and SPARC5 instructions.


           sparcace

               Compile for the sparcace version of the SPARC-V9 ISA.

               Enables  the  compiler  to  use  instructions from the SPARC-V9
               instruction set, plus the UltraSPARC extensions, including  the
               Visual  Instruction  Set  (VIS) version 1.0, the UltraSPARC-III
               extensions, including the Visual Instruction Set (VIS)  version
               2.0, the SPARC64 VI extensions for floating-point multiply-add,
               the SPARC64 VII extensions for integer  multiply-add,  and  the
               SPARC64 X extensions for SPARCACE floating-point.


           sparcaceplus

               Compile for the sparcaceplus version of the SPARC-V9 ISA.

               Enables  the  compiler  to  use  instructions from the SPARC-V9
               instruction set, plus the UltraSPARC extensions, including  the
               Visual  Instruction  Set  (VIS) version 1.0, the UltraSPARC-III
               extensions, including the Visual Instruction Set (VIS)  version
               2.0, the SPARC64 VI extensions for floating-point multiply-add,
               the  SPARC64  VII  extensions  for  integer  multiply-add,  the
               SPARC64  X  extensions  for  SPARCACE  floating-point,  and the
               SPARC64 X+ extensions for SPARCACE floating-point.


           sparcace2

               Compile for the sparcace2 version of the SPARC-V9 ISA.

               Enables the compiler to  use  instructions  from  the  SPARC-V9
               instruction  set, plus the UltraSPARC extensions, including the
               Visual Instruction Set (VIS) version  1.0,  the  UltraSPARC-III
               extensions,  including the Visual Instruction Set (VIS) version
               2.0, the SPARC64 VI extensions for floating-point multiply-add,
               the  SPARC64  VII  extensions  for  integer  multiply-add,  the
               SPARC64 X extensions for SPARCACE floating-point,  the  SPARC64
               X+  extensions for SPARCACE floating-point, and the SPARC64 XII
               extensions for SPARCACE floating-point.


           sparcvis

               Compile for the SPARC-V9 ISA plus VIS.

               Compile for SPARC-V9 plus the Visual Instruction Set (VIS) ver‐
               sion  1.0,  and with UltraSPARC extensions. This option enables
               the compiler to generate  code  for  good  performance  on  the
               UltraSPARC architecture.


           sparcvis2

               Compile for the SPARC-V9 ISA with UltraSPARC III extensions.

               Enables the compiler to generate object code for the UltraSPARC
               architecture, plus the Visual  Instruction  Set  (VIS)  version
               2.0, and with UltraSPARC III extensions.


           sparcvis3

               Compile  for  the  SPARC-V9  ISA  with UltraSPARC III and VIS 3
               extensions.

               Enables the compiler to  use  instructions  from  the  SPARC-V9
               instruction  set, plus the UltraSPARC extensions, including the
               Visual Instruction Set (VIS) version  1.0,  the  UltraSPARC-III
               extensions,  including the Visual Instruction Set (VIS) version
               2.0,  the  fused  multiply-add  instructions,  and  the  Visual
               Instruction Set (VIS) version 3.1


           sparcfmaf

               Compile for the sparcfmaf version of the SPARC-V9 ISA.

               Enables  the  compiler  to  use  instructions from the SPARC-V9
               instruction set, plus the UltraSPARC extensions, including  the
               Visual  Instruction  Set  (VIS) version 1.0, the UltraSPARC-III
               extensions, including the Visual Instruction Set (VIS)  version
               2.0, and the SPARC64 VI extensions for floating-point multiply-
               add.

               Note that you must use  -xarch=sparcfmaf  in  conjunction  with
               -fma=fused  and  some optimization level to get the compiler to
               attempt to find opportunities to use the multiply-add  instruc‐
               tions automatically.


           sparcima

               Compile for the sparcima version of the SPARC-V9 ISA.

               Enables  the  compiler  to  use  instructions from the SPARC-V9
               instruction set, plus the UltraSPARC extensions, including  the
               Visual  Instruction  Set  (VIS) version 1.0, the UltraSPARC-III
               extensions, including the Visual Instruction Set (VIS)  version
               2.0, the SPARC64 VI extensions for floating-point multiply-add,
               and the SPARC64 VII extensions for integer multiply-add.


           v9

               Is equivalent to -m64 -xarch=sparc Legacy makefiles and scripts
               that  use  -xarch=v9  to obtain the 64-bit data type model need
               only use -m64.


           v9a

               Is equivalent to -m64 -xarch=sparcvis and is provided for  com‐
               patibility with earlier releases.


           v9b

               Is equivalent to -m64 -xarch=sparcvis2 and is provided for com‐
               patibility with earlier releases.


           Object binary files (.o) compiled with sparc and  sparcvis  can  be
           linked  and can execute together, but only on a sparcvis compatible
           platform.

           Object binary files (.o) compiled with sparc, sparcvis,  and  spar‐
           cvis2  can  be linked and can execute together, but only on a spar‐
           cvis2 compatible platform.

           For any particular choice, the generated executable could run  much
           more slowly on earlier architectures. Also, although quad-precision
           floating-point instructions are available in many of these instruc‐
           tion  set  architectures,  the compiler does not use these instruc‐
           tions in the code it generates.

           Values specific to x86 platforms:



           avx512

               May use 386, MMX, Pentium_pro, SSE, SSE2, SSE3, SSSE3,  SSE4.1,
               SSE4.2, AES, PCLMULQDQ, AVX, FSGSBASE, RDRND, F16C, AVX2, BMI1,
               BMI2, LZCNT, INVPCID, FMA, ADX, RDSEED, PREFETCHW, PREFETCHWT1,
               AVX512F,  AVX512CDI,  AVX512VLI, AVX512BW and AVX512DQ instruc‐
               tions.


           avx2_i

               May use 386, MMX, Pentium_pro, SSE, SSE2, SSE3, SSSE3,  SSE4.1,
               SSE4.2, AES, PCLMULQDQ, AVX, FSGSBASE, RDRND, F16C, AVX2, BMI1,
               BMI2,  LZCNT,  INVPCID,  FMA,  ADX,   RDSEED,   PREFETCHW   and
               PREFETCHWT1 instructions.


           avx2

               May  use 386, MMX, Pentium_pro, SSE, SSE2, SSE3, SSSE3, SSE4.1,
               SSE4.2, AES, PCLMULQDQ, AVX, FSGSBASE, RDRND, F16C, AVX2, BMI1,
               BMI2, LZCNT, INVPCID, and FMA instructions.


           avx_i

               May  use 386, pentium_pro, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
               SSE4.2, AES, PCLMULQDQ, FSGSBASE, RDRND, and F16C instructions.


           avx

               May use 386, pentium_pro, MMX, SSE, SSE2, SSE3, SSSE3,  SSE4.1,
               SSE4.2, AES, and PCLMULQDQ instructions.


           aes

               May  use 386, MMX, Pentium_pro, SSE, SSE2, SSE3, SSSE3, SSE4.1,
               SSE4.2, AES, and PCLMULQDQ instructions.


           sse4_2

               May use 386, MMX, Pentium_pro, SSE, SSE2, SSE3, SSSE3,  SSE4.1,
               and SSE4.2 instructions.


           sse4_1

               May  use  386,  MMX,  Pentium_pro,  SSE, SSE2, SSE3, SSSE3, and
               SSE4.1 instructions.


           ssse3

               May use 386, MMX,  Pentium_pro,  SSE,  SSE2,  SSE3,  and  SSSE3
               instructions.


           sse3

               May  use  386,  MMX,  Pentium_pro, SSE, SSE2, and SSE3 instruc‐
               tions.


           amdsse4a

               Uses the AMD SSE4a Instruction set.


           sse2

               May use 386, MMX, Pentium_pro, SSE, and SSE2 instructions.


           sse2a

               May use 386, MMX, Pentium_pro, SSE,  SSE2  and  AMD  extension:
               3DNow!, 3DNow! extension instructions for AMD processors.


           sse

               (Obsolete) Use -xarch-generic instead.


           ssea

               May  use  386, MMX, Pentium_pro, SEE and AMD extension: 3DNow!,
               3DNow! extension instructions for AMD processors.


           pentium_pro

               (Obsolete) Use -xarch-generic instead.


           pentium_proa

               May use 386, MMX, Pentium_pro and AMD extension: 3DNow!, 3DNow!
               extensions instructions for AMD processors.


           generic

               Uses the instruction set common to most processor.


           native

               Uses the instructions available on the current system processor
               the compiler is running on.


           Notes:

           If any part of a program is compiled or linked on an  x86  platform
           with  -m64, then all parts of the program must be compiled with one
           of these options as well.

           For details on the  various  Intel  instruction  set  architectures
           (SSE, SSE2, SSE3, SSSE3, and so on) refer to the Intel-64 and IA-32
           Intel Architecture Software Developer's Manual.

           Defaults:

           If -xarch=isa is not specified, the defaults are: -xarch=generic on
           SPARC platforms and -xarch=generic on x86/x64 platforms.

           Interactions:

           Although this option can be used alone, it is part of the expansion
           of the -xtarget option and can be used to override the -xarch value
           that is set by a specific -xtarget option. For example,


             -xtarget=T3

           expands to


             -xarch=sparcvis3 -xcache=8/16/4:6144/64/24 -xchip=T3

           Warnings:

           If  this  option  is used with optimization, the appropriate choice
           can provide good performance of the  executable  on  the  specified
           architecture.  An  inappropriate  choice,  however, might result in
           serious degradation of performance or in in a binary  program  that
           is not executable on all intended target platforms.


       -xassume_control[=a[,a]...]

           Set parameters to control ASSUME pragmas.

           Use  this flag to control the way the compiler handles ASSUME prag‐
           mas in the source code.

           See the Oracle Developer Studio
                           12.6: Fortran User' Guide for descriptions  of  the
           ASSUME pragmas.

           The  ASSUME pragmas provide a way for the programmer to assert spe‐
           cial information that the compiler can use for better optimization.
           These  assertions  may be qualified with a probability value. Those
           with a probability of 0 or 1 are marked as certain; otherwise  they
           are considered non-certain.

           Assertions  such  as  whether an upcoming branch will be taken, the
           range of an integer value or  expression,  the  trip  count  of  an
           upcoming  DO  loop,  among  others,  can be made with an associated
           probability or certainty.

           The sub-options recognized are:



           optimize

               The assertions made on ASSUME pragmas  affect  optimization  of
               the program.


           check

               The  compiler  generates  code  to check the correctness of all
               assertions marked as certain, and emits a  runtime  message  if
               the  assertion  is  violated; the program continues if fatal is
               not also specified.


           fatal

               When used with check, the program will terminate when an asser‐
               tion marked certain is violated.


           retrospective[:d]

               The  d  parameter is an optional tolerance value, and must be a
               real positive constant less than 1. The default is ".1". retro‐
               spective  compiles  code  to  count the truth or falsity of all
               assertions. Those outside the tolerance value d are  listed  on
               output at program termination.


           %none

               Ignores all ASSUME pragmas.


           If not specified on the compiler command-line, the default is -xas‐
           sume_control=optimize. This  means  that  the  compiler  recognizes
           ASSUME  pragmas  and they will affect optimization, but no checking
           is performed.

           If specified without  parameters,  -xassume_control  implies  -xas‐
           sume_control=check,fatal.  In  this  case  the compiler accepts and
           checks all certain  ASSUME pragmas, but they do  not  affect  opti‐
           mization.  Assertions  that are invalid cause the program to termi‐
           nate.


       -xautopar

           Synonym for -autopar.


       -xcache=c

           Define cache properties for use by optimizer.

           c must be one of the following:


               o      generic


               o      native


               o      s1/l1/a1[/t1]


               o      s1/l1/a1[/t1]:s2/l2/a2[/t2]


               o      s1/l1/a1[/t1]:s2/l2/a2[/t2]:s3/l3/a3[/t3]

           The si, li, ai, and ti, are defined as follows:



           si           The size of the data cache at level i, in kilobytes


           li           The line size of the data cache at level i, in bytes


           ai           The associativity of the data cache at level i


           ti           The number of hardware threads sharing  the  cache  at
                        level  i  The ti parameters are optional. A value of 1
                        is used if not present.


           This option specifies the cache properties that the  optimizer  can
           use.  It  does  not guarantee that any particular cache property is
           used.

           Although this option can be used alone, it is part of the expansion
           of the -xtarget option; its primary use is to override a value sup‐
           plied by the -xtarget option.

           The -xcache values are:


           generic

               Define the cache properties for good performance on most  plat‐
               forms. This is the default.


           native

               Define  the  cache properties for good performance on this host
               platform.


           s1/l1/a1[/t1]

               Define level 1 cache properties.


           s1/l1/a1[/t1]:s2/l2/a2[/t2]

               Define levels 1 and 2 cache properties.


           s1/l1/a1[/t1]:s2/l2/a2[/t2]:s3/l3/a3[/t3]

               Define levels 1, 2, and 3 cache properties.




       -xcheck[=n]

           Performs a runtime check for stack overflow of the main thread in a
           singly-threaded  program as well as slave-thread stacks in a multi‐
           threaded program. If a stack overflow is  detected,  a  SIGSEGV  is
           generated.  If your application needs to handle a SIGSEGV caused by
           a stack overflow differently than it  handles  other  address-space
           violations, see sigaltstack(2).

           n must be one of the following values.



           %all

               Perform all -xcheck checks.


           %none

               Do not perform any of the -xcheck checks.


           stkovf[action]

               Generate  code  to  detect  stack  overflow  errors at runtime,
               optionally specifying an action to be taken when a stack  over‐
               flow error is detected.

               A  stack overflow error occurs when a thread's stack pointer is
               set beyond the thread's allocated stack bounds. The  error  may
               not be detected if the new top of stack address is writable.

               A stack overflow error is detected if a memory access violation
               occurs as a direct result of the error, raising  an  associated
               signal  (usually SIGSEGV). The signal thus raised is said to be
               associated with the error.

               An undetected stack overflow error may result  in  silent  data
               corruption.   Preventing   undetected   stack  overflow  errors
               requires compiler and runtime support.

               If -xcheck=stkovf[action] is specified, the compiler  generates
               code  to  detect stack overflow errors in cases involving stack
               frames larger than the system page size. The  code  includes  a
               library call to force a memory access violation instead of set‐
               ting the stack pointer to an  invalid  but  potentially  mapped
               address (see _stack_grow(3C)).

               The  optional  action, if specified, must be one of the follow‐
               ing:



               :detect

                   If action is :detect, a detected stack  overflow  error  is
                   handled by executing the signal handler normally associated
                   with the error.

                   On  SPARC  Solaris,  -xcheck=stkovf:detect  is  enabled  by
                   default.  This  prevents silent corruption of the stack due
                   to  stack  overflow.  It  can  be  disabled  by  specifying
                   -xcheck=no%stkovf.


               :diagnose

                   If  action is :diagnose, a detected stack overflow error is
                   handled by  catching  the  associated  signal  and  calling
                   stack_violation(3C)  to  diagnose  the  error.  This is the
                   default behavior if no action is specified.

                   If a memory access violation is diagnosed as a stack  over‐
                   flow error, the following message is printed to stderr:


                     ERROR: stack overflow detected:
                     pc=<inst_addr>, sp=<sp_addr>

                   where  <inst_addr>  is the address of the instruction where
                   the error was detected, and <sp_addr> is the value  of  the
                   stack  pointer  at  the  time  that the error was detected.
                   After checking for stack overflow and  printing  the  above
                   message  if  appropriate, control passes to the signal han‐
                   dler normally associated with the error.


               -xcheck=stkovf:detect adds a stack bounds  check  on  entry  to
               routines  with  stack  frames larger than system page size (see
               _stack_grow(3C)). The relative cost of  the  additional  bounds
               check should be negligible in most applications.

               -xcheck=stkovf:diagnose  adds  a system call to thread creation
               (see sigaltstack(2)). The relative cost of the additional  sys‐
               tem  call depends on how frequently the application creates and
               destroys new threads.

               -xcheck=stkovf is supported only on Oracle Solaris.  The C run‐
               time  library  on  Linux does not support stack overflow detec‐
               tion.


           no%stkovf

               Turns off stack-overflow checking.


           init_local

               Perform special initialization of local variables.

               With this option the compiler initializes local variables to  a
               value  that is likely to cause an arithmetic exception if it is
               used before it is assigned by the program. Memory allocated  by
               the ALLOCATE statement will also be initialized in this manner.

               Module  variables,  STATIC  and SAVE local variables, and vari‐
               ables in COMMON blocks are not initialized.

               See the Oracle Developer
                                     Studio 12.6: C User's  Guide  description
               of  this option for a list of the predefined values used by the
               compiler to initialize variables.

               Exercise caution when using -xcheck  with  a  large  amount  of
               local data, such as arrays with more than 10,000 elements. This
               can cause the compiler's internal representation of the program
               to become very large when that local date is initialized, which
               can result in significantly  longer  compilation  times,  espe‐
               cially when combined with optimization levels greater than -02.


           no%init_local

               Do not initialize local variables.


           If   you   do   not  specify  -xcheck,  the  compiler  defaults  to
           -xcheck=%none and if you specify -xcheck without any arguments, the
           compiler  defaults  to  -xcheck=%all,  unless  you are on an Oracle
           Solaris system for SPARC, in which case, the compiler will  default
           to -xcheck=stkovf:detect for both cases.

           The  -xcheck  option  does  not accumulate on the command line. The
           compiler sets the flag in accordance with the  last  occurrence  of
           the command.


       -xchip=c

           Specify target processor for optimizer.

           This  option  specifies instruction timing properties by specifying
           the target processor.

           Although this option can be used alone, it is part of the expansion
           of the -xtarget option; its primary use is to override a value sup‐
           plied by the -xtarget option.

           Some effects are:


               o      The ordering of instructions, that is, scheduling


               o      The way the compiler uses branches


               o      The instructions to  use  in  cases  where  semantically
                      equivalent alternatives are available

           Common -xchip values on SPARC are identified below.



           sparc64vi (Obsolete)

               Optimize for the SPARC64 VI processor.


           sparc64vii (Obsolete)

               Optimize for the SPARC64 VII processor.


           sparc64viiplus

               Optimize for the SPARC64 VII+ processor.


           sparc64x

               Optimize for the SPARC64 X processor.


           sparc64xplus

               Optimize for the SPARC64 X+ processor.


           sparc64xii

               Optimize for the SPARC64 XII processor.


           ultraT1 (Obsolete)

               Optimize for the UltraSPARC T1 chip.


           ultraT2 (Obsolete)

               Optimize for the UltraSPARC T2 chip.


           ultraT2plus (Obsolete)

               Optimize for the UltraSPARC T2+ chip.


           T3 (Obsolete)

               Optimize for the SPARC T3 chip.


           T4

               Optimize for the SPARC T4 chip.


           T5

               Optimize for the SPARC T5 processor.


           T7

               Optimize for the SPARC T7 processor.


           M5

               Optimize for the SPARC M5 processor.


           M6

               Optimize for the SPARC M6 processor.


           M7

               Optimize for the SPARC M7 processor.


           generic

               Optimize  for  good  performance  on most supported SPARC plat‐
               forms. (This is the compiler default.)


           native

               Optimize for good performance on this host platform.


           The -xchip values on x86 platforms are:



           skylake

               Optimize for the Intel Skylake processor.


           broadwell

               Optimize for Intel Broadwell processors.


           nehalem

               Optimize for Intel Nahelem processors.


           core2

               Optimize for Intel Core2 processors.


           amdfam10

               Obsolete. Use -xchip=generic instead.


           penryn

               Optimize for Intel Pentryn processors.


           sandybridge

               Optimize for Intel Sandy Bridge processors.


           ivybridge

               Optimize for the Intel Ivy Bridge processor.


           haswell

               Optimize for the Intel Haswell processor.


           westmere

               Optimize for Intel Westmere processors.


           opteron

               Optimize for AMD Opteron processors.


           pentium

               (Obsolete) Use -xchip=generic instead.


           pentium_pro

               (Obsolete) Use -xchip=generic instead.


           pentium3

               (Obsolete) Use -xchip=generic instead.


           pentium4

               Optimize for Pentium 4 processors.


           generic

               Optimize for most x86 platforms.


           native

               Optimize for this host processor.


           For complete information, see the  Oracle  Developer  Studio  12.6:
           Fortran User' Guide.


       -xcode=v

           (SPARC) Specify code address space.

           Note:  It  is  highly  recommended that you build shared objects by
           specifying -xcode=pic13 or -xcode=pic32. It is  possible  to  build
           workable  shared  objects with -m64 -xcode=abs64, but these will be
           inefficient. Shared objects built with -m64  xarch=v9  -xcode=abs32
           or -m64 -xcode=abs44 will not work.

           The values for -xcode are:



           abs32

               This  is the default for 32-bit systems. Generates 32-bit abso‐
               lute addresses. Code + data + bss  size  is  limited  to  2**32
               bytes.


           abs44

               This  is the default for 64-bit systems. Generates 44-bit abso‐
               lute addresses. Code + data + bss  size  is  limited  to  2**44
               bytes. Available only on 64-bit architectures.


           abs64

               Generates  64-bit  absolute addresses. Available only on 64-bit
               architectures.


           pic13

               Generates position-independent code for use in shared libraries
               (small  model).  Equivalent  to -Kpic. Permits references to at
               most 2**11 unique external  symbols  on  32-bit  architectures,
               2**10 on 64-bit.


           pic32

               Generates position-independent code for use in shared libraries
               (large model). Equivalent to -KPIC. Permits  references  to  at
               most  2**30  unique  external  symbols on 32-bit architectures,
               2**29 on 64-bit.


           The default is -xcode=abs32 for 32-bit architectures.  The  default
           is -xcode=abs44 for 64-bit architectures.

           When building shared dynamic libraries, the default -xcode value of
           abs44 (not abs32) will not work with 64-bit architectures.  Specify
           -xcode=pic13 or -xcode=pic32 instead.

           To determine whether to use -xcode=pic13 or -xcode=pic32, check the
           size of the Global Offset Table (GOT) by using elfdump -c (see  the
           elfdump(1)  man page for more information) and to look for the sec‐
           tion header, sh_name: .got. The sh_size value is the  size  of  the
           GOT.  If  the  GOT  is less than 8,192 bytes, specify -xcode=pic13,
           otherwise specify -xcode=pic32.

           In general, use the  following  guidelines  to  determine  how  you
           should use -xcode:

               o      If  you  are  building  an executable you should not use
                      -xcode=pic13 or -xcode=pic32.


               o      If you are building an archive library only for  linking
                      into  executables  you  should  not  use -xcode=pic13 or
                      -xcode=pic32.


               o      If  you  are  building  a  shared  library,  start  with
                      -xcode=pic13  and once the GOT size exceeds 8,192 bytes,
                      use -xcode=pic32.


               o      If you are building an archive library for linking  into
                      shared libraries you should just use -xcode=pic32.



       -xcommonchk[={yes|no}]

           Enable runtime checking of common block inconsistencies.

           This  option is provided as a debugging aid for programs using task
           common and parallelization (See the task common pragma.)

           Normally, runtime checking for inconsistent  task  common  declara‐
           tions  is  disabled. Compiling with -xcommonchk=yes enables runtime
           checking.

           If a common block is declared in one source  module  as  a  regular
           common  block,  and somewhere else appears in a task common pragma,
           the program will stop and a message  pointing  to  the  first  such
           inconsistency issued.

           Because  runtime  checking  degrades program performance, it should
           only be used during program development and debugging.

           Specifying -xcommoncheck alone is equivalent to -xcommoncheck=yes.


       -xcompress={[no%]debug}

           Compresses debug sections using the format specified by the  -xcom‐
           press_format  option  if supported by the underlying Operating Sys‐
           tem. A sub-option is required. The option is ignored with a warning
           when Operating System support is unavailable.


       -xcompress_format=cmp-type

           When  -xcompress=debug is in effect, this options specifies how the
           debug section is to be compressed.

           The following values for cmp-type are recognized:



           none        No compression of the debug section is done.


           zlib        Compresses the debug section using ZLIB compression.


           zlib-gnu    Compresses the section using  ZLIB  compression,  using
                       the GNU section compression format.


           On  Oracle  Solaris,  when  compilation involves linking, the debug
           sections are compressed  using  the  ld  option  -z   compress-sec‐
           tions=cmp-type. For more information, see the ld(1) man page.

           On Oracle Solaris, when compiling to an object file (.o), the debug
           sections are compressed using elfcompress  -t  cmp-type.  For  more
           information, see the elfcompress(1) man page.

           On Linux, the objcopy command is used to compress debug sections of
           each .o file using the objcopy --compress-debug-sections. For  more
           information, see the objcopy(1g) man page.

           The  option is ignored with a warning when Operating System support
           is unavailable.


       -xdebugformat=dwarf

           -xdebugformat=dwarf  generates  debugging information  using   the
           dwarf standard format. This is the default. The option is obsolete.

           Notes:

           The detailed format of individual fields in dwarf format may evolve
           over time.

           See also the man page for dwarfdump(1).


       -xdebuginfo=a[,a...]

           Control how much debugging and observability information  is  emit‐
           ted.

           The  term  tagtype  refers to tagged types: structs, unions, enums,
           and classes.

           The following list contains the possible values for sub-options  a.
           The  prefix  no%  applied to a sub-option disables that sub-option.
           The default is -xdebuginfo=%none. Specifying -xdebuginfo without  a
           sub-option is forbidden.



           %none

               No debugging information is generated. This is the default.


           [no%]line

               Emit line number and file information.


           [no%]param

               Emit location list info for parameters. Emit full type informa‐
               tion for scalar values (for example,  int,  char  *)  and  type
               names but not full definitions of tagtypes.


           [no%]variable

               Emit  location  list information for lexically global and local
               variables, including file and function  statics  but  excluding
               class  statics  and  externs.  Emit  full  type information for
               scalar values such as int and char * and  type  names  but  not
               full definitions of tagtypes.


           [no%]decl

               Emit information for function and variable declarations, member
               functions, and static data members in class declarations.


           [no%]tagtype

               Emit full type definitions of tagtypes  referenced  from  param
               and variable datasets, as well as template definitions.


           [no%]macro

               Emit macro information.


           [no%]codetag

               Emit  DWARF  codetags  (also  known  as Stabs N_PATCH). This is
               information regarding bitfields,  structure  copy,  and  spills
               used by RTC and discover.


           [no%]hwcprof

               Generate  information  critical  to hardware counter profiling.
               This  information  includes  ldst_map,  a  mapping  from  ld/st
               instructions  to  the  symbol table entry being referenced, and
               branch_target table of branch-target addresses used  to  verify
               that  backtracking did not cross a branch-target. See -xhwcprof
               for more information.


           Note: ldst_map requires the presence of  tagtype  information.  The
           driver will issue an error if this requirement is not met.

           These  are  macros  which expand to combinations of -xdebuginfo and
           other options as follows:


             -g = -g2

             -gnone =
                     -xdebuginfo=%none
                     -xglobalize=no
                     -xpatchpadding=fix
                     -xkeep_unref=no%funcs,no%vars

             -g1 =
                     -xdebuginfo=line,param,codetag
                     -xglobalize=no
                     -xpatchpadding=fix
                     -xkeep_unref=no%funcs,no%vars

             -g2 =
                     -xdebuginfo=line,param,decl,variable,tagtype,codetag
                     -xglobalize=yes
                     -xpatchpadding=fix
                     -xkeep_unref=funcs,vars

             -g3 =

                     -xdebuginfo=line,param,decl,variable,tagtype,codetag,macro
                     -xglobalize=yes
                     -xpatchpadding=fix
                     -xkeep_unref=funcs,vars




       -xdepend

           Synonym for -depend.


       -xdryrun

           Synonym for -dryrun.


       -xF

           Allow function-level reordering by the Oracle Developer Studio Per‐
           formance Analyzer.

           Allow  the  reordering of functions (subprograms) in the core image
           using the compiler, the Analyzer and the  linker.  If  you  compile
           with  the -xF option, then run the Analyzer, you can generate a map
           file that optimizes the ordering of the functions in memory depend‐
           ing  on  how they are used together. A subsequent link to build the
           executable file can be directed to use that map by using the linker
           -Mmapfile  option. It places each function from the executable file
           into a separate section. (The f95 -Mpath option will  also  pass  a
           regular  file  to  the  linker;  see  the description of the -Mpath
           option.)

           Reordering the subprograms in memory is useful only when the appli‐
           cation  text page fault time is consuming a large percentage of the
           application time. Otherwise, reordering might not improve the over‐
           all  performance  of  the  application. The Performance Analyzer is
           part of Oracle Developer Studio. See the  Oracle  Developer  Studio
           12.6:  Performance  Analyzer  manual for further information on the
           analyzer.


       -xfilebyteorder=options

           Support file sharing between  little-endian  and  big-endian  plat‐
           forms.

           The  flag identifies the byte-order and byte-alignment of unformat‐
           ted I/O files. options must specify any combination of the  follow‐
           ing, but at least one specification must be present:


             littlemax_align:spec
             bigmax_align:spec
             native:spec

           max_align  declares the maximum byte alignment for the target plat‐
           form. Permitted values are 1,  2,  4,  8,  and  16.  The  alignment
           applies to Fortran VAX structures and Fortran 95 derived types that
           use platform-dependent alignments for compatibility with C language
           structures.

           little specifies a "little-endian" file on platforms where the max‐
           imum byte alignment is max_align. For example, little4 specifies  a
           32-bit x86 file, while little16 describes a 64-bit x86 file.

           big  specifies  a  "big-endian"  file  with  a maximum alignment of
           max_align. For example, big8 describes a 32-bit SPARC  file,  while
           big16 describes a 64-bit SPARC file.

           native  specifies  a  "native"  file  with  the same byte order and
           alignment used by the compiling processor platform.  The  following
           are assumed to be "native":



               PLATFORM         "NATIVE" IS
             32-bit SPARC         big8
             64-bit SPARC         big16
             32-bit x86           little4
             64-bit x86           little16


           spec  must  be a comma-separated list of the following: %all, unit,
           filename.

           %all refers to all files and logical units except those  opened  as
           "SCRATCH",  or  named  explicitly  elsewhere in the -xfilebyteorder
           flag. %all can only appear once.

           unit refers to a specific Fortran unit number opened  by  the  pro‐
           gram.

           filename  refers to a specific Fortran file name opened by the pro‐
           gram.

           Examples:


             -xfilebyteorder=little4:1,2,afile.in,big8:9,bfile.out,12
             -xfilebyteorder=little8:%all,big16:20

           Notes:

           This option does not apply to files opened  with  STATUS="SCRATCH".
           I/O  operations  done on these files are always with the byte-order
           and byte-alignment of the native processor.

           The first default, when -xfilebyteorder does not appear on the com‐
           mand line, is -xfilebyteorder=native:%all.

           A  file  name  or  unit  number  can  be declared only once in this
           option.

           When -xfilebyteorder does appear  on  the  command  line,  it  must
           appear  with  at least one of the little, big, or native specifica‐
           tions.

           Files not explicitly declared by this flag are assumed to be native
           files.  For example, compiling with xfilebyteorder=little4:zork.out
           declares zork.out to be a little-endian  32-bit  x86  file  with  a
           4-byte  maximum  data alignment. All other files in the program are
           native files.

           When the byte-order specified for a file is the same as the  native
           processor  but  a different alignment is specified, the appropriate
           padding will be used even though no  byte  swapping  is  done.  For
           example, this would be the case when compiling with -m64 for 64-bit
           x86 platforms and -xfilebyteorder=little4:filename is specified.

           The declared types in data records shared  between  big-endian  and
           little-endian  platforms  must  have the same sizes. For example, a
           file produced by a SPARC executable compiled  with  -xtypemap=inte‐
           ger:64,real:64,double:128  cannot be read by an x86 executable com‐
           piled  with   -xtypemap=integer:64,real:64,double:64,   since   the
           default double precision data types will have different sizes.

           Note  that  with  this release, Oracle Developer Studio sotware now
           supports REAL*16 data on x86 platforms. Unformatted files  contain‐
           ing REAL*16 data can now be used on X86 platforms.

           An  I/O  operation  with  an entire UNION/MAP data object on a file
           specified as non-native will result in a runtime I/O error. You can
           only execute I/O operations using the individual members of the MAP
           (and not an entire VAX record containing  the  UNION/MAP)  on  non-
           native files.


       -xglobalize[={yes|no}]

           Control  globalization of function-level or file-level static vari‐
           ables.

           Globalization is a technique needed by fix and continue functional‐
           ity  in  the  debugger  whereby function-level or file-level static
           symbols are promoted to globals while a prefix is added to the name
           to keep identically named symbols distinct.

           The default is -xglobalize=no. Specifying -xglobalize is equivalent
           to specifying -xglobalize=yes.

           Interactions:

           See -xpatchpadding.


       -xhasc[={yes|no}]

           Treat Hollerith constant as character  string  in  actual  argument
           lists.

           With  -xhasc=yes the compilers treat as character strings Hollerith
           constants appearing as an actual argument  in  a  subprogram  call.
           This is the default and complies with the Fortran 77 standard.

           With  -xhasc=no  Hollerith constants are treated as typeless values
           in subprogram call lists.

           This flag is provided to aid porting older Fortran  programs.  Com‐
           pile  routines  calling  subprograms  with Hollerith constants with
           -xhasc=no if the called subprogram expects that argument as INTEGER
           or any other type other than CHARACTER.


       -xhelp=flages

           Show summary of compiler options.

           -xhelp=flags is a synonym for -help.


       -xhwcprof[={enable|disable}]

           Enable compiler support for dataspace profiling.

           When  -xhwcprof is enabled, the compiler generates information that
           helps tools associate profiled load and store instructions with the
           data-types  and  structure  members  (in  conjunction with symbolic
           information produced with -g) to which they  refer.  It  associates
           profile  data  with  the  data space of the target, rather than the
           instruction space, and provides insight into behavior that  is  not
           easily obtained from only instruction profiling.

           While  you  can  compile  a  specified  set  of  object  files with
           -xhwcprof, this option is most useful when applied  to  all  object
           files  in  the  application. This will provide coverage to identify
           and correlate all memory references  distributed  in  the  applica‐
           tion's object files.

           If  you  are compiling and linking in separate steps, use -xhwcprof
           at link time as well.

           An instance of -xhwcprof=enable or -xhwcprof=disable overrides  all
           previous instances of -xhwcprof in the same command line.

           -xhwcprof  is disabled by default. Specifying -xhwcprof without any
           arguments is the equivalent to -xhwcprof=enable.

           -xhwcprof requires that optimization be  turned  on  and  that  the
           debug  data  format be set to dwarf (-xdebugformat=dwarf), which is
           now the default with this release of the  Oracle  Developer  Studio
           compilers.

           -xhwcprof  uses  -xdebuginfo  to  automatically  enable the minimum
           amount of debugging information it needs, so -g is not required.

           The combination of -xhwcprof and -g  increases  compiler  temporary
           file storage requirements by more than the sum of the increases due
           to -xhwcprof and -g specified alone.

           -xhwcprof is implemented as a macro that expands to various  other,
           more primitive, options as follows:.



             -xhwcprof
                     -xdebuginfo=hwcprof,tagtype,line
             -xhwcprof=enable
                     -xdebuginfo=hwcprof,tagtype,line
             -xhwcprof=disable
                     -xdebuginfo=no%hwcprof,no%tagtype,no%line


           The  following command compiles example.f and specifies support for
           hardware counter profiling and symbolic analysis of data types  and
           structure members using DWARF symbols:


             example% f95 -c -O -xhwcprof -g example.f

           For  more  information on hardware counter-based profiling, see the
           Oracle Developer Studio 12.6: Performance
                           Analyzer.


       -xinline=rl

           Synonym for -inline=rl.


       -xinline_param=a[,a[,a]...]

           Use this option to manually change the heuristics used by the  com‐
           piler for deciding when to inline a function call.

           This option only has an effect at -O3 or higher. The following sub-
           options have an effect only at -O4 or higher when automatic  inlin‐
           ing is on.

           In the following sub-options n must be a positive integer; a can be
           one of the following:



           default

               Set the values of all the sub-options to their default values.


           max_inst_hard[:n]

               Automatic inlining only  considers  functions  smaller  than  n
               pseudo instructions (counted in compiler's internal representa‐
               tion) as possible inline candidates.

               Under no circumstances will a function larger than this be con‐
               sidered for inlining.


           max_inst_soft[:n]

               Set  inlined  function's  size  limit  to n pseudo instructions
               (counted in compiler's internal representation).

               Functions of greater size than this may sometimes be inlined.

               When interacting with max_inst_hard, the value of max_inst_soft
               should  be equal to or smaller than the value of max_inst_hard,
               i.e, max_inst_soft <= max_inst_hard.

               In general, the compiler's automatic inliner only inlines calls
               whose  called  function's  size  is  smaller  than the value of
               max_inst_soft. In some cases a function may be inlined when its
               size is larger than the value of max_inst_soft but smaller than
               that of max_inst_hard. An example  of  this  would  be  if  the
               parameters passed into a function were constants.

               When  deciding  whether to change the value of max_inst_hard or
               max_inst_soft for inlining one specific call site  to  a  func‐
               tion, use -xinline_report=2 to report detailed inlining message
               and follow the suggestion in the inlining message.


           max_function_inst[:n]

               Allow functions to increase due to automatic inlining by up  to
               n pseudo instructions (counted in compiler's internal represen‐
               tation).


           max_growth[:n]

               The automatic inliner is allowed to increase the  size  of  the
               program  by  up  to  n%  where  the  size is measured in pseudo
               instructions.


           min_counter[:n]

               The minimum call site frequency counter as measured by  profil‐
               ing  feedback  (-xprofile)  in order to consider a function for
               automatic inlining.

               This option is valid only when the application is compiled with
               profiling feedback (-xprofile=use).


           level[:n]

               Use this sub-option to control the degree of automatic inlining
               that is applied. The compiler will inline more  functions  with
               higher settings for -xinline_param=level.

               n must be one of 1, 2, or 3.

               The  default value of n is 2 when this option is not specified,
               or when the options is specified without :n.

               Specify the level of automatic inline



                 level:1    basic inlining
                 level:2    medium inlining (default)
                 level:3    aggressive inlining


               The level decides the specified values for the  combination  of
               the following inlining parameters:



                 max_growth
                 + max_function_inst
                 + max_inst
                 + max_inst_call


               When  level  = 1, all the parameters are half the values of the
               default. When level = 2, all the  parameters  are  the  default
               value. When level = 3, all the parameters are double the values
               of the default.


           max_recursive_depth[:n]

               When a function calls itself either directly or indirectly,  it
               is said to be making a recursive call.

               This  sub-option  allows  a  recursive call to be automatically
               inlined up to n levels.


           max_recursive_inst[:n]

               Specifies the maximum number of pseudo instructions (counted in
               compiler's  internal  representation) the caller of a recursive
               function can grow to by performing automatic  recursive  inlin‐
               ing.

               When  interactions  between  max_recursive_inst  and max_recur‐
               sive_depth occur, recursive  function  calls  will  be  inlined
               until either the max_recursive_depth number of recursive calls,
               or until the size of the function being  inlined  into  exceeds
               max_recursive_inst.  The  settings of these two parameters con‐
               trol the degree of inlining of small recursive functions.


           If -xinline_param=default is specified, the compiler will  set  all
           the values of the sub-opitons to the default values.

           If   the   option   is   not   specified,   the  default  is  -xin‐
           line_param=default.

           The list of values and options accumulate from left  to  right.  So
           for           a           specification           of          -xin‐
           line_param=max_inst_hard:30,..,max_inst_hard:50,     the      value
           max_inst_hard:50 will be passed to the compiler.

           If  multiple  -xinline_param  options  are specified on the command
           line, the list of sub-options  likewise  accumulate  from  left  to
           right. For example, the effect of



             -xinline_param=max_inst_hard:50,min_counter:70 ...
                -xinline_param=max_growth:100,max_inst_hard:100


           will be the same as that of

             -xinline_param=max_inst_hard:100,min_counter:70,max_growth:100



       -xinline_report[=n]

           This  option  generates  a report written to standard output on the
           inlining of functions by the compiler. The type of  report  depends
           on the value of n, which must be 0, 1, or 2.



           0            No report is generated.


           1            A summary report of default values of inlining parame‐
                        ters is generated.


           2            A detailed report of inlining messages  is  generated,
                        showing which callsites are inlined and which are not,
                        with a short reason for not inlining  a  callsite.  In
                        some  cases, this report will include suggested values
                        for -xinline_param that can be used to inline a  call‐
                        site that is not inlined.


           When  -xinline_report  is not specified, the default value for n is
           0. When -xinline_report is specified without =n, the default  value
           is 1.

           When  -xlinkopt  is  present, the inlining messages about the call‐
           sites that are not inlined might not be accurate.

           The report is limited to inlining performed by the compiler that is
           subject  to  the  heuristics  controllable  by  the  -xinline_param
           option. Callsites inlined by the compiler for other reasons may not
           be reported.


       -xinstrument=[no%]datarace]

           Specify  this  option  to  compile  and instrument your program for
           analysis by the Thread Analyzer. For more information on the Thread
           Analyzer, see tha(1) for details.

           You  can  then use the Performance Analyzer to run the instrumented
           program with collect  -r  races  to  create  a  data-race-detection
           experiment.  You  can  run  the instrumented code standalone but it
           runs more slowly.

           Specify -xinstrument=no%datarace to turn off this feature. This  is
           the default.

           -xinstrument must be specified with an argument.

           If  you  compile and link in seperate steps, you must specify -xin‐
           strument=datarace in both the compilation and linking steps.

           This option defines the preprocessor token  __THA_NOTIFY.  You  can
           specify #ifdef __THA_NOTIFY to guard calls to libtha(3) routines.

           This option also sets -g.

           Interactions:

           -xinstrument cannot be used together with -xlinkopt.


       -xipo[={1|0|2}]

           Perform interprocedural optimizations.

           Invoke interprocedural analysis pass to perform whole-program opti‐
           mizations. -xipo optimizes across all  object  files  in  the  link
           step,  and  is  not limited to just the source files on the compile
           command.

           Analysis and optimization is limited to object files compiled  with
           -xipo.

           -xipo=0 disables interprocedural analysis. -xipo=1 enables inlining
           across source files. -xipo=2 adds whole-program detection and anal‐
           ysis,  including  memory allocation and memory layout optimizations
           to improve cache performance.

           The default is -xipo=0.

           If specified without a value, -xipo=1 is assumed.

           When compiling with -xipo=2, there should be no  calls  from  func‐
           tions  or  subroutines  compiled without -xipo=2 (for example, from
           libraries) to functions or subroutines compiled with -xipo=2.  Oth‐
           erwise,  the  assumptions  made  by the compiler about the usage of
           these called routines could be incorrect.

           See the Fortran 95 User's Guide for  additional  information  about
           when not to use -xipo.

           When  compiling  and  linking  in  separate steps, you must specify
           -xipo in both steps to be effective.

           Libraries, even if compiled with -xipo do not participate in cross‐
           file  interprocedural  analysis.  Also, .s assembly language source
           files do not participate in the analysis.

           The -xipo flag is ignored if compiling with -S.

           The -xipo flag requires at least optimization level -xO4.

           Building executables compiled with -xipo using a parallel make tool
           can  cause problems if object files used in the build are common to
           the link steps running in parallel. Each link step should have  its
           own copy of the object file being optimized prior to linking.

           Objects  compiled  without  -xipo can be linked freely with objects
           that are compiled with -xipo.

           If you have .o files compiled with the -xipo option from  different
           compiler versions, mixing these files can result in failure with an
           error message about "IR version mismatch".  When  using  the  -xipo
           option,  all  the files should be compiled with the same version of
           the compiler.

           See also: -xjobs.


       -xipo_archive={none|readonly|writeback}

           Allow crossfile optimization to include archive (.a) libraries.



           none

               There is no processing of archive files. The compiler does  not
               apply cross-module inlining or other cross-module optimizations
               to object files compiled using -xipo and extracted from an  ar‐
               chive  library  at link time. To do that, both -xipo and either
               -xipo_archive=readonly or -xipo_archive=writeback must be spec‐
               ified at link time.


           readonly

               The  compiler  optimizes object files passed to the linker with
               object files compiled with -xipo that  reside  in  the  archive
               library (.a) before producing an executable.

               The option -xipo_archive=readonly enables cross-module inlining
               and interprocedural data flow analysis of object  files  in  an
               archive  library  specified  at link time. However, it does not
               enable cross-module optimization of the archive library's  code
               except  for  code  that has been inserted into other modules by
               cross module inlining.

               To apply cross-module optimization to code  within  an  archive
               library,  -xipo_archive=writeback  is required. Note that doing
               so modifies the contents of the archive library from which  the
               code was extracted.


           writeback

               The  compiler  optimizes object files passed to the linker with
               object files compiled with -xipo that  reside  in  the  archive
               library  (.a)  before producing an executable. Any object filed
               contained in the library that were optimized during the  compi‐
               lation are replaced with their optimized version.

               For  parallel links that use a common set of archive libraries,
               each link should create its own copy of archive libraries to be
               optimized before linking.


           -xipo_archive requires an argument.


       -xipo_build=[yes|no]

           Building  -xipo without -xipo_build involves two passes through the
           compiler -- once when producing the object files,  and  then  again
           later  at  link  time  when performing the cross file optimization.
           Setting -xipo_build reduces compile time by avoiding  optimizations
           during the initial pass and optimizing only at link time. Optimiza‐
           tion is not needed for the object files, as with -xipo it  will  be
           performed  at  link  time.  If  unoptimized object files built with
           -xipo_build are linked without including -xipo to perform optimiza‐
           tion,  the  application will fail to link with an unresolved symbol
           error.

           Examples:

           The following example performs a fast build of .o  files,  followed
           by crossfile optimization at link time:



             % cc -O -xipo -xipo_build -o code1.o -c code1.c
             % cc -O -xipo -xipo_build -o code2.o -c code2.c
             % cc -O -xipo -o a.out code1.o code2.o


           The  -xipo_build  will  turn  off -O when creating the .o files, to
           build these quickly. Full -O optimization will be performed at link
           time as part of -xipo crossfile optimization.

           The following example links without using -xipo.



             % cc -O -o a.out code1.o code2.o


           If  either  code1.o or code2.o were generated with -xipo_build, the
           result will be a link-time failure indicating the symbol  __unopti‐
           mized_object_file is unresolved.

           When   building  .o  files  separately,  the  default  behavior  is
           -xipo_build=no. However, when the executable or library is built in
           a  single  pass  from  source files, -xipo_build will be implicitly
           enabled. For example:



             % cc -fast -xipo a.c b.c c.c


           will implicitly enable -xipo_build=yes for the  first  passes  that
           generate  a.o,  b.o,  and c.o. Include the option -xipo_build=no to
           disable this behavior.


       -xivdep[=p]

           Disable or set interpretation of IVDEP directives.

           The IVDEP directive tells a compiler to ignore some  or  all  loop-
           carried dependences on array references that it finds in a loop for
           purposes of optimization. This enables a compiler to perform  vari‐
           ous  loop  optimizations  such as microvectorization, distribution,
           software pipelining, etc., which would not be  otherwise  possible.
           It  is  used  in  cases where the user knows either that the depen‐
           dences do not matter or that they never occur in practice.

           The interpretation of !DIR IVDEP directives depend upon  the  value
           of the -xivdep option.

           The following values for p are interpreted as follows:



           loop        Ignore assumed loop-carried vector dependences.


           loop_any    Ignore all loop-carried vector dependences.


           back        Ignore  assumed  backward  loop-carried  vector  depen‐
                       dences.


           back_any    Ignore all backward loop-carried vector dependences.


           none        Do not ignore any dependences  (disables  IVDEP  direc‐
                       tives).


           These  interpretations  are  provided  for compatibility with other
           vendor's interpretations of the IVDEP directive.

           For details, see the Oracle
                           Developer Studio 12.6: Fortran User' Guide.


       -xjobs={n|auto}

           Compile with multiple processes. If this flag is not specified, the
           default behavior is -xjobs=auto.

           Specify  the  -xjobs  option to set how many processes the compiler
           creates to complete its work. This option can reduce the build time
           on a multi-cpu machine. Currently, -xjobs works only with the -xipo
           option. When you specify -xjobs=n,  the  interprocedural  optimizer
           uses  n  as  the  maximum number of code generator instances it can
           invoke to compile different files.

           Generally, a safe value for n is 1.5 multiplied by  the  number  of
           available  processors.  Using a value that is many times the number
           of available processors can degrade performance because of  context
           switching overhead among spawned jobs. Also, using a very high num‐
           ber can exhaust the limits of system resources such as swap space.

           When -xjobs=auto is  specified,  the  compiler  will  automatically
           choose the appropriate number of parallel jobs.

           You  must  always  specify  -xjobs with a value. Otherwise an error
           diagnostic is issued and compilation aborts.

           If -xjobs is not specified, the default  behavior  is  -xjobs=auto.
           This can be overridden by adding -xjobs=n to the command line. Mul‐
           tiple instances of -xjobs on the command line override  each  other
           until the rightmost instance is reached.

           Examples:

           The  following  example  links  with up to 3 parallel processes for
           -xipo:



             % cc -xipo -xO4 -xjobs=3 t1.o t2.o t3.o


           The following example links serially  with  a  single  process  for
           -xipo:



             % cc -xipo -xO4 -xjobs=1 t1.o t2.o t3.o


           The following example links in parallel, with the compiler choosing
           the number of jobs for -xipo:



             % cc -xipo -xO4  t1.o t2.o t3.o


           Note that this is exactly the  same  behavior  as  when  explicitly
           specifying -xjobs=auto:


             % cc -xipo -xO4 -xjobs=auto t1.o t2.o t3.o




       -xkeep_unref[={[no%]funcs,             [no%]vars}]

           Keep  definitions  of unreferenced functions and variables. The no%
           prefix allows the compiler to potentially remove the definitions.

           The default is no%funcs,no%vars. Specifying -xkeep_unref is equiva‐
           lent    to   specifying   -xkeep_unref=funcs,vars,   meaning   that
           -keep_unref keeps everything.


       -xkeepframe[=[%all,%none,function_name,no%function_name]]

           Prohibit stack related optimizations for the named functions.

           Specifying %all prohibits stack-related optimizations for  all  the
           code.  Specifying  %none allows stack-related optimizations for all
           the code.

           If not specified on the command line, the compiler assumes  -xkeep‐
           frame=%none

           If  specified  but  without  a  value, the compiler assumes -xkeep‐
           frame=%all

           This option is accumulative and can appear on the command line mul‐
           tiple  times.  For  example, -xkeepframe=%all  -xkeepframe=no%func1
           indicates that the stack frame should be  kept  for  all  functions
           except  func1.  Also,  -xkeepframe  overrides  -xregs=frameptr. For
           example, -xkeepframe=%all -xregs=frameptr indicates that the  stack
           should  be  kept  for  all  functions,  but  the  optimizations for
           -xregs=frameptr would not be done.


       -xknown_lib=lib

           Recognize calls to a known library.

           With this flag specified, the compiler treats references to certain
           known libraries as intrinsics, ignoring any user-supplied versions.
           This enables the compiler to perform optimizations  over  calls  to
           library routines based on special knowledge of that library.

           lib may be any one of the following key words, or a comma-delimited
           list of a selection of them: blas, blas1, blas2, blas3, intrinsics.


           -xknown_lib=[blas |                   blas1 | blas2 | blas3
           ]

               The  compiler  recognizes  calls  to the following BLAS library
               routines and is free to optimize appropriately for the Sun Per‐
               formance Library implementation.

               BLAS1 routines recognized by -xknown_lib=blas1:



                 caxpy   ccopy   cdotc    cdotu   crotg
                 cscal   csrot   csscal   cswap   dasum
                 daxpy   dcopy   ddot     drot
                 drotg   drotm   drotmg   dscal   dsdot
                 dswap   dnrm2   dzasum   dznrm2  icamax
                 idamax  isamax  izamax   sasum   saxpy
                 scasum  scnrm2  scopy    sdot    sdsdot
                 snrm2   srot    srotg    srotm   srotmg
                 sscal   sswap   zaxpy    zcopy   zdotc
                 zdotu   zdrot   zdscal
                 zrotg   zscal   zswap


               BLAS2 routines recognized by -xknown_lib=blas2:



                 cgemv   cgerc   cgeru   ctrmv   ctrsv
                 dgemv   dger    dsymv   dsyr    dsyr2
                 dtrmv   dtrsv   sgemv   sger
                 ssymv   ssyr    ssyr2   strmv   strsv
                 zgemv   zgerc   zgeru   ztrmv   ztrsv


               BLAS3 routines recognized by -xknown_lib=blas3:



                 ctrsm   dgemm   dsymm   dsyr2k  dsyrk
                 dtrmm   dtrsm   sgemm   ssymm   ssyr2k
                 ssyrk   strmm   strsm   zgemm   zsymm
                 zsyr2k  zsyrk   ztrmm   ztrsm


               You can select any combination of these. For example



                 -xknown_lib=blas2,blas3


               selects just the BLAS2 and BLAS3 routines.

               You can select all the BLAS routines by specifying



                 -xknown_lib=blas


               which is equivalent to



                 -xknown_lib=blas1,blas2,blas3


               The  compiler  will  ignore  user-supplied  versions  of  these
               library routines and use the BLAS routines in the  Sun  Perfor‐
               mance Library or inline the routines.

               The -library=sunperf option is needed to link with the Sun Per‐
               formance Library.


           -xknown_lib=intrinsics

               Specifying intrinsics has the effect of ignoring  any  explicit
               EXTERNAL declarations for Fortran 95 intrinsics, thereby ignor‐
               ing any user-supplied intrinsic routines.

               For a list of functions recognized by the compiler  as  intrin‐
               sics,  see  Chapters  2  and 3 of the Fortran Library Reference
               manual.




       -xl

           (Obsolete) This (f77) option is no longer supported. For the equiv‐
           alent    options    in   the   current   Fortran   compiler,   use:
           -f77=%all,no%backslash -vax=$all,no%debug.


       -xld

           (Obsolete) This (f77) option is no longer supported. For the equiv‐
           alent    options    in   the   current   Fortran   compiler,   use:
           -f77=%all,no%backslash -vax=$all,no%debug.


       -xlang=f77

           (Obsolete) This option is obsolete and does not do  anything  since
           the  Fortran  77  object files are no longer supported. It might be
           removed in a future release.


       -xlibmil

           Synonym for -libmil.


       -xlibmopt [={%none,archive,shared}]

           Controls whether the compiler uses a library of optimized math rou‐
           tines  or  the standard system math routines. The possible argument
           values are:



           %none

               Do not link with the  optimized  math  library.  (This  is  the
               default when no -xlibmopt option is specified.)


           archive

                Link  with  the optimized math library in static archive form.
               (This is the default when -xlibmopt is specified with no  argu‐
               ment.)


           shared

               (Oracle Solaris) Link with the optimized math library in shared
               object form.


           The rightmost instance of this option on the command line overrides
           all  previous instances. The order of this option relative to other
           libraries specified on the command line is not significant.

           The optimized math library includes selected math routines normally
           found  in  libm.  The  optimized routines typically run faster than
           their libm counterparts. The results may be slightly different from
           those  produced  by  the libm routines, although in most cases they
           differ only in the least significant bit. When the  static  archive
           form  of  the  optimized library is used, the compiler selects rou‐
           tines that are optimized for the instruction set indicated  by  the
           -xarch value specified when linking. When the shared object form is
           used, the most appropriate routines are selected at  runtime  based
           on the instruction set supported by the system being used.

           NOTE: The shared object form is available only on Oracle Solaris.

           The  routines  in  the optimized math library depend on the default
           round-to-nearest floating point rounding mode. If you use the opti‐
           mized  math  library, you must ensure that round-to-nearest mode is
           in effect when any of these routines is called.

           Interactions:

           -xlibmopt=archive is implied by the -fast option. To disable  link‐
           ing  with the optimized math library when -fast is used, add -xlib‐
           mopt=%none following -fast on the command line:


             example% cc -fast -xlibmopt=%none ...

           See also:

           -fast


       -xlinkopt[=level]

           (Oracle Solaris) Perform  link-time  optimizations  on  relocatable
           object files.

           The  post-optimizer performs a number of advanced performance opti‐
           mizations on the binary object code at link-time. The  value  level
           sets the level of optimizations performed, and must be 0, 1, or 2.

           The optimization levels are:



           0            The post-optimizer is disabled. (This is the default.)


           1            Perform  optimizations based on control flow analysis,
                        including instruction cache coloring and branch  opti‐
                        mizations, at link time.


           2            Perform additional data flow analysis, including dead-
                        code elimination and address  computation  simplifica‐
                        tion, at link time.


           Specifying -xlinkopt without a level parameter implies -xlinkopt=1.

           These  optimizations  are  performed  at link time by analyzing the
           object binary code. The object files  are  not  rewritten  but  the
           resulting  executable  code  might  differ from the original object
           codes.

           This option is most effective when used to compile the  whole  pro‐
           gram, and with profile feedback.

           When  compiling  in  separate  steps, -xlinkopt must appear on both
           compile and link steps:



             % f95 -c -xlinkopt a.f95 b.f95
             % f95 -o myprog -xlinkopt=2 a.o b.o


           Note that the level parameter is only used  when  the  compiler  is
           linking.  In the example above, the post-optimization level used is
           2 even though the object binaries were  compiled  with  an  implied
           level of 1.

           For -xlinkopt to be useful, at least some, but not necessarily all,
           of the routines in the program must be compiled with  this  option.
           The  optimizer  can  still  perform  some  limited optimizations on
           object binaries not compiled with -xlinkopt.

           -xlinkopt will optimize code  coming  from  static  libraries  that
           appear on the compiler command line, but it will skip and not opti‐
           mize code coming from shared (dynamic) libraries that appear on the
           command  line.  You  can  also  use  -xlinkopt when building shared
           libraries (compiling with -G).

           The link-time post-optimizer is most effective when used with  run-
           time  profile  feedback.  Profiling reveals the most and least used
           parts of the code and directs the optimizer  to  focus  its  effort
           accordingly. This is particularly important with large applications
           where optimal placement of code performed at link time  can  reduce
           instruction cache misses. Typically, this would be compiled as fol‐
           lows:



             % f95 -o progt -xO5 -xprofile=collect:profdir
             % progt
             % f95 -o prog -xO5 -xprofile=use:prog


           For details on using profile feedback, see -xprofile.

           Note that compiling  with  this  option  will  increase  link  time
           slightly. Object file sizes will also increase, but the size of the
           executable remains  the  same.  Compiling  with  -xlinkopt  and  -g
           increases  the size of the executable by including debugging infor‐
           mation.

           Interactions:

           -xlinkopt cannot be used together with -xinstrument.


       -xloopinfo

           Synonym for -loopinfo.


       -xM

           Generate make dependencies.

           This option produces make dependencies for the compiled source file
           on standard output. The option covers all make dependencies for the
           source file, both header files and Fortran modules.

           For module dependencies, this option uses  an  object-based  module
           dependency scheme to eliminate the need for explicit build rules to
           create the module files.

           This option cannot be used with -c, -S, -Xlist, or any other compi‐
           lation options that produce different compilation outputs.

           The  generated  dependency output does not contain any build rules,
           only dependencies for the files. The user will need to specify  the
           build  rules  for  all the files needed for the build. However, for
           the module files, no explicit build rules are needed, as the module
           files  are created at the same time as the associated object files.
           Therefore, the module files only need to have a generic build rule:


             %.mod:
                     @ echo $@ is already up to date.


           The module file build rule is only needed  to  prevent  the  'make'
           process from stripping all the dependencies related to module files
           if there are no build rules for them. Other than  that,  the  build
           rule does not do anything, as shown in the example above.

           When  used  with the -keepmod option, the dependencies generated by
           the -xM option will prevent compilation cascade due to the unneces‐
           sarily  updated  modules files, as well as prevent the problem with
           recompilation on the same source files due to the use of the -keep‐
           mod option to prevent unnecessary updates on the module files.

           This  option  works  in  conjunction  with  the -M, -I, and -moddir
           options to determine the appropriate  directories  for  the  module
           files  needed  in the build. Pre-compiled module files, for example
           those shipped by third parties, should be located  at  a  directory
           pointed to by the -M option so the correct dependencies can be gen‐
           erated.


       -xmaxopt[=n]

           Enable optimization pragma and set maximum optimization level.

           Limits the optimization level specified by  a  !$PRAGMA  SUN  OPT=m
           directive  to n. When a directive specifying a level m greater than
           n on the -xmaxopt flag appears, the compiler will use n.

           The value n corresponds to the values 1 through 5 of the  -O  opti‐
           mization level flag. The value of n must be greater or equal to the
           value of highest optimization level specified by other options. So,
           for example:


             f95 ... -O3 -xmaxopt=4

           would be appropriate.

           The flag -xmaxopt by itself defaults to -xmaxopt=5.


       -xmemalign[=ab]

           (SPARC)  Specify  maximum  assumed memory alignment and behavior of
           misaligned data accesses.

           For memory accesses where the alignment is determinable at  compile
           time,   the  compiler  will  generate  the  appropriate  load/store
           instruction sequence for that alignment of data.

           For memory accesses where the alignment  cannot  be  determined  at
           compile time, the compiler must assume an alignment to generate the
           needed load/store sequence.

           The -xmemalign flag allows the user to specify the  maximum  memory
           alignment  of  data to be assumed by the compiler in these indeter‐
           minable situations. It also specifies the error behavior to be fol‐
           lowed at run-time when a misaligned memory access does take place.

           Values:

           If  a value is specified, it must consist of two parts: a numerical
           alignment value, a, and an alphabetic behavior flag, b.

           Allowed values for alignment, a are:



           1            Assume at most 1 byte alignment.


           2            Assume at most 2 byte alignment.


           4            Assume at most 4 byte alignment.


           8            Assume at most 8 byte alignment.


           16           Assume at most 16 byte alignment.


           Allowed values for behavior, b are:



           i            Interpret access and continue execution.


           s            Raise signal SIGBUS.


           f            For all SPARC 64-bit platforms,  raise  signal  SIGBUS
                        for  alignments  less  than  or  equal to 4, otherwise
                        interpret access and continue execution. For all other
                        -xarch values, the f flag is equivalent to i.


           Defaults:

           The  first  default, which applies when no -xmemalign flag appears,
           is:


               o      -xmemalign=8i for 32-bit SPARC platforms (-m32)


               o      -xmemalign=8s on 64-bit SPARC platforms for  C  and  C++
                      (-m64)


               o      -xmemalign=8f  on  64-bit  SPARC  platforms  for Fortran
                      (-m64)

           The second default, which applies when -xmemalign appears but with‐
           out a value, is -xmemalign=1i for all platforms.

           Note that -xmemalign itself does not force a particular data align‐
           ment. See -dalign or -aligncommon.

           You must also specify -xmemalign whenever you  link  to  an  object
           file that was compiled with a value of b either i or f.


       -xmodel=[a]

           (x86)  Specify  the data address model for shared objects on Oracle
           Solaris x64 platforms.

           The -xmodel option enables the compiler  to  create  64-bit  shared
           objects  for  the  Oracle  Solaris x64 platforms and should only be
           specified for the compilation of such objects.

           This option is invalid when specified with -m32.

           a is one of the following:



           small

               This option generates code for the small  model  in  which  the
               virutal  address of code executed is known at link time and all
               symbols are known to be located in the virtual addresses in the
               range from 0 to 2^31 - 2^24 - 1.


           kernel

               Generates  code  for  the kernel model in which all symbols are
               defined to be in the range from 2^64 - 2^31 to 2^64 - 2^24.


           medium

               Generates code for the medium model in which no assumptions are
               made  about  the range of symbolic references to data sections.
               Size and address of the text section have the  same  limits  as
               the small code model. Applications with large amounts of static
               data might require -xmodel=medium when compiling with -m64.


           If you do not specify -xmodel, the compiler assumes  -xmodel=small.
           Specifying -xmodel without an argument is an error.

           It  is  not  neccessary to compile all routines with this option as
           long as you an ensure that objects being accessed are within range.

           Be aware that not all Linux system support the medium model.


       -xnolib

           Synonym for -nolib.


       -xnolibmil

           Synonym for -nolibmil.


       -xnolibmopt

           (Obsolete). Use -xlibmopt=%none instead. See -xlibmopt.


       -xO[n]

           Synonym for -O[n].


       -xopenmp[={parallel|noopt|none}]

           Enable explicit parallelization with OpenMP directives.

           The flag accepts the following sub-option keywords:



           parallel

               Enables recognition  of  OpenMP  directives.  The  optimization
               level  under -xopenmp=parallel is -xO3. The compiler raises the
               optimization level to -xO3 if necessary and issues a warning.

               This flag also defines  the  preprocessor  macro  _OPENMP.  The
               _OPENMP macro is defined to have the decimal value yyyymm where
               yyyy and mm are the year and month designations of the  version
               of  the  OpenMP  API that the implementation supports. Refer to
               the Oracle Developer Studio 12.6: OpenMP
                                     API User's Guide for  the  value  of  the
               _OPENMP macro for a particular release.


           noopt

               Enables recognition of OpenMP directives. The compiler does not
               raise the optimization level if it is lower than -xO3.  If  you
               explicitly set the optimization lower than -xO3, as in f95 -xO2
               -xopenmp=noopt, the compiler issues an error.  If  you  do  not
               specify  an  optimization level with -xopenmp=noopt, the OpenMP
               pragmas are recognized, the  program  is  parallelized  accord‐
               ingly,  but  no  optimization  is  done.  This  sub-option also
               defines the preprocessor macro _OPENMP.


           none

               Does not enable the recognition of OpenMP directives, makes  no
               change  to the optimization level of your program, and does not
               define any  preprocessor  macros.  This  is  the  default  when
               -xopenmp is not specified.


           If  you  specify -xopenmp, but do not specify a sub-option keyword,
           the compiler assumes  -xopenmp=parallel.  If  you  do  not  specify
           -xopenmp at all, the compiler assumes -xopenmp=none.

           Sub-options  parallel  and  noopt  will turn on -stackvar automati‐
           cally.

           If you are debugging an OpenMP program with dbx,  compile  with  -g
           -xopenmp=noopt  so  you  can breakpoint within parallel regions and
           display the contents of variables.

           The default for -xopenmp might change in a future release. You  can
           avoid  warning  messages  by  explicitly  specifying an appropriate
           optimization level.

           Use the OMP_NUM_THREADS environment variable to specify the  number
           of   threads   to   use   when   running   an  OpenMP  program.  If
           OMP_NUM_THREADS is not set, the default number of threads used is a
           multiple of the number of cores per socket (that is, cores per pro‐
           cessor chip), which is less than or equal to the  total  number  of
           cores  or 32, whichever is less. You can specify a different number
           of threads by setting the OMP_NUM_THREADS environment variable,  or
           by  calling the omp_set_num_threads() OpenMP runtime routine, or by
           using the num_threads clause on the parallel region directive.  For
           best  performance, the number of threads used to execute a parallel
           region should not exceed the number of hardware threads (or virtual
           processors)  available  on  the machine. On Oracle Solaris systems,
           this number can be determined by using the psrinfo(1M) command.  On
           Linux systems, this number can be determined by inspecting the file
           /proc/cpuinfo. See the Oracle Developer  Studio  12.6:  OpenMP  API
           User's
                           Guide for more information.

           Nested  parallelism is disabled by default. To enable nested paral‐
           lelism, you must set the OMP_NESTED environment variable  to  TRUE.
           See the Oracle Developer Studio 12.6: OpenMP API
                           User's Guide for details.

           If you compile and link in seperate steps, specify -xopenmp in both
           the compilation step and the link step. When  used  with  the  link
           step, the -xopenmp option will link with the OpenMP runtime support
           library, libmtsk.so.

           For up-to-date functionality and performance, make  sure  that  the
           latest   patch  of  the  OpenMP  runtime  library,  libmtsk.so,  is
           installed on the system.

           For more information about the OpenMP Fortran 95, C, and C++ appli‐
           cation  program interface (API) for building multithreaded applica‐
           tions, see the Oracle Developer Studio 12.6: OpenMP API
                           User's Guide.


       -xpad

           Synonym for -pad.


       -xpagesize=n

           Set the preferred page size for the stack and the heap.

           The n value must be one of the following:

           On SPARC: 8K, 64K, 512K, 4M, 32M, 256M, 2G, 16G, or default.

           On x86: 4K, 2M, 4M, 1G, or default.

           You must specify a valid page size for the Oracle Solaris OS on the
           target  platform.  If  you  do  not  specify a valid page size, the
           request is silently ignored at run-time.

           Use the pagesize(1) Oracle Solaris command to determine the  number
           of  bytes  in a page. The operating system offers no guarantee that
           the page size request will be honored. However, appropriate segment
           alignment  can  be used to increase the likelihood of obtaining the
           requested page size. See the -xsegment_align option on how  to  set
           the  segment alignment. You can use pmap(1) or meminfo(2) to deter‐
           mine page size of the target platform.

           If you specify -xpagesize=default, the flag is ignored.  -xpagesize
           without an argument is the equivalent to -xpagesize=default.

           This  option  is a macro for -xpagesize_heap=n  -xpagesize_stack=n.
           These two options accept the same arguments as -xpagesize. You  can
           set them both with the same value by specifying -xpagesize=n or you
           can specify them individually with different values.

           Compiling with this  flag  has  the  same  effect  as  setting  the
           LD_PRELOAD  environment  variable  to mpss.so.1 with the equivalent
           options, or running the Oracle Solaris command  ppgsz(1)  with  the
           equivalent  options  before  running  the  program.  See the Oracle
           Solaris OS man pages for details.

           The libhugetlbfs library is required  for  -xpagesize  to  work  on
           Linux. See the Linux libhugetlbfs(7) man page for more information.


       -xpagesize_heap=n

           Set the page size in memory for the heap.

           n is the same as described for -xpagesize.

           See -xpagesize for further details.


       -xpagesize_stack=n

           Set the page size in memory for the stack.

           n is the same as described for -xpagesize.

           See -xpagesize for further details.


       -xpatchpadding[={fix|patch|size}]

           Reserve an area of memory before the start of each function. If fix
           is specified,  the  compiler  will  reserve  the  amount  of  space
           required  by fix and continue. This is the default. If either patch
           or no value is specified, the compiler will reserve a platform-spe‐
           cific  default  value.  A  value of -xpatchpadding=0 will reserve 0
           bytes of space. The maximum value for size on x86 is 127 bytes  and
           on SPARC is 2048 bytes.


       -xpec[={yes|no}]

           Generate a PEC (Portable Executable Code) binary.

           This  option  puts  the program intermediate representations in the
           object file and the binary. This binary may be used later for  tun‐
           ing and troubleshooting.

           A  binary  built with -xpec is usually 5 to 10 times larger than if
           it is built without.

           The default is -xpec=no. Without an argument, -xpec  is  equivalent
           to -xpec=yes.


       -xpentium

           (Obsolete) Use -xchip=generic instead.


       -xpg

           Synonym for -pg.


       -xpp={fpp|cpp}

           Selects  the source file preprocessor to be used with .F, .F95, and
           .F03 files.

           The default is fpp, which is appropriate for Fortran. Previous ver‐
           sions  of the compiler used cpp, the standard C language preproces‐
           sor. To select cpp, specify -xpp=cpp.


       -xprefetch[=a[,a]]

           Enable and adjust prefetch instructions on those architectures that
           support  prefetch.  Requires  compiling  with an optimization level
           -xO3 or higher.

           a must be one of the following values.



           auto

               Enable automatic generation of prefetch instructions.


           no%auto

               Disable automatic generation.


           explicit

               Enable explicit prefetch directives.


           no%explicit

               Disable explicit prefectch directives.


           latx:factor

               (SPARC) Adjust  the  compiler's  assumed  prefetch-to-load  and
               prefetch-to-store latencies by the specified factor. The factor
               must be a positive floating-point or integer number.

               The prefetch latency is the hardware delay between  the  execu‐
               tion  of  a  prefetch  instruction  and the time the data being
               prefetched is available in the cache.

               The compiler assumes a prefetch latency value when  determining
               how  far  apart to place a prefetch instruction and the load or
               store instruction that uses the prefetched data.  Note  --  the
               assumed  latency between a prefetch and a load might not be the
               same as the assumed latency between a prefetch and a store.

               The compiler tunes the prefetch mechanism for  optimal  perfor‐
               mance  across  a  wide range of machines and applications. This
               tuning might not always be optimal. For memory-intensive appli‐
               cations,  especially applications intended to run on large mul‐
               tiprocessors, you might be able to obtain better performance by
               increasing the prefetch latency values. To increase the values,
               use a factor that is greater than 1 (one). A value  between  .5
               and 2.0 will most likely provide the maximum performance.

               For  applications with datasets that reside entirely within the
               external cache, you might be able to obtain better  performance
               by decreasing the prefetch latency values. To decrease the val‐
               ues, use a factor that is less than one.

               To use the latx:factor sub-option, start with  a  factor  value
               near  1.0  and  run  performance tests against the application.
               Then increase or decrease the factor, as appropriate,  and  run
               the  performance tests again. Continue adjusting the factor and
               running the performance tests until you achieve optimum perfor‐
               mance. When you increase or decrease the factor in small steps,
               you will see no performance difference for a few steps, then  a
               sudden difference, then it will level off again.


           yes

               Same  as  -xprefetch=auto,explicit. No other sub-options may be
               specified.


           no

               Same as -xprefetch=no%auto,no%explicit.  No  other  sub-options
               may be specified.


           With  -xprefetch, -xprefetch=auto, and -xprefetch=yes, the compiler
           is free to insert prefetch instructions into the code it generates.
           This  can result in a performance improvement on architectures that
           support prefetch.

           Defaults:

           If  -xprefetch  is  not  specified,   -xprefetch=auto,explicit   is
           assumed.

           If   only  -xprefetch  is  specified,  -xprefetch=auto,explicit  is
           assumed.

           If automatic prefetching is enabled, such  as  with  -xprefetch  or
           -xprefetch=yes,  but  a  latency  factor  is  not  specified,  then
           latx:1.0 is assumed.

           Interactions:

           With -xprefetch=explicit, the compiler will  recognize  the  direc‐
           tives:



             !$PRAGMA SUN_PREFETCH_READ_ONCE (address)
             !$PRAGMA SUN_PREFETCH_READ_MANY (address)
             !$PRAGMA SUN_PREFETCH_WRITE_ONCE (address)
             !$PRAGMA SUN_PREFETCH_WRITE_MANY (address)


           The  -xchip setting effects the determination of the assumed laten‐
           cies and therefore the result of a latx:factor setting.

           The latx:factor sub-option is valid only when automatic prefetching
           is  enabled. That is, latx:factor is ignored unless it is used with
           auto.

           Warnings:

           Explicit prefetching should only  be  used  under  special  circum‐
           stances that are supported by measurements.

           Because  the compiler tunes the prefetch mechanism for optimal per‐
           formance across a wide range  of  machines  and  applications,  you
           should  only  use  the  latx:factor sub-option when the performance
           tests indicate there is  a  clear  benefit.  The  assumed  prefetch
           latencies  might change from release to release. Therefore, retest‐
           ing the effect  of  the  latency  factor  on  performance  whenever
           switching to a different release is highly recommended.


       -xprefetch_auto_type=[no%]indirect_array_access

           Generate indirect prefetches for a data arrays accessed indirectly.

           [no%]indirect_array_access  does [not] generate indirect prefetches
           for the loops indicated by the option  -xprefetch_level=[1|2|3]  in
           the same fashion the prefetches for direct memory accesses are gen‐
           erated.

           If you do not specify a setting for -xprefetch_auto_type, the  com‐
           piler sets it to -xprefetch_auto_type=no%indirect_array_access.

           Requires -xprefetch=auto and an optimization level -xO3 or higher.

           Options such as -xdepend can affect the aggressiveness of computing
           the indirect prefetch candidates and therefore  the  aggressiveness
           of  the  automatic indirect prefetch insertion due to better memory
           alias disambiguation information.


       -xprefetch_level=n

           Control the degree of insertion of prefetch instructions.

           This option is effective only when compiling with  -xprefetch=auto,
           with optimization level 3 or greater (-xO3), and on a platform that
           supports prefetch.

           n may be 1, 2, or 3.

           The default with -xprefetch=auto is level 2.

           Prefetch  level  2  finds  additional  opportunities  for  prefetch
           instructions  than  level  1.  Prefetch  level  3  finds additional
           prefetch instructions than level 2.

           Prefetch levels 2 and 3 may not be effective on older SPARC and x86
           platforms.


       -xprofile=p

           Collects data for a profile or use a profile to optimize.

           p must be collect[:profdir], use[:profdir], or tcov[:profdir]

           This  option  causes  execution  frequency data to be collected and
           saved during execution, then the data can  be  used  in  subsequent
           runs  to improve performance. Profile collection is safe for multi‐
           threaded applications. That is, profiling a program that  does  its
           own  multitasking ( -mt ) produces accurate results. This option is
           only valid when you specify -xO2 or greater level of optimization.

           If compilation and linking are performed  in  separate  steps,  the
           same  -xprofile  option  must  appear on the compile as well as the
           link step.


           collect[:profdir]

               Collects and saves execution frequency for  later  use  by  the
               optimizer  with  -xprofile=use.  The compiler generates code to
               measure statement execution-frequency.

               -xMerge, -ztext,  and  -xprofile=collect  should  not  be  used
               together. While -xMerge forces statically initialized data into
               read-only storage, -ztext prohibits  position-dependent  symbol
               relocations  in read-only storage, and -xprofile=collect gener‐
               ates statically initialized, position-dependent symbol  reloca‐
               tions in writable storage.

               The  profile directory name profdir, if specified, is the path‐
               name of the directory where profile data are to be stored  when
               a program or shared library containing the profiled object code
               is executed. If the pathname is not absolute, it is interpreted
               relative  to  the current working directory when the program is
               compiled with the option -xprofile=use:profdir.

               If no profile directory name is specified  with  -xprofile=col‐
               lect:prof_dir  or  -xprofile=tcov:prof_dir,  profile  data  are
               stored at run time in a directory named  program.profile  where
               program is the basename of the profiled process's main program.
               In  this  case,  the  environment  variables  SUN_PROFDATA  and
               SUN_PROFDATA_DIR  can be used to control where the profile data
               are stored at run time. If set, the profile data are written to
               the directory given by $SUN_PROFDATA_DIR/$SUN_PROFDATA.

               If  a  profile directory name is specified at compilation time,
               SUN_PROFDATA_DIR and SUN_PROFDATA have no effect at  run  time.
               These  environment  variables  similarly  control  the path and
               names of the profile data files written by tcov,  as  described
               in the tcov(1) man page.

               If these environment variables are not set, the profile data is
               written to the directory profdir.profile in the current  direc‐
               tory,  where  profdir is the name of the executable or the name
               specified in the -xprofile=collect:profdir flag. -xprofile does
               not append .profile to profdir if profdir already ends in .pro‐
               file. If you run the program several times, the execution  fre‐
               quency  data accumulates in the profdir.profile directory; that
               is, output from prior executions is not lost.

               Example[1]: to collect and use profile data  in  the  directory
               myprof.profile  located in the same directory where the program
               is built:



                 f95 -xprofile=collect:myprof.profile -xO5 prog.f95 -o prog
                   ./prog
                 f95 -xprofile=use:myprof.profile -xO5 prog.f95 -o prog


               Example[2]:  to  collect  profile   data   in   the   directory
               /bench/myprof.profile  and later use the collected profile data
               in a feedback compilation at optimization level -xO5:


                 f95 -xprofile=collect:/bench/myprof.profile -xO5 prog.f95 \
                      -o prog
                   ...run prog from multiple locations...
                 f95 -xprofile=use:/bench/myprof.profile -xO5 prog.f95 -o prog


               If you are compiling and linking in separate steps,  make  sure
               that  any object files compiled with -xprofile=collect are also
               linked with -xprofile=collect.

               See also the ENVIRONMENT VARIABLES section  of  this  man  page
               below  for  descriptions  of environment variables that control
               asynchronous profile collections.


           use[:profdir]

               Uses execution frequency data collected from code compiled with
               -xprofile=collect[:profdir]   or   -xprofile=tcov[:profdir]  to
               optimize for the work performed when the profiled code was exe‐
               cuted.  profdir  is the pathname of a directory containing pro‐
               file data collected by running a program that was compiled with
               -xprofile=collect[:profdir] or -xprofile=tcov[:profdir].

               To  generate  data  that  can  be  used by both tcov and -xpro‐
               file=use[:profdir], the same profile directory must  be  speci‐
               fied   at   compilation   time,   using   the   option   -xpro‐
               file=tcov[:profdir]. To minimize confusion, specify profdir  as
               an absolute pathname.

               The  profdir is optional. If profdir is not specified, the name
               of the executible binary is used. a.out is used if  -o  is  not
               specified.  The compiler looks for profdir.profile/feedback, or
               a.out.profile/feedback without profdir specified. For example:


                 f95 -xprofile=collect -o myexe prog.f95
                 f95 -xprofile=use:myexe -xO5 -o myexe prog.f95

               The program is optimized by using the execution frequency  data
               previously generated and saved in the feedback files written by
               a previous  execution  of  the  program  compiled  with  -xpro‐
               file=collect.

               Except  for  the  -xprofile  option, the source files and other
               compiler options must be exactly the same as those used for the
               compilation  that  created  the  compiled program which in turn
               generated the feedback file. The same version of  the  compiler
               must  be  used  for both the collect build and the use build as
               well.

               If compiled with -xprofile=collect:profdir,  the  same  profile
               directory  name profdir must be used in the optimizing compila‐
               tion: -xprofile=use:profdir.

               See also -xprofile_ircache for speeding up compilation  between
               collect and use phases.


           tcov[:profdir]

               Instrument object files for basic block coverage analysis using
               tcov(1).

               If the optional :profdir argument is  specified,  the  compiler
               will  create a profile directory at the specified location. The
               data stored in the profile directory  can  be  used  either  by
               tcov(1) or by the compiler with -xprofile=use:profdir.

               If  the optional :profdir argument is omitted, a profile direc‐
               tory will be created when the profiled program is executed. The
               data  stored  in  the  profile  directory  can  only be used by
               tcov(1). The location of the  profile  directory  can  be  con‐
               trolled  using environment variables SUN_PROFDATA and SUN_PROF‐
               DATA_DIR. See ENVIRONMENT VARIABLES below.

               If the location specified by :profdir is not an absolute  path‐
               name,  it is interpreted relative to the current working direc‐
               tory when the program is compiled.

               If :profdir is specified for any object file, the same location
               must be specified for all object files in the same program. The
               directory whose location  is  specified  by  :profdir  must  be
               accessible  from  all machines where the profiled program is to
               be executed. The profile directory should not be deleted  until
               its contents are no longer needed, because data stored there by
               the compiler cannot be restored except by recompilation.

               Example 1: if object files for one or more  programs  are  com‐
               piled  with  -xprofile=tcov:/test/profdata,  a  directory named
               /test/profdata.profile will be created by the compiler and used
               to  store  data  describing the profiled object files. The same
               directory will also be used at execution time to  store  execu‐
               tion data associated with the profiled object files.

               Example  2: if a program named "myprog" is compiled with -xpro‐
               file=tcov and executed in the directory /home/joe,  the  direc‐
               tory  /home/joe/myprog.profile  will be created at run time and
               used to store runtime profile data.




       -xprofile_ircache[=path]

           (SPARC) Save and reuse compilation data  between  collect  and  use
           profile phases.

           Use  with  -xprofile=collect|use to improve compilation time during
           the use phase by reusing compilation data saved  from  the  collect
           phase.

           If  specified,  path  will  override  the location where the cached
           files are saved. By default, these files will be saved in the  same
           directory  as the object file. Specifying a path is useful when the
           collect and use phases happen in two different places.

           A typical sequence of commands might be:



             f95 -xO5 -xprofile=collect -xprofile_ircache t1.f95 t2.f95
             a.out // run collects feedback data
             f95 -xO5 -xprofile=use -xprofile_ircache t1.f95 t2.f95


           With large programs, compilation time in the use phase can  improve
           significantly  by  saving the intermediate data in this manner. But
           this will be at the expense of disk  space,  which  could  increase
           considerably.


       -xprofile_pathmap=collect_prefix:use_prefix

           (SPARC) Set path mapping for profile data files.

           Use the -xprofile_pathmap option with the -xprofile=use option.

           Use  -xprofile_pathmap  when the compiler is unable to find profile
           data for an object file that is compiled with -xprofile=use, and:


               o      You are compiling with -xprofile=use  into  a  directory
                      that is not the directory used when previously compiling
                      with -xprofile=collect.


               o      Your object files share a common base name in  the  pro‐
                      file  but  are  distinguished  from  each other by their
                      location in different directories.

           The collect-prefix is the prefix of the UNIX path name of a  direc‐
           tory  tree in which object files were compiled using -xprofile=col‐
           lect.

           The use-prefix is the prefix of the UNIX path name of  a  directory
           tree in which object files are to be compiled using -xprofile=use.

           If  you  specify  multiple instances of -xprofile_pathmap, the com‐
           piler processes them in the order of their  occurrence.  Each  use-
           prefix  specified  by  an instance of -xprofile_pathmap is compared
           with the object file path name until either a  matching  use-prefix
           is  identified  or  the  last  specified use-prefix is found not to
           match the object file path name.


       -xrecursive

           Allow routines defined without RECURSIVE attribute  to  call  them‐
           selves recursively.

           Normally, only subprograms defined with the RECURSIVE attribute can
           call themselves recursively.

           Compiling with -xrecursive enables subprograms to  call  themselves
           recursively  even if they are not defined with the attribute RECUR‐
           SIVE. But, unlike the RECURSIVE attribute, this flag does not cause
           local  variables  to be allocated on the stack by default. For each
           recursive invocation of the subprogram to have separate values  for
           local  variables,  compile with -stackvar to put local variables on
           the stack.

           Compiling routines with -xrecursive can cause performance  degrada‐
           tions.


       -xreduction

           Synonym for -reduction.


       -xregs=r[,r...]

           Specify the usage of registers for the generated code.

           r  is  a  comma-separated list of one or more of the following sub-
           options: appl, float, frameptr.

           Prefixing a suboption with no% disables that sub-option.

           Example: -xregs=appl,no%float

           Note that -xregs sub-options are restricted  to  specific  hardware
           platforms.



           appl (SPARC)

               Allow  the compiler to generate code using the application reg‐
               isters as scratch registers. The application registers are: g2,
               g3,  and  g4  on 32-bit platforms and g2 and g3 on 64-bit plat‐
               forms.

               It  is  strongly  recommended  that  all  system  software  and
               libraries  be  compiled  using  -xregs=no%appl. System software
               (including shared libraries)  must  preserve  these  registers'
               values  for  the  application. Their use is intended to be con‐
               trolled by  the  compilation  system  and  must  be  consistent
               throughout the application.

               In  the SPARC ABI, these registers are described as application
               registers.  Using  these  registers  can  increase  performance
               because  fewer load and store instructions are needed. However,
               such use can conflict with some old library programs written in
               assembly code.

               For more information on SPARC instruction sets, see -xarch.


           float (SPARC)

               Allow the compiler to generate code by using the floating-point
               registers as scratch  registers  for  integer  values.  Use  of
               floating-point  values  may  use  these registers regardless of
               this option. To generate binary code free of all references  to
               floating  point  registers,  use  -xregs=no%float and make sure
               your source code does not in any way use floating point types.


           frameptr (x86)

               Allow the compiler to use the frame-pointer register  (%ebp  on
               IA32, %rbp on x86 64-bit platforms) as a general-purpose regis‐
               ter.

               The default is -xregs=no%frameptr.

               The C++ compiler ignores -xregs=frameptr unless exceptions  are
               also   disabled   with   -features=no%except.  Note  also  that
               -xregs=frameptr is part of -fast, but is  ignored  by  the  C++
               compiler unless -features=no%except is also specified.

               With  -xregs=frameptr  the  compiler  is free to use the frame-
               pointer register to improve program performance. However,  some
               features  of the debugger and performance measurement tools may
               be limited. Stack tracing, debuggers, and performance analyzers
               cannot report on functions compiled with -xregs=frameptr.

               Also,  C++  calls to Posix pthread_cancel() will fail trying to
               find cleanup handlers.

               Mixed C, Fortran, and C++ code  should  not  be  compiled  with
               -xregs=frameptr  if  a  C++  function, called directly or indi‐
               rectly from a C or Fortran function, can throw an exception. If
               compiling    such   mixed   source   code   with   -fast,   add
               -xregs=no%frameptr after the -fast option on the command line.

               With more available registers on  64-bit  platforms,  compiling
               with  -xregs=frameptr  has  a better chance of improving 32-bit
               code performance than 64-bit code.

               Note: -xregs=frameptr is ignored and a warning is issued by the
               compiler  if you also specify -xpg. Also, -xkeepframe overrides
               -xregs=frameptr.


           The  SPARC  default  is  -xregs=appl,float.  The  x86  default   is
           -xregs=no%frameptr. -xregs=frameptr is included in the expansion of
           -fast on x86.

           It is strongly recommended  that  you  compile  code  intended  for
           shared   libraries   that   will   link   with  applications,  with
           -xregs=no%appl,float. At the very least, the shared library  should
           explicitly  document  how it uses the application registers so that
           applications linking with those libraries are aware of these regis‐
           ter assignments.

           For  example,  an  application  using  the registers in some global
           sense (such as using a register to  point  to  some  critical  data
           structure)  would need to know exactly how a library with code com‐
           piled without -xregs=no%appl is using the application registers  in
           order to safely link with that library.


       -xs[={yes|no}]

           (Oracle Solaris) Link debug information from object files into exe‐
           cutable.

           -xs is the same as -xs=yes. The default for -xdebugformat=dwarf  is
           the same as -xs=yes.

           This  option  controls  the trade-off of executable size versus the
           need to retain object files in  order  to  debug.  For  dwarf,  use
           -xs=no to keep the executable small but depend on the object files.
           This option has almost no effect on dbx performance or the  runtime
           performance of the program.

           When  the compile command forces linking (that is, -c is not speci‐
           fied) there will be no object file(s)  and  the  debug  information
           must be placed in the executable. In this case, -xs=no (implicit or
           explicit) will be ignored.

           The feature is implemented by having the compiler adjust  the  sec‐
           tion  flags  and/or section names in the object file that it emits,
           which then tells the linker what to do for that object file's debug
           information.  It  is  therefore  a  compiler  option,  not a linker
           option. It is possible to have an executable with some object files
           compiled -xs=yes and others compiled -xs=no.

           Linux  compilers  accept  but  ignore  -xs.  Linux compilers do not
           accept -xs={yes|no}.


       -xsafe=mem

           (SPARC) Allow the compiler to assume that no memory protection vio‐
           lations occur.

           This  option  allows  the  compiler  to  use  the non-faulting load
           instruction in the SPARC V9 architecture.

           Warnings:

           Because non-faulting loads do not cause a trap when a fault such as
           address  misalignment  or segmentation violation occurs, you should
           use this option only for  programs  in  which  such  faults  cannot
           occur.  Because  few  programs  incur  memory-based  traps, you can
           safely use this option for most programs. Do not  use  this  option
           for programs that explicitly depend on memory-based traps to handle
           exceptional conditions.

           Interactions:

           This option takes effect only when  used  with  optimization  level
           -xO5 and one of the following -xarch values: sparc, sparcvis, spar‐
           cvis2, sparcvis3, for both -m32, and -m64.


       -xsecure_code_analysis{=[yes|no]}

           Enable or disable compiler secure code analysis to find and display
           possible  memory  safety  violations  at  compile time. Secure code
           analysis runs in parallel with  the  compilation  process  and  may
           result in increased compile time.

           If  -xsecure_code_analysis  is  not specified or if it is specified
           without a yes|no  argument,  the  default  is  -xsecure_code_analy‐
           sis=yes.

           Use -xsecure_code_analysis=no to disable secure code analysis.


       -xsegment_align=n

           (Oracle Solaris) This option causes the driver to include a special
           mapfile on the link line. The mapfile aligns the  text,  data,  and
           bss  segments  to  the  value specified by n. When using very large
           pages, it is important that the heap and stack segments are aligned
           on  an  appropriate  boundary.  If  these segments are not aligned,
           small pages will be used up to the next boundary, which could cause
           a  performance  degradation.  The mapfile ensures that the segments
           are aligned on an appropriate boundary.

           The n value must be one of the following:

           SPARC: The following values are valid: 8K, 64K, 512K, 2M, 4M,  32M,
           256M, 1G, and none.

           x86:  The  following  values  are valid: 4K, 8K, 64K, 512K, 2M, 4M,
           32M, 256M, 1G, and none.

           The default for both SPARC and x86 is none.

           Recommended usage is as follows:


             SPARC 32-bit compilation: -xsegment_align=64K
             SPARC 64-bit compilation: -xsegment_align=4M

             x86 32-bit compilation: -xsegment_align=8K
             x86 64-bit compilation: -xsegment_align=4M

           The driver will include the appropriate mapfile.  For  example,  if
           the user specifies -xsegment_align=4M, the driver adds -M  install-
           directory/lib/compilers/mapfiles/map.4M.align  to  the  link  line,
           where  install-directory  is the installation directory. The afore‐
           mentioned segments will then be aligned on a 4M boundary.


       -xspace

           Do not increase code size.

           Do no optimizations that increase the code size.  Example:  Do  not
           unroll loops.


       -xtarget=t

           Specifies  the  target system for the instruction set and optimiza‐
           tion.

           t must be one of: native, generic, or system-name.

           Each specific value for -xtarget expands into  a  specific  set  of
           values  for  the  -xarch,  -xchip,  and  -xcache  options.  Use the
           -xdryrun option to determine the expansion of -xtarget=native on  a
           running system.

           For    example,    -xtarget=T3    is    equivalent   to   -xchip=T3
           -xcache=8/16/4:6144/64/24  -xarch=sparcvis3.



             cc -dryrun -xtarget=T3 |& grep ###
             ###     command line files and options (expanded):
             ### -dryrun -xchip=T3 -xcache=8/16/4:6144/64/24 -xarch=sparcvis3


           The data type model, either 32-bit or 64-bit, is indicated  by  the
           -m32|-m64  option.  To  specify the 64-bit data type model, use the
           -m64 option as follows:


             -xtarget=<value> ... -m64

           To specify the 32-bit data type model, use the -m32 option as  fol‐
           lows:


             -xtarget=<value> ... -m32

           See  also the -m32|-m64 option for a discussion of the default data
           type model.

           The expansion of -xtarget for a  specific  host  system  might  not
           expand  to  the  same -xarch, -xchip, or -xcache settings as -xtar‐
           get=native when compiling on that system.

           The following values for t are valid on all systems:


           native

               Equivalent to


                 âxarch=native âxchip=native âxcache=native

               to give best performance on the host system.


           generic

               Equivalent to


                 âxarch=generic âxchip=generic âxcache=generic

               to give best performance on most systems. This is the default.


           system-name

               Get the best performance for the specified system.

               Select a system name from the following lists  that  represents
               the actual system you are targeting.

               Valid  SPARC system names are: sparc64vi (Obsolete), sparc64vii
               (Obsolete), sparc64viiplus, sparc64x, sparc64xplus, sparc64xii,
               ultraT1  (Obsolete), ultraT2 (Obsolete), ultraT2plus, T3 (Obso‐
               lete), T4, T5, T7, M5, M6, and M7.

               Valid x86 system names are: barcelona (Obsolete), haswell, ivy‐
               bridge,  nehalem,  pentium  (Obsolete), pentium_pro (Obsolete),
               pentium3 (Obsolete), pentium4, penryn,  sandybridge,  westmere,
               woodcrest, and broadwell and skylake.




       -xtemp=path

           Equivalent to -temp=path.


       -xthroughput[={yes|no}]

           The  -xthroughput  option  tells  the compiler that the application
           will be run in situations where many processes  are  simultaneously
           running on the system.

           If  -xthroughput=yes,  the  compiler  will favor optimizations that
           slightly reduce performance for a single  process  while  improving
           the  amount of work achieved by all the processes on the system. As
           an example, the compiler might choose  to  be  less  aggressive  in
           prefetching  data.  Such a choice would reduce the memory bandwidth
           consumed by the process, and as such the process  may  run  slower,
           but  it  would  also leave more memory bandwidth to be shared among
           other processes.

           The default is -xthroughput=no.


       -xtime

           Synonym for -time.


       -xtypemap=spec

           Specify default data mappings.

           This option provides a flexible way to specify the byte  sizes  for
           default data types.

           The syntax of the string spec is:

           type:bits,type:bits,...

           The  allowable data types are REAL, DOUBLE, INTEGER. The data sizes
           accepted are 16, 32, 64, and 128.

           This option applies to all variables declared without explicit byte
           sizes, as in REAL XYZ.

           The allowable combinations are:


             real:32
             real:64
             double:64
             double:128
             integer:16
             integer:32
             integer:64

           A useful mapping is:


             -xtypemap=real:64,double:64,integer:64

           which  maps REAL and DOUBLE to 8 bytes, but does not promote DOUBLE
           PRECISION to QUAD PRECISION.

           Note also that INTEGER and LOGICAL are treated the same,  and  COM‐
           PLEX is mapped as two REAL data elements. Also, DOUBLE COMPLEX will
           be treated the way DOUBLE is mapped. For more information, see  the
           Oracle Developer Studio 12.6: Fortran
                           User' Guide.


       -xunboundsym={yes|no}

           Specify  whether  the  program  contains  references to dynamically
           bound symbols.

           -xunboundsym=yes means the program contains references  dynamically
           bound symbols.

           -xunboundsym=no  means  the  program does not contain references to
           dynamically bound symbols.

           The default is -xunboundsym=no.


       -xunroll=n

           Synonym for -unroll=n.


       -xvector[=a]

           Enables automatic generation of calls to the vector library  and/or
           the  generation  of  the  SIMD  (Single  Instruction Multiple Data)
           instructions on processors that support SIMD. You must use  default
           rounding  mode  by  specifying  -fround=nearest  when  you use this
           option.

           The -xvector option requires optimization level  -xO3  or  greater.
           The  option  is silently ignored if the optimization level is lower
           than -xO3.

           a is the equivalent of the following:



           [no%]lib

               (Oracle Solaris) Enables the compiler to transform math library
               calls  within  loops into single calls to the equivalent vector
               math routines when  such  transformations  are  possible.  This
               could  result in a performance improvement for loops with large
               loop counts. Use no%lib to disable this option.


           [no%]simd

               (SPARC)   For    -xarch=sparcace,    -xarch=sparcaceplus    and
               -xarch=sparcace2,  directs  the  compiler to use floating point
               and integral SIMD instructions to improve  the  performance  of
               certain  loops. Contrary to that of the other SPARC -xarch val‐
               ues under -xarch=sparcace, -xarch=sparcaceplus and -xarch=spar‐
               cace2,  -xvector=simd  is  in  effect  unless  -xvector=none or
               -xvector=no%simd  has  been  specified.  In  addition  -xO4  or
               greater  is required for -xvector=simd, otherwise -xvector=simd
               is ignored.

               For all other -xarch values, directs the compiler  to  use  the
               Visual  Instruction  Set [VIS1, VIS2, ViS3, etc.] SIMD instruc‐
               tions to improve the performance of  certain  loops.  Basically
               with  explicit  -xvector=simd option, the compiler will perform
               loop transformation enabling the generation of special  vector‐
               ized SIMD instructions to reduce the number of loop iterations.
               In addition to the optimization level requirement noted  below,
               the  -xvector=simd option is effective only if -xarch=sparcvis3
               and above.


           [no%]simd

               (x86) Directs the compiler to  use  the  native  x86  SSE  SIMD
               instructions to improve performance of certain loops. Streaming
               extensions are used on x86 by default at optimization  level  3
               and above where beneficial. Use no%simd to disable this option.

               The  compiler  will use SIMD only if streaming extensions exist
               in the target architecture; that is, if target ISA is at  least
               SSE2.   For   example,   you  can  specify  -xtarget=woodcrest,
               -xarch=generic, -xarch=sse2, -xarch=sse3, or -fast on a  modern
               platform  to  use it. If the target ISA has no streaming exten‐
               sions, the sub-option will have no effect.


           %none

               Disable this option entirely.


           yes

               This option is deprecated, specify -xvector=lib instead.


           no

               This option is deprecated, specify -xvector=%none instead.


           On x86, the default is -xvector=simd.  On  SPARC,  the  default  is
           -xvector=simd   under   -xarch=sparcace,   -xarch=sparcaceplus  and
           -xarch=sparcace2, and -xvector=%none on other SPARC -xarch  values.
           If  you specify -xvector without a sub-option, the compiler assumes
           -xvector=simd,lib on x86 Oracle Solaris, -xvector=lib on SPARC Ora‐
           cle Solaris, and -xvector=simd on Linux platforms.

           This option overrides previous instances so -xvector=%none undoes a
           previously specified -xvector=lib.

           The compiler includes the libmvec libraries in the  load  step.  If
           you  specify  -xvector at compile time, you must also specify it at
           link time.


       -xvpara

           Synonym for -vpara.


       -ztext

           Make no library with relocations.

           Do not make the library if relocations remain. The general  purpose
           of  -ztext  is  to  verify that the generated library is pure text;
           instructions are all position-independent code.  Therefore,  it  is
           generally used with both -G and -pic.

           With  -ztext, if ld finds an incomplete relocation in the text seg‐
           ment, then it does not build the library. If it finds  one  in  the
           data segment, then it generally builds the library anyway; the data
           segment is writeable.

           Without -ztext, ld builds the library, relocations or not.

           A typical use is to make a  library  from  both  source  files  and
           object  files,  where you do not know if the object files were made
           with -pic.

           -ztext and -xprofile=collect should not be  used  together.  -ztext
           prohibits  position-dependent symbol relocations in read-only stor‐
           age, and -xprofile=collect generates statically initialized,  posi‐
           tion-dependent symbol relocations in writable storage.




       Other  arguments  are  taken  to  be either linker option arguments, or
       names of f95-compatible object programs, typically produced by an  ear‐
       lier  run, or libraries of routines that are f95-compatible. These pro‐
       grams, together with the results of  any  compilations  specified,  are
       linked  in the order given to produce an executable program in the file
       specified by the -o option, or in a file named a.out if the  -o  option
       is not specified.

FILE SUFFIXES
       Files  with  the  following suffixes may appear on the compiler command
       line. The suffix usually identifies the type of the file and determines
       how the compiler processes it.

       .f .for

           Fixed format Fortran source files.


       .f90 .f95 .f03

           Free format Fortran 90, Fortran 95, or Fortran 2003 source files.


       .F

           Fixed  format  Fortran  source  containing preprocessor directives.
           These files are preprocessed by fpp(1) before  they  are  compiled.
           (See also the -xpp= option.)


       .F90 .F95 .F03

           Free  format  Fortran 95 source containing preprocessor directives.
           These files are preprocessed fpp(1) before they are compiled.  (See
           also the -xpp= option.)


       .s

           Assembler source files.


       .il

           Inline  assembler  expansion  code template files. Used by the com‐
           piler to expand calls to selected routines into  inline  code.  See
           the inline(1) man page and -inline option flag for more information
           on inline template files.


       .o

           Object files to be passed to the linker.


       .so

           Shared object files or libraries to be passed to the linker.


       .a

           Library files passed to the linker, or searched for MODULE  subpro‐
           grams (see the -M option flag.)


       .mod

           Files containing precompiled MODULE program units. These are gener‐
           ated by the compiler. See the -M option flag.


DIRECTIVES
   General Directives
       f95 allows general compiler directive lines starting with C$PRAGMA, (in
       fixed-format  only),  or !$PRAGMA, and either uppercase or lowercase is
       allowed.


         !$PRAGMA C(list_of_subprogram_names)
         !$PRAGMA SUN UNROLL n
         !$PRAGMA WEAK function_name
         !$PRAGMA SUN OPT=n
         !$PRAGMA PIPELOOP=n
         !$PRAGMA SUN_PREFETCH_READ_ONCE (name)
         !$PRAGMA SUN_PREFETCH_READ_MANY (name)
         !$PRAGMA SUN_PREFETCH_WRITE_ONCE (name)
         !$PRAGMA SUN_PREFETCH_WRITE_MANY (name)
         !$PRAGMA IGNORE_TKR list
         !$PRAGMA ASSUME (expression [, probability])



   Parallelization Directives
       f95 recognizes the OpenMP API parallelization directives. OpenMP is the
       recommended  model  for  explicit  parallelization  for  all the Oracle
       Developer Studio compilers.


       In this release, the f95 compiler accepts Version  2.5  of  the  OpenMP
       Fortran 95 API. These have the sentinel !OMP.


       For  detailed  information on the Oracle Developer Studio OpenMP imple‐
       mentation, see the Oracle Developer Studio 12.6: OpenMP API
                   User's Guide.

ENVIRONMENT VARIABLES
       The paths shown below assume the root of the  Oracle  Developer  Studio
       software installation is indicated by <install-directory>. Contact your
       system administrator to determine the actual path.

       PATH

           To use f95, add the following to the start of the search path:

             <install-directory>/bin/



       MANPATH

           To access the f95 man pages, add the following to the MANPATH envi‐
           ronment variable:

             <install-directory>/man/



       MODDIR

           Specifies  the  path to the directory where the compiler will write
           .mod module files. See also -moddir, which  takes  precedence  over
           the setting of the MODDIR environment variable.


       LD_LIBRARY_PATH

           Generally,  you  need not set up LD_LIBRARY_PATH. If you do need to
           do so, then maybe there is some discrepancy in the installation, or
           some executable has been built incorrectly.

           Set the LD_LIBRARY_PATH, environment variable to:

             <install-directory>/lib/



       LD_LIBRARY_PATH_64

           Like  the  LD_LIBRARY_PATH environment variable, LD_LIBRARY_PATH_64
           sets the path for searching for 64-bit libraries.

           When running in a 64-bit enabled Oracle Solaris OS and  linking  in
           32-bit mode, LD_LIBRARY_PATH_64 is ignored. If only LD_LIBRARY_PATH
           is defined, it us used for both 32-bit and 64-bit linking. If  both
           LD_LIBRARY_PATH  and  LD_LIBRARY_PATH_64  are  defined,  the 32-bit
           linking will be done using LD_LIBRARY_PATH and the  64-bit  linking
           using LD_LIBRARY_PATH_64.

           See Oracle Solaris 11.3 Linkers and Libraries Guide for more infor‐
           mation on these environment variables.


       LD_RUN_PATH

           If you use LD_RUN_PATH, note that for f95, LD_RUN_PATH is not iden‐
           tical  with -R. (For ld.so, they are identical.) See -R in the Ora‐
           cle Developer Studio 12.6: Fortran
                           User' Guide for details.


       TMPDIR

           The compiler normally creates  temporary  files  in  the  directory
           /tmp.  You may specify another directory by setting the environment
           variable TMPDIR to your chosen directory. (If TMPDIR is not a valid
           directory, the compiler will use /tmp). The -temp option has prece‐
           dence over the TMPDIR environment variable.


       SUN_PROFDATA=profdir

           If set, store profile data collected from a program  compiled  with
           -xprofile=collect in a directory named profdir in the current work‐
           ing directory at the time that the  program  is  executed.  If  the
           optional   argument   :profdir   was  specified  in  -xprofile=col‐
           lect[:profdir] at compilation time, SUN_PROFDATA as no effect.


       SUN_PROFDATA_DIR=dirname

           If set, store profile data collected from a program  compiled  with
           -xprofile=collect  in a directory whose UNIX dirname is dirname. If
           dirname is not absolute, it is interpreted relative to the  current
           working  directory at the time that the program is executed. If the
           optional  argument  :profdir  was   specified   in   -xprofile=col‐
           lect[:profdir] at compilation time, SUN_PROFDATA_DIR has no effect.


       SUN_PROFDATA_ASYNC_INTERVAL=async_interval

           Set  this  environment variable to enable asynchronous profile col‐
           lection. In asynchronous profile collection, profile data are  col‐
           lected  from  a running process at regular intervals whose duration
           is specified in units of seconds.

           SUN_PROFDATA_ASYNC_INTERVAL has no effect unless one of  the  envi‐
           ronment  variables  LD_AUDIT, LD_AUDIT_32, or LD_AUDIT_64 is set to
           /usr/lib/{,64}/libxprof_audit.so.1.

           Asynchronous profile collection requires  an  MT-safe,  mmap  based
           memory  allocator, such as libumem(3LIB) with mmap-based allocation
           specified by setting UMEM_OPTIONS to backend=mmap.

           Example: to enable asynchronous profile collection from  a  64  bit
           process  at  1  minute  intervals,specify the following environment
           variables:


             $ env LD_AUDIT_64=/usr/lib/64/libxprof_audit.so.1 \
               SUN_PROFDATA_ASYNC_INTERVAL=60 UMEM_OPTIONS=backend=mmap \
               64-bit-program [program-args]




       SUN_PROFDATA_ASYNC_VERBOSE=verbose

           If set nonzero, enables verbose messages from asynchronous  collec‐
           tor  to  stderr.  SUN_PROFDATA_ASYNC_VERBOSE  has  no effect unless
           asynchronous profile collection is enabled.


       SUN_PROFDATA_CLEANUP_AFTER_EXIT=[0|1]

           If set to 1, enables profiler  to  clean  up  its  data  structures
           between  the  time  that the process calls exit() and the time that
           process exit is complete. If set to 0, avoids destructive interfer‐
           ence  with  profile collection by application threads that have not
           terminated before the application calls exit().  See  exit(3C)  for
           details. The default setting is SUN_PROFDATA_CLEANUP_AFTER_EXIT=0.


       SUN_PROFDATA_REPLACE={objfile,program,all}

           SUN_PROFDATA_REPLACE  indicates  the  scope  of  profile data to be
           reset when a changed version of an object file is detected at  run‐
           time. Use SUN_PROFDATA_REPLACE to ensure that profile data are con‐
           sistent with the profiled program within the specified unit of pro‐
           gram scope.

           The  values  of SUN_PROFDATA_REPLACE and their meanings are as fol‐
           lows:


           objfile

               Reset profile data of changed object file.


           program

               Reset profile data of all object files  in  program  containing
               changed object file.


           all

               Reset  entire  contents of profile directory if any object file
               has changed.

           The  default   setting   of   SUN_PROFDATA_REPLACE   is   SUN_PROF‐
           DATA_REPLACE=objfile .

           Example:



             % setenv SUN_PROFDATA_REPLACE program (csh)
             $ export SUN_PROFDATA_REPLACE=program (ksh)


           With  this setting, when a program containing a changed object file
           is executed, all object files in the program will have  their  pro‐
           file data reset. Relevant options include -xOn and -xipo=n.



       Refer to the Oracle Developer Studio
                 12.6:  OpenMP API User's Guide for information about the fol‐
       lowing environment variables that can be set for an OpenMP program or a
       program automatically parallelized by the -xautopar compiler option:

           o      OMP_SCHEDULE


           o      OMP_NUM_THREADS


           o      OMP_DYNAMIC


           o      OMP_PROC_BIND


           o      OMP_PLACES


           o      OMP_NESTED


           o      OMP_STACKSIZE


           o      OMP_WAIT_POLICY


           o      OMP_MAX_ACTIVE_LEVELS


           o      OMP_THREAD_LIMIT


           o      OMP_CANCELLATION


           o      OMP_DISPLAY_ENV


           o      PARALLEL


           o      SUNW_MP_WARN


           o      SUNW_MP_THR_IDLE


           o      SUNW_MP_PROCBIND


           o      SUNW_MP_MAX_POOL_THREADS


           o      SUNW_MP_MAX_NESTED_LEVELS


           o      STACKSIZE


           o      SUNW_MP_GUIDED_WEIGHT


           o      SUNW_MP_WAIT_POLICY


FILES
       See  the section FILE SUFFIXES above for files identified by their name
       suffix that may appear on the compiler command line.


       In addition, the compiler uses the following files:


       /usr/lib/libc.so

           Standard C system library


       /usr/lib/libm.so

           Standard system math library


       /tmp/*

           Compiler temporary files


       mon.out

           File produced for analysis by prof(1)


       gmon.out

           File produced for analysis by gprof(1)


       libfsu_db.so.1

           Fortran debugging support library


       libfsu.so.1

           Fortran runtime library


       libm.so

           System math library


       libmmheap.so.1

           Memory allocator for Oracle Developer Studio compilers and runtimes


       libmtsk_db.so.1

           Debugging support library for -xautopar and -xopenmp


       libmtsk.so.1

           Runtime library for -xautopar and -xopenmp


       libmvec.so.1

           System vector math library


       libstkovf.so.1

           Runtime library for stack overflow diagnosis


       libsunmath.so.1

           System math library extensions


       libsunperf.so

           Sun Performance library


       libtdf.so.1

           File access library for -xprofile


       libxprof_audit.so.1

           Linker audit library for -xprofile


       libxprof.so.1

           Runtime library for -xprofile


       llib-lm

           System math lint library


       llib-lm.ln

           System math lint library


       llib-lsunmath

           System math extensions lint library


       llib-lsunmath.ln

           System math extensions lint library




       The following reside in the Oracle Developer Studio installation direc‐
       tory, as indicated by <install-directory>.


       <install-directory>/bin/fpp

           Fortran preprocessor


       <install-directory>/bin/cpp

           C preprocessor


       <install-directory>/prod/include/f95/

           Path searched for f95 INCLUDE statement


       <install-directory>/prod/include/f95/floatingpoint.h

           f95 IEEE arithmetic type definitions




       The  following  libraries  may exist in both .so and .a versions: Note:
       Mixing static and shared Fortran runtime libraries should  be  avoided;
       always link with the latest shared Fortran libraries.


       libfsu

           f95  support  intrinsics.  On  Oracle  Solaris,  the shared library
           libfsu.so is bundled with the operating system.


       libfui

           Legacy f95 UNIX interface library


       libf*ai

           Legacy Fortran 95 array intrinsics libraries


       libifai

           Fortran 95 interval array intrinsics library


       libsunmath

           Oracle Developer Studio math library. On Oracle Solaris, the shared
           library libsunmath.so is bundled with the operating system.


       libsunimath

           Oracle Developer Studio interval math library



SEE ALSO
       Complete  Oracle  Developer  Studio  documentation  for this release is
       available on the Oracle Technical Network website:


       http://oracle.com/technetwork/server-storage/developerstudio


       Consult the following man  pages  for  additional  information:  cc(1),
       dbx(1),  fpp(1),  fpr(1),  fsplit(1)  ,  gprof(1),  ld(1),  perror(3F),
       prof(1), tcov(1).


       Consult the following manuals for detailed information:


       Oracle Developer Studio 12.6: Fortran
                 User' Guide


       Fortran Programming Guide


       Oracle Developer Studio 12.6: OpenMP API
                 User's Guide


       Oracle Developer Studio 12.6: Numerical
                 Computation Guide


       Oracle Developer Studio 12.6: Performance
                 Analyzer


       Fortran Library Reference


       Oracle Solaris 11.3 Linkers and Libraries GuideSolaris


       Oracle Developer Studio 12.6: Debugging a
                 Program with dbx


       Sun Performance Library User's Guide: The Sun Performance Library  con‐
       tains  subroutines and functions for operations in computational linear
       algebra and Fourier transforms.


       You can find much more information on the Oracle Developer  Studio  web
       site:


       http://oracle.com/technetwork/server-storage/developerstudio

DIAGNOSTICS
       The diagnostics produced by f95 itself are intended to be self-explana‐
       tory. Occasional messages can be produced by the linker.



Studio 12.6                        May 2017                             f95(1)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3