|
Modified: May 20 2002
NAME Last change: 00/04/03 Sun WorkShop 6
f95, f90 - Fortran 95 compiler
SYNOPSIS
May be invoked by either f95 or f90 commands; they are
equivalent.
f95 | f90 [ -a ] [ -aligncommon[=a] ] [ -ansi ]
[ -autopar ] [ -Bx ] [ -C ] [ -c ] [ -cg89 ] [ -cg92 ]
[ -Dnm[=def] ] [ -dalign ]
[ -db ] [ -dbl_align_all=y ] [ -depend ] [ -dryrun ]
[ -d[y|n] ] [ -e ] [ -erroff=taglist ]
[ -errtags ] [ -explicitpar ] [ -ext_names=e ]
[ -F ] [ -f ] [ -fast ] [ -fixed ] [ -flags ]
[ -fnonstd ] [ -fns=yes|no ] [ -fpover=yes|no ]
[ -fpp ] [ -free ] [ -fround=r ] [ -fsimple ]
[ -ftrap=t ] [ -G ] [ -g ] [ -hnm ] [ -help ] [ -Idir ]
[ -inline=rl ] [ -Kpic ] [ -KPIC ]
[ -Ldir ] [ -libmil ] [ -loopinfo ] [ -M dir ]
[ -mp=x ] [ -mt ] [ -native ] [ -noautopar ]
[ -nodepend ] [ -noexplicitpar ]
[ -nolib ] [ -nolibmil ] [ -noqueue ] [ -noreduction ]
[ -norunpath ] [ -O[n] ] [ -o nm ]
[ -onetrip ] [ -openmp ] [ -p ] [ -pad[=p] ]
[ -parallel] [ -pg ] [ -pic ] [ -PIC ]
[ -Qoption pr ls ] [ -qp ] [ -R ls ] [ -r8const ]
[ -reduction ] [ -S ] [ -s ] [ -sb ] [ -sbfast ]
[ -silent ] [ -stackvar ] [ -stop_status=yes|no ]
[ -temp=dir ] [ -time ] [ -U ] [ -u ] [ -unroll=n ]
[ -V ] [ -v ] [ -vpara ] [ -w ]
[ -xa ] [ -xarch=a ] [ -xautopar ] [ -xcache=c ]
[ -xcg89 ] [ -xcg92 ] [ -xchip=c ]
[ -xcode=v ] [ -xcommonchk=yes|no ]
[ -xcrossfile=n ] [ -xdepend ] [ -xexplicitpar ]
[ -xF ] [ -xhelp=h ] [ -xia[=i] ] [ -xildoff ]
[ -xildon ] [ -xinline=rl ] [ -xinterval=i ]
[ -xlibmil ] [ -xlibmopt ] [ -xlicinfo ]
[ -xlic_lib=sunperf ]
[ -Xlist ] [ -xloopinfo ] [ -xmaxopt[=n] ]
[ -xmemalign[=ab] ] [ -xnolib ] [ -xnolibmil ]
[ -xnolibmopt ] [ -xO[n] ] [ -xpad ]
[ -xparallel ] [ -xpg ]
[ -xpp=p ] [ -xprefetch=yes|no ] [ -xprofile=p ]
[ -xrecursive ] [ -xreduction ] [ -xregs=r ] [ -xs ]
[ -xsafe=mem ]
[ -xsb ] [ -xsbfast ] [ -xspace ] [ -xtarget=t ]
[ -xtime ] [ -xtypemap=spec ] [ -xunroll=n ]
[ -xvector=yes|no ] [ -Zlp ] [ -z X ] [ -ztext ]
source file(s) ... [ -lx ]
DESCRIPTION
Sun WorkShop(TM) 6 Fortran 95
See the online READMEs/fortran_95 file (viewable by running
f95 -xhelp=readme) for current platforms and environments
and latest information on new or changed features.
Purpose: Translate Fortran source files into an executable
(a.out) file
Other uses of the compiler:
o Make an executable for multiple processors, -parallel
o Do global checking of the source program, -Xlist
o Transform source to relocatable binary (.o) files, -c
o Transform source to a dynamic library (.so) file, -G
o Prepare for debugging, -g
o Prepare for profiling by statement or procedure, -pg
o Link .o files into an executable file
o Relink only the changed files, -xildon
The Incremental Link Editor, ild, is sometimes used in
place of the standard linker, ld, for faster development.
See -xildon and -xildoff for more information.
Note: A man page, by definition, is a quick reference, not
a complete reference. See the list of Sun documentation at
the end of this man page.
COMPILING FOR 64-BIT SOLARIS ENVIRONMENTS:
This version of the compiler can produce 64-bit object
binaries on 32-bit or 64-bit Solaris 7 or 8 SPARC Platform
Editions. The resulting executable will run only on 64-bit
SPARC or UltraSPARC processors under Solaris 7 or 8 with the
64-bit kernel. Compilation, linking, and execution of 64-
bit objects can only take place in a Solaris 7 and 8
environment.
Compiling for a 64-bit Solaris environment is indicated by
the -xarch=v9, v9a, or v9b options. Note that one of these
options must be specified even if -xtarget or -fast are also
specified. In such a case, the -xarch= option must appear
AFTER any -xtarget or other option that sets -xarch. For
example:
-xtarget=ultra -xarch=v9
Note that -xtarget=ultra and -xtarget=ultra2 imply -xarch=v8
and do not automatically cause 64-bit compilations.
When building shared dynamic libraries with -xarch=v9 or v9a
in a 64-bit Solaris environment, the -pic or -PIC option
MUST be specified.
See also the new -xcode=abs32|abs44|abs64|pic13|pic32 option
for specifying code address sizes.
64-bit Solaris operating environments not only enable 64-bit
integer and pointer data, but also support for large files
and large arrays. For more details on compiling for 64-bit
Solaris operating environments, see the README file:
/SUNWspro/READMEs/64bit_Compilers
(where is usually /opt in a standard
install.)
For general information on 64-bit Solaris for software
developers, see the "Solaris 7 64-bit Developer's Guide" on
AnswerBook2 and at http://docs.sun.com/
FILE SUFFIXES
.f90 .f95
File names ending in .f95 or .f90 are assumed to be
Fortran 95 free format source files.
.f .for
Files with names ending in .f or .for are taken to be
fixed format Fortran 95 or Fortran 77 source files.
.F Fixed format Fortran 77 or Fortran 95 source containing
preprocessor directives. These files are preprocessed
by the Fortran preprocessor fpp before they are com-
piled. (See also the -xpp= option.)
.F90 .F95
Files ending in .F95 or .F90 are assumed to be free
format Fortran 95 source containing preprocessor direc-
tives. These files are preprocessed by the Fortran
preprocessor fpp before they are compiled. (See also
the -xpp= option.)
.s Files with names ending in .s are taken to be assembly
source files and are assembled, producing .o files.
.il Files with names ending in .il are taken to be inline
expansion code template files. The compiler uses these
to expand inline calls to selected routines. The com-
piler, not the linker, does this, so to get inline
expansion, be sure to include these .il files in the
compile command.
.o Files ending in .o are object files that are passed to
the linker.
.so Files ending in .so are shared object files or
libraries that are passed to the linker.
.a Files ending in .a are libraries passed on to the
linker.
OPTIONS
For details, check the Fortran User's Guide. See ld(1) for
link-time options.
f95 compiles "silently". Except for error and warning mes-
sages, it does not issue "progress" messages during compila-
tion.
In general, processing of the compiler options is from left
to right, so selective overriding of macro options can be
done. This rule does not apply to linker or preprocessor
options.
-a Profile by basic block for tcov.
Count how often each basic block is executed. Run
tcov(1) on the source file to generate statistics about
the program.
For separate compile and link steps, if you compile
with -a, then link with -a. You can mix -a with -O.
When the program is run, a .d file is created for every
.f file compiled that accumulates execution data for
the corresponding source file. Invoking tcov after run-
ning the program generates summary output on file.tcov
for each source file.
If set at compile-time, the TCOVDIR environment vari-
able specifies the directory where the .d and .tcov
files are located. If this variable is not set, these
file will be created in the same directory as the
source files.
This is the old style of basic block profiling for
tcov. See -xprofile=p.
-aligncommon[=1|2|4|8|16]
Specify alignment of data in common block.
The value specified indicates the desired alignment
size (in bytes) of data elements within common blocks.
For example, -aligncommon=4 would indicate that all
common block data elements of size 4 bytes or larger
will be aligned on 4-byte boundaries. Data in common
smaller than the specified size are not affected by
this option and are aligned on their respective natural
boundaries.
The default, when -aligncommon is not specified, is to
align common block data on at most 4-byte boundaries.
Specifying -aligncommon without a value defaults to 1
on all platforms: all data aligns on byte boundaries
(no padding between elements).
See also -xmemalign
-ansi
Identify non-standard extensions found in the source
files being compiled.
-autopar
Enable automatic loop parallelization
Parallelization features require a Sun WorkShop HPC
license.
Find and parallelize appropriate loops. Do dependency
analysis (analyze loops for data dependencies). Do loop
restructuring. If optimization is not -O3 or higher,
it is raised to -O3.
To improve performance, also specify the -stackvar
option when using any of the parallelization options,
including -autopar.
Avoid -autopar if you do your own thread management.
See note under -mt.
Also, -autopar is inappropriate on a single-processor
system, and will degrade performance.
For more information, see the Parallelization chapter
in the Fortran Progammer's Guide.
Number of Threads: To run a parallelized program in a
multithreaded environment, you must set the PARALLEL or
OMP_NUM_THREADS envrionment variables prior to execu-
tion. This tells the runtime system the maximum number
of threads the program can create. The default is 1.
In general, set PARALLEL or OMP_NUM_THREADS to the
available number of processors on the target platform.
If -autopar is specified but -explicitpar is not, then
explicit parallelization directives are ignored.
If you use -autopar and compile and link in one step,
linking will automatically include the microtasking
library and the threads-safe FORTRAN runtime library.
If you use -autopar and compile and link in separate
steps, then you must link with f95 -autopar as well.
-Bx Prefer dynamic or require static library linking.
Indicates that either dynamic library linking is pre-
ferred, or static linking required for any libraries
listed later in the command. x must be dynamic or
static. The default is dynamic. This is a linker
option.
-Bdynamic: Prefer dynamic linking (shared libraries)
-Bstatic : Require static linking (no shared
libraries)
If you specify static but the linker finds only a
dynamic library, then the library is not linked and a
warning issued.
However, if you specify dynamic but the linker finds
only a static version, that library is linked with no
warning.
You can toggle between -Bdynamic and -Bstatic on the
command line, linking some libraries statically and
others dynamically.
These are linker options. Compiling with -Bx requires
the same options on a linker command if done in
separate steps.
In a 64-bit environment, many system libraries are
available only as shared dynamic libraries. These
include libm.so and libc.so (libm.a and libc.a are not
provided). As a result, -Bstatic and -dn may cause
linking errors in 64-bit Solaris environments. Applica-
tions must link with the dynamic libraries in these
cases.
-C Check array references for out of range subscripts.
Subscripting arrays beyond their declared sizes may
result in unexpected results, including segmentation
faults. The -C option checks for possible array sub-
script violations in the source code and during execu-
tion.
With the -C option specified, run-time array subscript
violations are treated as an error. The compiler will
also flag array subscript range violations in the
source code as warnings.
This option will increase the size of the executable
file and degrade execution performance. It should only
be used while debugging.
-c Compile only, do not make executable file.
Compile and produce a .o file for each source file but
suppress linking by the loader. You can name a single
object file explicitly using the -o option.
-cg89
Generate code for generic SPARC architecture (Obsolete)
This option is a macro for:
-xarch=v7 -xchip=old -xcache=64/32/1
and is equivalent to: -xtarget=ss2
-cg92
Generate code for SPARC V8 architecture (Obsolete)
This option is a macro for:
-xarch=v8 -xchip=super -xcache=16/32/4:1024/32/1.
and is equivalent to: -xtarget=ss1000
-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 suffix files only.
The following values are predefined on appropriate sys-
tems; note the two leading underscores:
__sparc, __sparcv9, __unix, __sun, __SVR4,
__SunOS_5_6, __SunOS_5_7, __SunOS_5_8
They can be in such preprocessor conditionals as
#ifdef __sparc
Corresponding older values (prior releases) are:
sparc, unix, sun,
These earlier predefined values may be deleted in a
future release.
f95 uses the fpp(1) preprocessor by default. Like the C
preprocessor cpp(1), fpp expands source code macros and
enables conditional compilation of code. Unlike cpp,
fpp understand Fortran syntax, and is preferred as a
Fortran preprocessor. Use the -xpp=cpp flag to force
the compiler to specifically use cpp rather than fpp.
-dalign
Align COMMON block data and generate faster multi-word
load/stores.
This flag changes the data layout in COMMON blocks (and
EQUIVALENCE classes), and enables the compiler to gen-
erate faster multi-word load/stores for that data.
-dalign is a macro equivalent to
-xmemalign=8s -aligncommon=8
The data layout effect is that of the -f flag: double-
and quad-precision data in COMMON blocks and
EQUIVALENCE classes are laid out in memory along their
"natural" alignment, which is on 8-byte boundaries (or
16-byte boundaries for quad-precision when compiling
for 64-bit platforms with -xarch=v9, v9a, or v9b.) The
default alignment in COMMON blocks is on 4-byte boun-
daries.
Using -dalign along with
-xtypemap=real:64,double:64,integer:64 or -dbl also
causes 64-bit integer variables to be double-word
aligned.
Using -dalign, may result in non-standard FORTRAN
alignment which could cause problems with variables in
EQUIVALENCE or COMMON and may render the program non-
portable if -dalign is required.
If you compile one subprogram or file with -dalign,
then all subprograms and files in the program unit must
be compiled with -dalign.
-db Generate optional CIF file.
Generates an optional compiler information file (CIF)
with the extension .T This file is sometimes needed by
the Sun WorkShop Source Browser. The CIF file is gen-
erated automatically when -Xlist options are used. The
-db option can be used to regenerate the CIF file
without -Xlist.
-dbl_align_all=yes|no
Force alignment of all data on 8-byte boundaries.
If yes all variables will be aligned on 8-byte boun-
daries. Default is -dbl_align_all=no. By itself,
-dbl_align_all is equivalent to -dbl_align_all=yes.
When compiling for 64-bit environments with -xarch=v9
or v9a, this flag will align quad-precision data on
16-byte boundaries.
This flag does not alter the layout of data in COMMON
blocks or user-defined structures.
If used, all routines must be compiled with this
option.
-depend
Analyze loops for data dependencies
Analyze loops for data dependencies and do loop res-
tructuring. Data dependency analysis is included as
part of -fast, -parallel and -autopar. -depend will
raise the optimization level to -O3 if not specified or
is less than -O3.
-dryrun
Show commands built by the f95 driver but do not com-
pile.
Useful when debugging, this option displays the com-
mands the comiler will run to perform the compilation.
-d[y|n]
Allow/disallow dynamic libraries for executable
Allow or disallow dynamic libraries for the entire exe-
cutable. This flag is a linker option.
The default is -dy.
-dy: Allow dynamic libraries.
-dn: Do not allow dynamic libraries.
Unlike -B[dynamic|static], this option applies to the
whole executable and need appear only once on the com-
mand line.
-d[y|n] are linker options. If you compile and link in
separate steps with these options, then you need the
same option in the final link step.
In a 64-bit environment, many system libraries are
available only as shared dynamic libraries. These
include libm.so and libc.so (libm.a and libc.a are not
provided). As a result, -Bstatic and -dn may cause
linking errors in 64-bit Solaris environments. Applica-
tions must link with the dynamic libraries in these
cases.
-e Extend source line maximum length to 132 characters.
The compiler pads on the right with trailing blanks to
column 132. If you use continuation lines while com-
piling with -e, then do not split character constants
across lines, otherwise unnecessary blanks may be
inserted in the constants.
-erroff=taglist
Supress warning messages listed by tag name.
The taglist specifies a list of comma-separated tag
names that appear with warning messages. If the list
consists of %all all warnings are suppressed (this is
equivalent to the -w option.) (See also -errtags.)
-errtags
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.
-explicitpar
Enable parallelization of loops or regions explicitly
marked with directives
Parallelization features require a Sun WorkShop HPC
license.
The compiler will generate parallel code even if there
are data dependencies in the DO loop that would cause
the loop to generate incorrect results when run in
parallel. With explicit parallelization, it is the
user's responsibility to correctly analyze loops for
data dependency problems before marking them with
parallelization directives.
This option enables Sun, Cray, and/or OpenMP explicit
parallelization directives. DO loops immediately pre-
ceded by parallelization directives will have threaded
code generated for them. Parallelization is only
appropriate on multiprocessor systems. This option
should not be used to compile programs that already do
their own multithreading with calls to the libthread
library.
Number of Threads: To run a parallelized program in a
multithreaded environment, you must set the PARALLEL or
OMP_NUM_THREADS envrionment variables prior to
execution. This tells the runtime system the maximum
number of threads the program can create. The default
is 1. In general, set PARALLEL or OMP_NUM_THREADS to
the available number of processors on the target plat-
form.
If you use -explicitpar and compile and link in one
step, then linking automatically includes the micro-
tasking library and the threads-safe FORTRAN runtime
library. If you use -explicitpar and compile and link
in separate steps, then link with -explicitpar.
See also the discussion of -autopar.
To improve performance, also specify the -stackvar
option when using any of the parallelization options,
including -explicitpar.
Use the -mp= option to select the style of paralleliza-
tion directives enabled: Sun, Cray, or OpenMP.
If the optimization level is not -O3 or higher, it is
raised to -O3 automatically.
For details, see the Parallelization chapter in the
Fortran Programming Guide.
-ext_names=e
Create external names with or without underscores.
e must be either plain or underscores. The default is
underscores.
plain: Do not use trailing underscores.
underscores: Use trailing underscores.
An external name is a name of a subroutine, function,
block data subprogram, or labeled common. This option
affects both the name in the routine itself and, of
course, the name used in the calling statement (both
symdefs and symrefs).
-F Invoke the source file preprocessor, but do not compile
Apply the fpp preprocessor to .F90 and .F files and put
the result in the file with the suffix changed to .for
.f95, but do not compile.
fpp is the default preprocessor for Fortran. The C
preprocessor, cpp, can be selected instead by specify-
ing -xpp=cpp.
-f Align double- and quad-precision data in COMMON blocks.
This flag changes the data layout in COMMON blocks (and
EQUIVALENCE classes): double- and quad-precision data
in COMMON blocks and EQUIVALENCE classes are laid out
in memory along their "natural" alignment, which is on
8-byte boundaries (or on 16-byte boundaries for quad-
precision when compiling for 64-bit environments with
-xarch=v9, v9a, or v9b). The default alignment of data
in COMMON blocks is on 4-byte boundaries.
This option applies to both real and complex data.
Resulting code may not be standard and may not be port-
able.
If you compile one subprogram with -f, compile all sub-
programs of the program with -f.
By itself, this option does not enable the compiler to
generate faster double word fetch/store instructions
ond double and quad precision data. Only -dalign will
do this.
-fast
Optimize for speed of execution using a selection of
options.
Select the combination of options that optimizes for
speed of execution without excessive compilation time.
This option provides close to the maximum performance
for many realistic applications.
-fast sets the following options:
o The -xtarget=native hardware target.
If the program is intended to run on a different tar-
get than the compilation machine, follow the -fast
with the appropriate -xtarget= option. For example:
f95 -fast -xtarget=ultra ...
o The -O5 optimization level.
o The -libmil option to inline certain math library
routines.
o The -fsimple=2 option to optimize floating-point
operations.
o The -dalign option to allow generation of faster dou-
ble word load/store instructions.
o The -xlibmopt option to link the optimized math
library.
o The -depend option to better optimize DO loops.
o The -fns option for possibly faster handling of
underflow.
o The -ftrap=common option to set trapping on common
floating-point exceptions (this is the default for
f95).
o The -f option to align double and quad data in COM-
MON.
o The -pad=common option to improve use of cache.
o The -xvector=yes option to enable use of the vector-
ized math library.
Note that this option is a particular selection of
other options that is subject to change from one
release of the compiler to another, and between com-
pilers. For details on the options set by -fast, see
the Fortran User's Guide.
Do not use this option with programs that depend on
IEEE standard exception handling; you can get different
numerical results, premature program termination, or
unexpected SIGFPE signals.
For separate compile and link steps: if you compile
with -fast, then be sure to link with -fast.
-fixed
Assume fixed-format source input.
Interpret all source files as Fortran 95 fixed-format.
Overrides the file suffix.
-flags
Synonym for -help.
-fnonstd
Initialize floating-point hardware to non-standard
preferences
This option is a synonym 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
See -fns for a information on underflow and handling of
denormalized numbers.
The -fnonstd option enables hardware traps for
floating-point overflow, division by zero, and invalid
operation exceptions. These are converted into SIGFPE
signals, and if the program has no SIGFPE handler, it
aborts. See ieee_handler(3m), ieee_functions(3m), the
Numerical Computation Guide, and Fortran Programming
Guide for more information.
-fns[={no|yes}]
Select SPARC nonstandard floating point
Select the SPARC nonstandard floating-point mode. The
default, -fns=no, is SPARC standard floating-point
mode.
Optional use of =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 floating-point.
-fns=no selects standard floating-point.
On some SPARC systems, the nonstandard floating point
mode disables "gradual underflow", causing tiny results
to be flushed to zero rather than producing subnormal
numbers. It also causes subnormal operands to be
silently replaced by zero. On those SPARC systems that
do not support gradual underflow and subnormal numbers
in hardware, use of this option can significantly
improve the performance of some programs.
Warning: When nonstandard mode is enabled, floating
point arithmetic may produce results that do not con-
form to the requirements of the IEEE 754 standard. See
the Numerical Computation Guide and the Fortran User's
Guide for more information.
This option is effective only if used when compiling
the main program.
-fpover[={yes|no}]
Detect floating-point overflow in formatted input.
With -fpover=yes specified, the I/O library will detect
floating-point overflows in formatted input and return
error condition 1031. The default is no such overflow
detection (-fpover=no). -fpover is equivalent to
-fpover=yes.
-fpp Force preprocessing of input files with fpp.
Pass all the input source files listed on the command
line through the fpp preprocessor, regardless of file
extension. (Files with .F90, .F95, .F extension are
automatically preprocessed by fpp. See also -xpp.)
-free
Assume free-format source input.
Interpret all source files as Fortran 95 free-format.
Overrides the file suffix.
-fround=r
Select the IEEE rounding mode in effect at startup.
r must be one of:
nearest, tozero, negative, positive.
The default is -fround=nearest.
When r is "tozero", "negative", or "positive", this
flag causes the rounding direction mode to be set to
round-to-zero, round-to-negative-infinity, or round-
to-positive-infinity respectively when a program begins
execution. When r is "nearest" or the -fround flag is
not used, the rounding direction mode is not altered
from its initial value (round-to-nearest by default).
This option is effective only if used when compiling
the main program.
-fsimple[=n]
Select floating-point optimization preferences
Allow the optimizer to make simplifying assumptions
concerning floating-point arithmetic.
If n is present, it must be 0, 1, or 2.
The defaults are:
With no -fsimple, f95 uses -fsimple=0
With only -fsimple, f95 uses -fsimple=1
-fsimple=0
Permit no simplifying assumptions. Preserve strict
IEEE 754 conformance.
-fsimple=1
Allow conservative simplifications. The resulting
code does not strictly conform to IEEE 754, but
numeric results of most programs are unchanged.
With -fsimple=1, the optimizer can assume the fol-
lowing:
IEEE 754 default rounding/trapping modes do not
change after process initialization.
Computations producing no visible result other
than potential floating point exceptions may be
deleted.
Computations with Infinity or NaNs as operands
need not propagate NaNs to their results; e.g.,
x*0 may be replaced by 0.
Computations do not depend on sign of zero.
With -fsimple=1, the optimizer is not allowed to
optimize completely without regard to roundoff or
exceptions. In particular, a floating-point computa-
tion cannot be replaced by one that produces dif-
ferent results with rounding modes held constant at
run time.
-fsimple=2
Permit aggressive floating-point optimizations that
may cause many programs to produce different numeric
results due to changes in rounding.
For example, -fsimple=2 will permit the optimizer to
attempt replacing computations of x/y with x*z,
where z=1/y is computed once and saved in a tem-
porary, thereby eliminating costly divide opera-
tions.
Even with -fsimple=2, the optimizer still is not
permitted to introduce a floating-point exception in
a program that otherwise produces none.
-fast sets -fsimple=2.
-ftrap=t
Set floating-point trapping mode
This option sets the IEEE floating-point trapping that
is in effect at startup.
t is a comma-separated list that consists of one or
more of the following:
%all, %none, common, [no%]invalid, [no%]overflow,
[no%]underflow, [no%]division, [no%]inexact.
The f95 default is -ftrap=common. (Note that the
default with f77 is -ftrap=%none.)
This option sets the IEEE 754 trapping modes that are
established at program initialization. Processing is
left-to-right. The common exceptions, by definition,
are invalid, division by zero, and overflow. For exam-
ple:
-ftrap=overflow.
Example: Set all traps, except inexact.
-ftrap=%all,no%inexact
The meanings are the same as for the ieee_flags func-
tion, except that:
o %all turns on all the trapping modes, and will cause
trapping of spurious and expected exceptions. Use
common instead.
o %none, the default, turns off all trapping modes.
o A no% prefix turns off that specific trapping mode.
To be effective this option must be used when compiling
the main program.
-G Build a dynamic shared library
Direct the linker to make a shared dynamic library.
Without -G the linker builds an executable file. With
-G it builds a dynamic library (but no executable).
Use -o with -G to specify the name of the file to be
written.
-g Compile for debugging.
Produce additional symbol table information for dbx(1)
or the Sun WorkShop debugging utility.
The -g option makes -xildon the default incremental
linker option (see -xildon). That is, with -g, the
compiler default behavior is to automatically invoke
ild in place of ld, unless the -G option is present, or
any source file is named on the command line.
-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 -hnm is a linker option.
o The names after -h and -o are usually the same.
o -hnm facilitates versions for dynamic libraries.
See the Solaris Linker and Libraries Guide.
-help
List the f95 command-line options.
See also -xhelp.
-Idir
Add dir to the include file search path.
Insert directory dir at the start of the include file
search path. No space is allowed between -I and dir.
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
Of course, to invoke the preprocessor, you must use a
.F suffix; and the f95 compiler INCLUDE statement
allows the .f or .F suffix.
The -Idir search path is used while searching for rela-
tive path names, not absolute path names. The search
order for relative path names is:
1. The directory containing the source file
2. Directories named in -I options
3. Directories in the default list of the compiler
The default list depends on installation:
Standard install is to /opt:
/opt/SUNWspro//include/f95 /usr/include
where changes with each release of the com-
pilers.
-inline=rl
Request inlining of the specified user-written rou-
tines.
Optimize by inlining the specified user-written rou-
tines named in the list rl. The list is a comma-
separated list of functions and subroutines.
The rl list may include the string %auto to enable
automatic inlining at optimization levels -O4 or
higher, which 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 disa-
bling inlining of a specific routine (gflub), use:
-O5 -inline=%auto,no%gflub
Only routines in the file being compiled are con-
sidered. The optimizer decides which of these routines
are appropriate for inlining.
A routine is not inlined if any of the following condi-
tions apply, with no warnings:
o Optimization is less than -O3
o The routine cannot be found.
o Inlining it is not profitable or safe.
o The source is not in the file being compiled. But, see
-xcrossfile.
-Kpic
Synonym for -pic
-KPIC
Synonym for -PIC
-Ldir
Add dir to list of directories to search for libraries.
dir is added to the start of the search list. A space
between -L and dir is optional.
Note: Do not use the -Ldir 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
Order on the Command Line: Place -lx options after any
.f, .F, or .o files. If you call functions in libx, and
they reference functions in liby, then place -lx before
-ly.
Search Order for -lx files: 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 optimi-
zation.
Some of the simpler library routines can be inlined by
the compiler. This option inlines library calls depend-
ing on the floating-point options and platform curently
being used.
-loopinfo
Show which loops are parallelized
Show which loops are parallelized and which are not.
This option is normally for use with the
-autopar and -explicitpar options. It requires a Sun
WorkShop license and generates a list of messages on
standard error.
-Mpath
Specify Module directory.
Look in the directory specified by path for Fortran 95
modules referenced in the current compilation. This
path is searched in addition to the current directory.
By default, without this option, only the current
directory is searched for referenced module files.
(There is no space between the -M and the path. For
example, -M/home/siri/PK15/Modules
-mp=[%none|sun|cray|openmp]
Specify the style for parallelization directives
The default is sun.
sun: Accept Sun-style MP directives.
cray: Accept Cray-style MP directives.
openmp: Accept OpenMP directives
%none: Ignore all parallelization directives.
Sun-style parallelization directives start with C$PAR
or !$PAR. Cray-style parallelization directives start
with CMIC$ or !MIC$. Either style can appear in upper-
case or lowercase.
OpenMP directives start with C$OMP, !$OMP, *$OMP, in
fixed format, or !$OMP in free format.
You can combine OpenMP directives with either Cray or
Sun style directives in the same compilation unit. But
both Sun and Cray style directives cannot both be
active in the same compilation unit. For example:
-mp=sun,openmp and
-mp=cray,openmp are permitted, but NOT
-mp=sun,cray
You must also specify -explicitpar to have these direc-
tives enable parallelization. Also, -stackvar should be
specified with parallelization. For example:
-explicitpar -stackvar -mp=openmp
-mt Use multithread safe libraries
If you are doing your own multithread coding and not
using -autopar, -explicitpar, or -parallel, then you
must use the -mt option in the compile and link steps.
The parallelization options use -mt automatically.
On a single-processor system, the generated code usu-
ally runs more slowly with this option.
-native
Optimize for the host system.
The -native option is a synonym for the -xtarget=native
option.
-noautopar
Cancel -autopar on the command line.
Cancel automatic parallelization of loops invoked by
-autopar on the command line. (Parallelization options
require a Sun WorkShop license.)
-nodepend
Cancel -depend in command line
Cancel dependency analysis invoked by a -depend option
appearing earlier in the command line.
-noexplicitpar
Cancel -explicitpar
Cancel explicit parallelization of loops invoked by
-explicitpar earlier on the command line. (Paralleliza-
tion options require a Sun WorkShop license.)
-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 exe-
cutables 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 statically.
-nolibmil
Cancel -libmil on command line
Use with -fast to disable inlining of libm math rou-
tines:
demo% f95 -fast -nolibmil ...
-noqueue
Disable license queueing.
With this option, if no license is available, the com-
piler returns without queuing your request and without
performing any compilation. A nonzero status is
returned for testing in makefiles.
-noreduction
Cancel -reduction on command line
-reduction is used along with parallelization options.
This option cancels a -reduction appearing earlier on
the command line. (Parallelization options require a
Sun WorkShop license.)
-norunpath
Do not build a runtime library search path into the
executable
If an executable file uses shared libraries, then the
compiler normally builds in a path that tells the run-
time linker where to find those shared libraries. The
path depends on the directory where you installed the
compiler. The -norunpath option prevents that path from
being built into the executable.
This option is helpful when libraries have been
installed in some nonstandard location, and you do not
wish to make the loader search down those paths when
the executable is run at another site. Compare with
-R.
-O[n]
Specify optimizaion level
If -O[n] is not specified, only a very basic level of
optimization limited to local common subexpression
elimination and dead code analysis is performed. A
program's performance may be significanly improved when
compiled with an optimization level than without optim-
ization. Use of -O (which implies -O3) or -fast (which
implies -O5) is recommended for most programs.
Each -On level includes the optimizations performed at
the levels below it. Generally, the higher the level of
optimization a program is compiled with, the better
runtime performance obtained. However, higher optimiza-
tion levels may result in increased compilation time
and larger executable files.
The -g option can be used with optimization, -O[n], and
allows limited debugging.
If the optimizer runs out of memory, it attempts to
proceed over again at a lower level of optimization,
resuming compilation of subsequent routines at the ori-
ginal level.
For details on optimization, see the Fortran Program-
ming Guide chapters Performance Profiling, and Perfor-
mance and Optimization.
-O Optimize at the level most likely to give close to
the maximum performance for many realistic appli-
cations (currently -O3).
-O1 Do only the minimum amount of optimization
(peephole).
-O2 Do basic local and global optimization. This level
usually gives minimum code size. -O3 is preferred
over -O2 unless -O3 results in excessive compila-
tion time, running out of swap space, or exces-
sively large code size.
-O3 Adds global optimizations at the function level.
Usually generates larger executable files.
-O4 Adds automatic inlining of functions in the same
file. -g suppresses automatic inlining. In gen-
eral, -O4 results in larger code.
-O5 Attempt aggressive optimizations
Suitable only for that small fraction of a program
that uses the largest fraction of compute time.
-O5's optimization algorithms take more compila-
tion time, and may also degrade performance when
applied to too large a fraction of the source pro-
gram.
Optimization at this level is more likely to
improve performance if it is done with profile
feedback. See -xprofile=p.
-o nm
Specify the name of the executable file to be written
There must be a blank between -o and nm. Without this
option, the default is to write the executable to
a.out. When used with -c, -o specifies the target .o
object file; with -G it specifies the target .so
library file.
-onetrip
Enable one-trip DO loops.
Compile DO loops so they are performed at least once if
reached.
f95 FORTRAN DO loops are not performed at all if the
upper limit is smaller than the lower limit, unlike
some legacy implementations of Fortran.
-openmp
Enable explicit parallelization with Fortran 95 OpenMP
directives.
This option is a macro for the combination of options:
-mp=openmp -explicitpar -stackvar -D_OPENMP
The Fortran 95 OpenMP directives are described in the
Fortran User's Guide.
To run a parallelized program in a multithreaded
environment, you must set the PARALLEL or
OMP_NUM_THREADS envrionment variables prior to execu-
tion. This tells the runtime system the maximum number
of threads the program can create. The default is 1.
In general, set PARALLEL or OMP_NUM_THREADS to the
available number of processors on the target platform.
Fortran parallelization features require a Sun WorkShop
HPC license.
-p 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 procedure and the percent of time used
by each procedure.
For separate compile and link steps, if you compile
with -p, then be sure to link with -p.
-pad[=p]
Insert padding for efficient use of cache.
This option inserts padding between arrays or character
strings if they are:
o Static local and not initialized, or
o In common blocks
For either one, the arrays or character strings can not
be equivalenced.
If =p is present, it must be one of the following (no
spaces):
local: Pad local variables
common: Pad variables in common blocks
local,common: Both local and common padding is done
common,local: Both local and common padding is done
Defaults:
Without the -pad[=p] option, no padding.
With -pad, without =p, local and common padding.
The following are equivalent:
f95 -pad any.f
f95 -pad=local,common any.f
f95 -pad=common,local any.f
Restrictions on -pad=common:
o If -pad=common is specified for a file that refer-
ences a common block, it must be specified for all
files that reference that common block.
o With -pad=common specified, declarations of common
block variables in different program units must be
the same except for the names of the variables.
o Padding is dependent on the setting of -xcache.
All files must be compiled with the same -xcache
settings when -pad=common is used.
o EQUIVALENCE declarations involving common block
variables will cause warning messages that padding
has been inhibited by EQUIVALENCE when compiled
with -pad=common.
-parallel
Enable a combination of automatic and explicit paral-
lelization features.
This option is a macro for a combination of options:
-autopar -explicitpar -depend
Parallelization features require a Sun WorkShop HPC
license.
Parallelize loops chosen automatically by the compiler
and explicitly specified by user supplied directives.
Optimization level is automatically raised to -O3 if it
is lower.
To improve performance, also specify the -stackvar
option when using any of the parallelization options,
including -autopar.
Avoid -parallel if you do your own thread management.
See the discussion of -mt
Parallelization options like -parallel are intended to
produce executables programs to be run on multiproces-
sor systems. On a single-processor system, paralleliza-
tion generally degrades performance.
If you compile and link in separate steps, if -parallel
appears on the compile command it must also appear on
the link command.
See also the discussion of -autopar.
For more information, see the chapter on paralleliza-
tion in the Fortran Programming Guide.
Number of Threads: To run a parallelized program in a
multithreaded environment, you must set the PARALLEL or
OMP_NUM_THREADS envrionment variables prior to execu-
tion. This tells the runtime system the maximum number
of threads the program can create. The default is 1.
In general, set PARALLEL or OMP_NUM_THREADS to the
available number of processors on the target platform.
-pg Compile for profiling with gprof.
Prepare the object files for profiling with gprof(1).
This option makes profiles by procedure, showing the
number of calls to each procedure and the percent of
time used by each procedure.
This option also produces counting code in the manner
of -p, but invokes a runtime recording mechanism that
keeps more extensive statistics and produces a gmon.out
file at normal termination. You can then generate an
execution profile using gprof(1).
For separate compile and link steps, if you compile
with -pg, then link with -pg.
-pic Compile position-independent code for shared library.
This option is used to create dynamic shared libraries.
Each reference to a global datum is generated as a
dereference of a pointer in the global offset table.
Each function call is generated in program-counter-
relative addressing mode through a procedure linkage
table.
o The size of the global offset table is limited to 8Kb
on SPARC.
o Do not mix -pic and -PIC.
There are two nominal performance costs with -pic and
-PIC:
o A routine compiled with either -pic or -PIC exe-
cutes a few extra instructions upon entry to set
a register to point at the global offset table
used for accessing a shared library's global or
static variables.
o Each access to a global or static variable
involves an extra indirect memory reference
through the global offset table. If the compile
is done with -PIC, there are two additional
instructions per global and static memory refer-
ence.
When considering the above costs, remember that the use
of -pic and -PIC can significantly reduce system memory
requirements, due to the effect of library code shar-
ing. Every page of code in a shared library compiled
-pic or -PIC can be shared by every process that uses
the library. If a page of code in a shared library con-
tains even a single non-pic (that is, absolute) memory
reference, the page becomes nonsharable, and a copy of
the page must be created each time a program using the
library is executed.
The easiest way to tell whether or not a .o file has
been compiled with -pic or -PIC is with the nm command:
nm file.o | grep _GLOBAL_OFFSET_TABLE_
A .o file containing position-independent code will
contain an unresolved external reference to
_GLOBAL_OFFSET_TABLE_ as marked by the letter U.
To determine whether to use -pic or -PIC, use nm to
identify the number of distinct global and static vari-
ables used or defined in the library. If the size of
_GLOBAL_OFFSET_TABLE_ is under 8,192 bytes, you can use
-pic. Otherwise, you must use -PIC.
When building shared dynamic libraries with -xarch=v9
or v9a on 64-bit Solaris 7, the -pic or -PIC option (or
their -xcode equivalents -xcode=pic13 or -xcode=pic32)
MUST be specified.
See also -xcode.
-PIC Similar to -pic, with 32-bit addresses
This allows the global offset table to span the range
of 32-bit addresses. Use it for those rare cases with
too many global data objects for -pic.
Do not mix -pic with -PIC.
When building shared dynamic libraries with -xarch=v9
or v9a on 64-bit Solaris 7, the -pic or -PIC option (or
their -xcode equivalents -xcode=pic13 or -xcode=pic32)
MUST be specified.
See also -xcode.
-Qoption pr ls
Pass option list ls to the compilation phase pr.
This option is used primarily by customer service.
-qp Synonym for -p.
-Rlist
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:
/opt/SUNWspro/lib for standard installs
installpath/lib for custom installs
-r8const
Promote single-precision constants to REAL*8 constants.
All single precision literal constants are promoted to
REAL*8. Double-precision constants (REAL*8) are not
promoted.
This flag applies only to constants. Use -xtypemap to
promote both constants and variables.
-reduction
Parallelize reduction operations in loops
Analyze loops for reduction in automatic paralleliza-
tion. To enable parallelization of reduction loops,
specify both -reduction and -autopar.
A loop that transforms the elements of an array into a
single scalar value is called a reduction operation.
For example, summing the elements of a vector is a typ-
ical reduction operation. Although these operations
violate the criteria for parallelizability, the com-
piler can recognize them and parallelize them as spe-
cial cases when -reduction is specified. See the For-
tran Programming Guide chapter Parallelization for
information on reduction operations recognized by f95.
If you specify -reduction without -autopar, the com-
piler issues a warning.
On a single-processor system, the generated code usu-
ally runs more slowly.
Example: demo% f95 -autopar -reduction any.f
There is always potential for roundoff error with
reduction.
If you have a reduction loop to be parallelized, then
use -reduction (with -autopar, of course). Do not use
an explicit pragma, because the explicit pragma
prevents reduction for that loop, resulting in wrong
answers.
-S Compile and only generate assembly code.
Compile the named programs and leave the assembly
language output on corresponding files suffixed .s (no
.o file is created).
-s Strip the symbol table from the executable file.
This option makes the executable file smaller and more
difficult to reverse engineer. However, this option
prevents debugging.
-sb Produce table information for the Sun WorkShop Source
Browser.
Note: -sb cannot be used on source files the compiler
automatically passes through the fpp or cpp preproces-
sors; for example, source files with .F, .F90,or .F95
extensions, or used with the -F option.
-sbfast
Similar to -sb, but faster.
Produce only table information for the Sun WorkShop
Source Browser. Do not assemble, link, or make object
files. (See also the discussion of -sb and its use with
source code preprocessors.)
-silent
Supress compiler messages.
Normally, f95 does not issue messages, other than error
diagnostics, during compilation. This option is pro-
vided only for compatibility with the f77 compiler com-
mand line.
-stackvar
Force all local variables to be allocated on the stack.
Allocates all the local variables and arrays in
routinesonto the memory stack unless otherwise speci-
fied. This option makes these variables automatic
rather than static and provides more freedom to the
optimizer when parallelizing loops with calls to sub-
programs.
Use of -stackvar is recommended with any of the paral-
lelization options.
Variables and arrays are local, unless they are:
o Arguments in a SUBROUTINE or FUNCTION statement
(already on stack)
o Global items in a COMMON or SAVE, or STATIC
statement
o Initialized items in a type statement or a DATA
statement, such as:
REAL X/8.0/ or DATA X/8.0/
Putting large arrays onto the stack with -stackvar can
overflow the stack causing segmentation faults.
Increasing the stack size may be required.
The initial thread executing the program has a main
stack, while each helper thread of a multithreaded pro-
gram has its own thread stack.
The default stack size is about 8 Megabytes for the
main stack and 1 Megabyte (2 Megabytes on SPARC V9
platforms) for each thread stack. The limit command
(with no parameters) shows the current main stack size.
You can set the main stack size to 64 Megabytes, for
example, with the
% limit stacksize 65536
command. See the Fortran User's Guide.
-stop_status={yes|no}
Permit STOP statement to return an integer status
value.
The optional argument is either yes or no. The default
is yes.
With -stop_status=yes a STOP statement may contain an
integer constant that will be passed to the environment
as the program terminates. This value will be avail-
able as $status for the C shell or $? for the Bourne
and Korn shells.
The value on the STOP statement can be any positive
integer. The value returned to the shell will be
modulo 256 (in the range 0 to 255).
-temp=dir
Define directory for temporary files.
Set the directory for temporary files used by f95 to be
dir instead of the /tmp directory.
-time
Show execution time for each compilation phase.
-U Recognize upper and lower case in source files.
Do not treat uppercase letters as equivalent to lower-
case. The default is to treat uppercase as lowercase
except within character-string constants.
With this option, the compiler treats Delta, DELTA, and
delta as different symbols.
Portability and mixing Fortran with other languages may
require use of -U.
Calls to intrinsic functions, Fortran library func-
tions, and routines explicitly declared EXTERNAL are
not affected by this option.
-u Imply IMPLICIT NONE
Equivalent to specifying IMPLICIT NONE in each compila-
tion unit. This has the affect of making the default
type of variables undeclared 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 > 1, this option suggests to the optimizer that it
unroll loops n times.
If any loops are actually unrolled, then the executable
file is larger.
-V Show name and version of each compilation phase.
-v Verbose mode - show compilation details
Like -V but also show detail of options and environment
variables used by the driver.
-vpara
Show verbose parallelization messages
Parallelization options require a Sun WorkShop HPC
license.
As the compiler detects each explicitly parallelized
loop that has dependencies, it issues a warning message
but the loop is parallelized.
Use with -explictpar and a C$MIC DOALL parallel pragma.
Example: demo% f95 -explicitpar -vpara any.f
-w[0|1|2|3|4]
Show or suppress warning messages.
-w suppresses warning messages from the compiler.
-w0 shows just error messages.
-w1 shows errors and warnings. (This is the default.)
-w2 shows errors, warnings, and cautions.
-w3 shows errors, warnings, cautions, and notes.
-w4 shows errors, warnings, cautions, notes, and com-
ments.
If you specify two options, and the second one over-
rides all or part of the first one, the compiler issues
a warning.
-xa Synonym for -a.
-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.
Values (SPARC platforms):
Value Meaning
generic Compile for good performance on most 32-bit
architectures.
This is the default. This option uses the
best instruction set for good performance on
most 32-bit processors without major perfor-
mance degradation on any of them. With each
new release, the definition of "best"
instruction set may be adjusted, if appropri-
ate.
generic64 Compile for good performance on most 64-bit
architectures.
This option uses the best instruction set for
good performance on most 64-bit processors
without major performance degradation on any
of them. With each new release, the defini-
tion of "best" instruction set may be
adjusted, if appropriate.
native Compile for good performance on this system
(assuming a 32-bit architecture).
This is the default for the -fast option. The
compiler chooses the appropriate setting for
the current 32-bit system processor it is
running on.
native64 Compile for good performance on this system
(assuming a 64-bit architecture).
The compiler chooses the appropriate setting
for the current 64-bit system processor it is
running on.
v7 Compile for the SPARC-V7 ISA.
Enables the compiler to generate code for
good performance on the V7 ISA. This is
equivalent to using the best instruction set
for good performance on the V8 ISA, but with-
out integer mul and div instructions, and the
fsmuld instruction.
Examples: SPARCstation 1, SPARCstation 2
v8a Compile for the V8a version of the SPARC-V8
ISA.
By definition, V8a means the V8 ISA, but
without the fsmuld instruction. This option
enables the compiler to generate code for
good performance on the V8a ISA.
Example: Any system based on the microSPARC I
chip architecture
v8 Compile for the SPARC-V8 ISA.
Enables the compiler to generate code for
good performance on the V8 architecture.
Example: SPARCstation 10
v8plus Compile for the V8plus version of the SPARC-
V9 ISA.
By definition, V8plus means the V9 ISA, but
limited to the 32-bit subset defined by the
V8plus ISA specification, without the Visual
Instruction Set (VIS), and without other
implementation- specific ISA extensions.
This option enables the compiler to generate
code for good performance on the V8plus ISA.
The resulting object code is in SPARC-V8+
ELF32 format and only executes in a Solaris
UltraSPARC environment -- it does not run on
a V7 or V8 processor.
Example: Any system based on the UltraSPARC
chip architecture
v8plusa Compile for the V8plusa version of the
SPARC-V9 ISA.
By definition, V8plusa means the V8plus
architecture, plus the Visual Instruction Set
(VIS) version 1.0, and with UltraSPARC exten-
sions. This option enables the compiler to
generate code for good performance on the
UltraSPARC architecture, but limited to the
32-bit subset defined by the V8plus specifi-
cation. The resulting object code is in
SPARC-V8+ ELF32 format and only executes in a
Solaris UltraSPARC environment -- it does not
run on a V7 or V8 processor.
Example: Any system based on the UltraSPARC
chip architecture
v8plusb Compile for the V8plusb version of the
SPARC-V8plus ISA with UltraSPARC-III exten-
sions.
Enables the compiler to generate object code
for the UltraSPARC architecture, plus the
Visual Instruction Set (VIS) version 2.0, and
with UltraSPARC-III extensions. The resulting
object code is in SPARC-V8+ ELF32 format and
executes only in a Solaris UltraSPARC-III
environment. Compiling with this option uses
the best instruction set for good performance
on the UltraSPARC-III architecture.
v9 Compile for the SPARC-V9 ISA.
Enables the compiler to generate code for
good performance on the V9 SPARC architec-
ture. The resulting .o object files are in
ELF64 format and can only be linked with
other SPARC-V9 object files in the same for-
mat. The resulting executable can only be run
on an UltraSPARC processor running a 64-bit
enabled Solaris operating environment with
the 64-bit kernel.
-xarch=v9 is only available when compiling in
a 64-bit enabled Solaris environment.
v9a Compile for the SPARC-V9 ISA with UltraSPARC
extensions.
Adds to the SPARC-V9 ISA the Visual Instruc-
tion Set (VIS) and extensions specific to
UltraSPARC processors, and enables the com-
piler to generate code for good performance
on the V9 SPARC architecture. The resulting
.o object files are in ELF64 format and can
only be linked with other SPARC-V9 object
files in the same format. The resulting exe-
cutable can only be run on an UltraSPARC pro-
cessor running a 64-bit enabled Solaris
operating environment with the 64-bit kernel.
-xarch=v9a is only available when compiling
in a 64-bit enabled Solaris operating
environment.
v9b Compile for the SPARC-V9 ISA with
UltraSPARC-III extensions.
Adds UltraSPARC-III extensions and VIS ver-
sion 2.0 to the V9a version of the SPARC-V9
ISA. Compiling with this option uses the best
instruction set for good performance in a
Solaris UltraSPARC-III environment. The
resulting object code is in SPARC-V9 ELF64
format and can only be linked with other
SPARC-V9 object files in the same format. The
resulting executable can only be run on an
UltraSPARC-III processor running a 64-bit
enabled Solaris operating environment with
the 64-bit kernel.
-xarch=v9b is only available when compiling
in a 64-bit enabled Solaris operating
environment.
Notes:
o SPARC instruction set architectures V7, V8, and V8a
are all binary compatible.
o Object binary files (.o) compiled with v8plus and
v8plusa can be linked and can execute together, but
only on a SPARC V8plusa compatible platform.
o Object binary files (.o) compiled with v8plus,
v8plusa, and v8plusb can be linked and can execute
together, but only on a SPARC V8plusb compatible
platform.
o -xarch values v9, v9a, and v9b are only available on
UltraSPARC 64-bit Solaris environments.
o Object binary files (.o) compiled with v9 and v9a can
be linked and can execute together, but will run only
on a SPARC V9a compatible platform.
o Object binary files (.o) compiled with v9, v9a, and
v9b can be linked and can execute together, but will
run only on a SPARC V9b compatible platform.
For any particular choice, the generated executable
may run much more slowly on earlier architectures.
Also, although quad-precision (REAL*16 and long dou-
ble) floating-point instructions are available in
many of these instruction set architectures, the com-
piler does not use these instructions in the code it
generates.
Defaults:
If -xarch=isa is not specified, -xarch=generic is
assumed.
Interactions:
Although this option can be used alone, it is part of
the expansion of the -xtarget option and may be used
to override the -xarch value that is set by a
specific -xtarget option. For example,
-xtarget=ultra2 expands to -xarch=v8 -xchip=ultra2
-xcache=15/32/1:512/64/1. In the following command
-xarch=v8plusb overrides the -xarch=v8 that is set by
the expansion of -xtarget=ultra2.
example% f95 -xtarget=ultra2 -xarch=v8plusb ...
Warnings:
If this option is used with optimization, the
appropriate choice can provide good performance of
the executable on the specified architecture. An
inappropriate choice, however, might result in seri-
ous degradation of performance or in in a binary pro-
gram that is not executable on the intended target
platform.
-xautopar
Synonym for -autopar
-xcache=c
Define cache for optimizer
Define cache properties for use by optimizer.
c must be one of the following:
o generic
o native
o s1/l1/a1
o s1/l1/a1:s2/l2/a2
o s1/l1/a1:s2/l2/a2:s3/l3/a3
The si, li, and ai, 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
This option specifies the cache properties that the
optimizer can use. It does not guarantee that any par-
ticular cache property is used.
Although this option can be used alone, it is part of
the expansion of the -xtarget option; its primary use
is to override a value supplied by the -xtarget option.
The -xcache values are:
generic
Define the cache properties for good performance
on most SPARCs. This is the default.
native
Define the cache properties for good performance
on this host platform.
s1/l1/a1
Define level 1 cache properties.
s1/l1/a1:s2/l2/a2
Define levels 1 and 2 cache properties.
s1/l1/a1:s2/l2/a2:s3/l3/a3
Define levels 1, 2, and 3 cache properties.
-xcg89
Synonym for -cg89.
-xcg92
Synonym for -cg92.
-xchip=c
Specify target processor for optimizer.
Specify the target processor for use by the optimizer.
c must be one of the following, depending on platform.
On SPARC platforms: generic, generic64, native,
native64, old, super, super2, micro, micro2, hyper,
hyper2, powerup, ultra, ultra2, ultra2i, ultra3.
This option specifies timing properties by specifying
the target processor.
Although this option can be used alone, it is part of
the expansion of the -xtarget option; its primary use
is to override a value supplied by the -xtarget option.
Some effects are:
o The ordering of instructions, that is, scheduling
o The way the compiler uses branches
o The instructions to use in cases where semantically
equivalent alternatives are available
The -xchip values on SPARC are:
generic Optimize for good performance on most 32-bit
SPARC platforms.
generic64
Optimize for good performance on most 64-bit
SPARC platforms.
native Optimize for good performance on this 32-bit
host platform.
native64
Optimize for good performance on this 64-bit
host platform.
old Optimize for pre-SuperSPARC(TM) processors.
super Optimize for the SuperSPARC chip.
super2 Optimize for the SuperSPARC II(TM) chip.
micro Optimize for the MicroSPARC(TM) chip.
micro2 Optimize for the MicroSPARC II(TM) chip.
hyper Optimize for the HyperSPARC(TM) chip.
hyper2 Optimize for the HyperSPARC II(TM) chip.
powerup Optimize for the Weitek(R) PowerUp(TM) chip.
ultra Optimize for the UltraSPARC(TM) chip.
ultra2 Optimize for the UltraSPARC II(TM) chip.
ultra2i Optimize for the UltraSPARC IIi(TM) chip.
ultra3 Optimize for the UltraSPARC III(TM) chip.
For complete information, see the Fortran User's Guide
-xcode=v
Specify code address space
The following values for -xcode are:
abs32 Generate 32-bit absolute addresses.
Code + data + bss size is limited to 2**32
bytes. This is the default on 32-bit architec-
tures: arch=generic,v7,v8,v8a,v8plus,v8plusa
abs44 Generate 44-bit absolute addresses.
Code + data + bss size is limited to 2**44
bytes. Available only on 64-bit architectures:
-xarch=v9,v9a
abs64 Generate 64-bit absolute addresses.
Available only on 64-bit architectures:
-xarch=v9,v9a
pic13 Generate position-independent code (small
model).
Equivalent to -pic. Permits references to at
most 2**11 unique external symbols on 32-bit
architectures, 2**10 on 64-bit.
pic32 Generate position-independent code (large
model).
Equivalent to -PIC. Permits references to at
most 2**30 unique external symbols on 32-bit
architectures, 2**29 on 64-bit.
The default is -xcode=abs32 for SPARC V8 and V7. The
default is -xcode=abs64 for SPARC and UltraSPARC V9
(with -xarch=v9|v9a).
When building shared dynamic libraries with -xarch=v9
or v9a in 64-bit Solaris environment, the -xcode=pic13
or pic32 (or -pic or -PIC) option MUST be specified.
-xcommonchk[={yes|no}]
Enable runtime checking of common block inconsisten-
cies.
This option is provided as a debugging aid for programs
using task common and parallelization (-explicitpar or
-parallel). (See the task common pragma.)
By default, runtime checking for inconsistent task com-
mon declarations is disabled. Compiling with
-xcommonchk=yes will enable this runtime check when the
program is executed. If a common block is declared in
one source module as a regular common block, and some-
where else appears in a task common pragma, the program
will stop and a message pointing to the first such
inconsistency issued.
Because the runtime check invoked by this option will
degrade program performance, it should only be used
during program development and debugging.
Specifying -xcommoncheck alone is equivalent to
-xcommoncheck=yes
-xcrossfile[=n]
Enable optimization and inlining across source files
(SPARC Only).
If specified, n may be 0, or 1.
Normally, the scope of the compiler's analysis is lim-
ited to each separate file on the command line. For
example, -O4's automatic inlining is limited to subpro-
grams defined and referenced within the same source
file.
With -xcrossfile, the compiler analyzes all the files
named on the command line as if they had been con-
catenated into a single source file.
-xcrossfile is only effective when used with -O4 or
-O5.
The files produced from this compilation are inter-
dependent (due to possible inlining) must be used as a
unit when linking into a program. If any one routine is
changed and the files recompiled, they must all be
recompiled.
As a result, use of this option will affect how
makefiles are constructed.
The default, if not specified on the command line, is
-xcrossfile=0 and no cross file optimizations are per-
formed. -xcrossfile is equivalent to -xcrossfile=1.
-xdepend
Synonym for -depend
-xexplicitpar
Synonym for -explicitpar
-xF Allow function-level reordering by the Sun WorkShop
Analyzer
Allow the reordering of functions (subprograms) in the
core image using the compiler, the Analyzer and the
linker. If you compile with the -xF option, then run
the Analyzer, you can generate a map file that optim-
izes the ordering of the functions in memory depending
on how they are used together. A subsequent link to
build the executable file can be directed to use that
map by using the linker -Mmapfile option. It places
each function from the executable file into a separate
section.
Reordering the subprograms in memory is useful only
when the application text page fault time is consuming
a large percentage of the application time. Otherwise,
reordering may not improve the overall performance of
the application. The Analyzer is part of the Sun
WorkShop. See the Analyzing Program Performance With
Sun WorkShop manual for further information on the
Analyzer.
-xhelp=h
Show options summary or README file.
h is either readme or flags.
readme: Show the online README file.
flags: Show the compiler flags (options).
-xhelp=flags is a synonym for -help.
-xia[=widestneed|strict]
Enable interval arithmetic extensions and set a suit-
able floating-point environment.
Interval arithmetic is an extension to the numerical
computation techniques in Fortran 95. For further
information, see the Fortran 95 documentation.
-xia is a macro flag that expands as follows:
-xia and -xia=widestneed expand to:
-xinterval=widestneed -ftrap=%none -fns=no -fsimple=0
-xia=strict expands to:
-xinterval=strict -ftrap=%none -fns=no =fsimple=0
-xildoff
Turn off Incremental Linker
This forces the use of the standard linker, ld.
This option is the default if you do not use -g. It is
also the default if you use -G or name any source file
on the command line.
Override this default by using -xildon.
-xildon
Turn on Incremental Linker
Turn on the Incremental Linker and force the use of ild
in incremental mode.
This option is the default if you use -g, and do not
use -G, and do not name any source file on the command
line.
Override this default by using -xildoff.
-xinline=rl
Synonym for -inline=rl.
-xinterval[=no|widestneed|strict]
Enable processing of interval arithmetic extensions.
Interval arithmetic is an extension to the numerical
computation techniques in Fortran 95. For further
information, see the Fortran 95 documentation.
This flag controls the expression evaluation syntax
permitted.
-xinterval specified without a value defaults to
widestneed.
no
Interval arithmetic is not enabled.
widestneed
Promotes all non-interval variables and literals in
any mixed-mode expression to the widest interval data
type in the expression.
strict
Prohibits mixed-type or mixed-length interval expres-
sions. All interval type and length conversions must
be explicit.
-xlibmil
Synonym for -libmil.
-xlibmopt
Use library of optimized math routines
Use a library of selected math routines optimized for
performance. This option usually generates faster
code. It may produce slightly different results; if so,
they usually differ in the last bit. The order on the
command line for this library option is not signifi-
cant.
-xlicinfo
Show license server user IDs.
Return license information about the licensing system.
In particular, return the name of the license server
and the IDs of users who have obtained licenses.
Generally, with this option, no compilation is done,
and a license is not checked out. If a conflicting
option is used, then the latest one on the command line
takes precedence, and a warning is issued.
-xlic_lib=sunperf
Link with the Sun Performance Library
Example:
f95 -o pgx -fast -pgx.f -xlic_lib=sunperf
As with -l it should appear after all source and object
file names on the command line. This option must be
used to link with the Sun Performance Library.
-Xlist[z]
Produce listings and do global program checking.
Check across routines for consistency. This option
helps find a variety of bugs. In general, -Xlist also
makes a line-numbered listing of the source and a cross
reference table of the identifiers. The errors that are
found do not prevent the program from being compiled
and linked.
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 Suboptions
-Xlist Default: listings, errors, xref
-XlistE Errors only (no xref or listings)
-Xlisterr Suppress all -Xlist error messages
-Xlisterr[n] Suppress -Xlist error message n.
-XlistI Check include files also
-XlistL Listings only (no xref)
-Xlistl[n] Page length is n lines
-Xlistonm Output to nm instead of to file.lst
-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 Xref only (no listings)
-xloopinfo
Synonym for -loopinfo
-xmaxopt[=n]
Enable optimization pragma and set maximum optimization
level.
Limits the optimization level specified by a C$PRAGMA
SUN OPT=m directive to n. When a directive specifying
a level m greater than n on the -xmaxopt flag appears,
the compiler will use n.
The value corresponds to the values 1 through 5 of
the -O optimization level flag. The value of n must be
greater or equal to the value of highest optimization
level specified by other options. So, for example:
f95 ... -O3 -xmaxopt=4
would be appropriate.
The flag -xmaxopt by itself defaults to -xmaxopt=5
-xmemalign[=<a> <b>]
Specify maximum assumed memory alignment and behavior
of misaligned data accesses.
For memory accesses where the alignment is determinable
at compile time, the compiler will generate the
appropriate load/store instruction sequence for that
alignment of data.
For memory accesses where the alignment cannot be
determined at compile time, the compiler must assume an
alignment to generate the needed load/store sequence.
The -xmemalign flag allows the user to specify the max-
imum memory alignment of data to be assumed by the com-
piler in these indeterminable situations. It also
specifies the error behavior to be followed at run-time
when a misaligned memory access does take place.
VALUES:
If a value is specified, it must consist of two parts:
a numerical alignment value, <a>, and an alphabetic
behavior flag, <b>.
Allowed values for alignment, <a> are:
1 Assume at most 1 byte alignment.
2 Assume at most 2 byte alignment.
4 Assume at most 4 byte alignment.
8 Assume at most 8 byte alignment.
16 Assume at most 16 byte alignment.
Allowed values for behavior, <b> are:
i Interpret access and continue execution.
s Raise signal SIGBUS.
f Raise signal SIGBUS for alignments less than or
equal to 4, otherwise interpret access and con-
tinue execution.
DEFAULTS:
The first default, which applies when no -xmemalign
flag appears, is:
-xmemalign=4s for
-xarch=generic,v7,v8,v8a,v8plus,v8plusa
-xmemalign=8s for -xarch=v9,v9a for C and C++
-xmemalign=8f for -xarch=v9,v9a for Fortran
The second default, which applies when -xmemalign
appears but without a value, is:
-xmemalign=1i for all platforms
-xnolib
Synonym for -nolib.
-xnolibmil
Synonym for -nolibmil.
-xnolibmopt
Cancel -xlibmopt
Use with -fast to cancel linking with the optimized
math library.
-xO[n]
Synonym for -O[n].
-xpad
Synonym for -pad
-xparallel
Synonym for -parallel
-xpg Synonym for -pg.
-xpp=p
Select source file preprocessor.
p is either fpp or cpp. Selects the source file
preprocessor to be used with .F files. The default is
fpp, which is appropriate for Fortran. Previous ver-
sions of the compiler used cpp, the standard C language
preprocessor. To select cpp, specify -xpp=cpp.
-xprefetch[=val]
Enable prefetch instructions on processors that support
prefetch.
Enable the compiler to generate prefetch instructions
on those architectures that support prefetch, such as
UltraSPARC II (-xarch= v8plus, v9plusa v8plusb, v9,
v9a, v9b)
Accepted values for val are:
auto enable automatic generation of prefetch
instructions
no%auto disable automatic generation
explicit enable explicit prefetch PRAGMA directives
no%explicit
disable explicit prefectch directives
yes equivalent to -xprefetch=auto,explicit
no equivalent to -xprefetch=no%auto,no%explicit
The first default, when -xprefetch is not specified,
is:
-xprefetch=no
The default when just -xprefetch is specified is:
-xprefetch=yes
With -xprefetch=auto, the compiler is free to insert
prefetch instructions into the code it generates. This
may result in a performance improvement on UltraSPARC
II processors.
With -xprefetch=explicit, the compiler will recognize
the directives:
$PRAGMA SPARC_PREFETCH_READ_ONCE (address)
$PRAGMA SPARC_PREFETCH_READ_MANY (address)
$PRAGMA SPARC_PREFETCH_WRITE_ONCE (address)
$PRAGMA SPARC_PREFETCH_WRITE_MANY (address)
-xprofile=p
Collect or optimize with runtime profiling data
Collect and save execution frequency data during execu-
tion; then use the data in subsequent runs to improve
performance.
p must be collect[:nm], use[:nm], or tcov.
If compilation and linking are performed in separate
steps, the same -xprofile option must appear on the
compile as well as the link step.
collect[:nm]
Collect and save execution frequency data for
later use by the optimizer with -xprofile=use.
The compiler generates code to measure state-
ment execution frequency.
The nm is the name of the program that is
being analyzed. This name is optional. If not
specified, a.out is assumed to be the name of
the executable.
At runtime a program compiled with -
xprofile=collect:nm will create the subdirec-
tory nm.profile to hold the runtime feedback
information. Data is written to the file feed-
back in this subdirectory. If you run the pro-
gram several times, the execution frequency
data accumulates in the feedback file; that
is, output from prior runs is not lost.
use[:nm] Use execution frequency data to optimize
strategically.
As with collect:nm, the nm is optional and may
be used to specify the name of the program.
The program is optimized by using the execu-
tion frequency data previously generated and
saved in the feedback files written by a pre-
vious execution of the program compiled with
-xprofile=collect.
The source files and other compiler options
must be exactly the same as used for the com-
pilation that created the compiled program
that generated the feedback file. If compiled
with -xprofile=collect:nm, the same program
name nm must appear in the optimizing compila-
tion: -xprofile=use:nm.
tcov Basic block coverage analysis using "new"
style tcov(1).
Code instrumentation is similar to that of -a,
but .d files are no longer generated for each
source file. Instead, a single file is gen-
erated, whose name is based on the name of the
final executable. For example, if stuff is the
executable file, then stuff.profile/tcovd is
the data file.
When running tcov you must pass it the -x
option to make it use the new style of data.
If not, tcov uses the old .d files, if any, by
default for data, and produces unexpected out-
put.
Unlike -a, the TCOVDIR environment variable
has no effect at compile-time. However, its
value is used at program runtime to identify
where to create the profile subdirectory.
Warning:
The report produced by tcov can be unreliable if there
is inlining of subprograms due to -O4 or -inline. Cov-
erage of calls to routines that have been inlined is
not recorded.
-xrecursive
Allow routines without RECURSIVE attribute to call
themselves recursively.
Normally, only subprograms defined with the RECURSIVE
attribute can call themselves recursively.
Compiling subprograms with -xrecursive enables them to
call themselves recursively even if they are not
defined with the attribute RECURSIVE.
Compiling routines with -xrecursive may cause perfor-
mance degradations. Also, this flag does not cause
local variables to be allocated on the stack. Consider
using -stackvar with -xrecursive
-xreduction
Synonym for -reduction
-xregs=r
Specify register usage (SPARC Only).
Specify usage of registers in generated code.
r is a comma-separated list of one or more of the fol-
lowing: [no%]appl, [no%]float.
Example: -xregs=appl,no%float
The -xregs values are for specific -xarch values):
appl Allow using registers g2, g3, and g4. (v8,
v8a)
Allow using registers g2, g3, and g4.
(v8plus, v8plusa)
Allow using registers g2, g3. (v9, v9a)
no%appl Do not use appl registers.
float Allow using floating-point registers as speci-
fied in the SPARC ABI.
no%float Do not use floating-point registers.
The default is: -xregs=appl,float.
-xs Allow debugging by dbx without .o files.
With -xs, if you move executables to another directory,
then you can use dbx and ignore the object (.o) files.
Use this option in case you cannot keep the .o files
around.
This option reverts to implementing symbol tables as
implemented in release 1.4 and earlier. For this older
way, if you move the executables, you must also move the
source files, but you can ignore the object files. Also,
the loader links more slowly, and dbx initializes more
slowly. For comparison, with the newer way, which is now
the default, the loader links faster, and dbx initial-
izes faster. If you move the executables, you must move
both the source files and the object ( .o ) files, or
set the path with the dbx pathmap or use command.
This option passes the -s option to the assembler.
-xsafe=mem
Assume no memory-based traps
Allow the compiler to assume no memory-based traps occur
This option grants permission to use the speculative
load instruction on V9 machines. It is only effective
when used with -O5 optimization, and
-xarch=v8plus|v8plusa|v9|v9a is specified.
-xsb
Synonym for -sb.
-xsbfast
Synonym for -sbfast.
-xspace
Do not increase code size
Do no optimizations that increase the code size.
Example: Do not unroll loops.
-xtarget=t
Specify system for optimization
Specify the target system for the instruction set and
optimization.
t must be one of: native, native64, generic, generic64,
system-name.
The -xtarget option permits a quick and easy specifica-
tion of the -xarch, -xchip, and -xcache combinations
that occur on real systems. The only meaning of -xtarget
is in its expansion.
The -xtarget values are:
native: Get the best performance on the host system
(32-bit architecture):
-xarch=native -xchip=native -xcache=native
native64: Get the best performance on the host system
(64-bit architecture):
-xarch=native64 -xchip=native64 -xcache=native
generic: Get the best performance for most 32-bit plat-
forms This is the default and is equivalent to:
-xarch=generic -xchip=generic -xcache=generic
generic64: Get the best performance for most 64-bit
platforms This is equivalent to:
-xarch=generic64 -xchip=generic64 -xcache=generic
system-name: Get the best performance for the specified
system.
Valid system names on SPARC are: sun4/15, sun4/20,
sun4/25, sun4/30, sun4/40, sun4/50, sun4/60, sun4/65,
sun4/75, sun4/110, sun4/150, sun4/260, sun4/280,
sun4/330, sun4/370, sun4/390, sun4/470, sun4/490,
sun4/630, sun4/670, sun4/690, sselc, ssipc, ssipx, sslc,
sslt, sslx, sslx2, ssslc, ss1, ss1plus, ss2, ss2p, ss4,
ss5, ssvyger, ss10, ss10/hs11, ss10/hs12, ss10/hs14,
ss10/20, ss10/hs21, ss10/hs22, ss10/30, ss10/40,
ss10/41, ss10/50, ss10/51, ss10/61, ss10/71, ss10/402,
ss10/412, ss10/512, ss10/514, ss10/612, ss10/712,
ss20/hs11, ss20/hs12, ss20/hs14, ss20/hs21, ss20/hs22,
ss20/51, ss20/61, ss20/71, ss20/502, ss20/512, ss20/514,
ss20/612, ss20/712, ss600/41, ss600/51, ss600/61,
ss600/120, ss600/140, ss600/412, ss600/512, ss600/514,
ss600/612, ss1000, sc2000, cs6400, solb5, solb6, ultra,
ultra2, ultra2i, ultra2, ultra1/140, ultra1/170,
ultra1/200, ultra2/1170, ultra2/1200, ultra2/1300,
ultra2/2170, ultra2/2200, ultra2/2300, entr2,
entr2/1170, entr2/2170, entr2/1200, entr2/2200, entr150,
entr3000, entr4000, entr5000, entr6000.
Compiling for a 64-bit Solaris environment on SPARC or
UltraSPARC V9 is indicated by the -xarch=v9 or
-xarch=v9a flag. Setting -xtarget=ultra or ultra2 is not
necessary or sufficient. If -xtarget is specified, the
-xarch=v9 or v9a option must appear AFTER the -xtarget,
as in:
-xtarget=ultra2 ... -xarch=v9 otherwise the
-xtarget setting will revert -xarch to v8.
See the section on -xtarget=t in the Fortran User's
Guide for the -xtarget expansions that show the mnemonic
encodings of the actual system names and numbers.
This option is a macro. Each specific value for -xtarget
expands into a specific set of values for the -xarch,
-xchip, and -xcache options. For example:
-xtarget=sun4/15 is equivalent to:
-xarch=v8a -xchip=micro -xcache=2/16/1
fpversion(1) can be used to see the -xtarget or
-xarch, -xchip, and -xcache options equivalent to
-xtarget=native on any system.
-xtime
Synonym for -time.
-xtypemap=spec
Specify default data mappings.
This option provides a flexible way to specify the byte
sizes for default data types. Compare with -dbl and -r8.
The syntax of the string spec is:
type:bits,type:bits,...
The allowable data types are REAL, DOUBLE, INTEGER. The
data sizes accepted are 32, 64,and 128.
This option applies to all variables declared without
explicit byte sizes, as in REAL XYZ.
The allowable combinations are:
real:32 or real:64,
double:64 or double:128,
integer:32 or integer:64.
A useful mapping is:
-xtypemap=real:64,double:64:integer:64
which maps REAL and DOUBLE to 8 bytes, but does not pro-
mote DOUBLE PRECISION to QUAD PRECISION.
Note also that INTEGER and LOGICAL are treated the same,
and COMPLEX is mapped as two REAL data elements. Also,
DOUBLE COMPLEX will be treated the way DOUBLE is mapped.
For more information, see the Fortran User's Guide
-xunroll=n
Synonym for -unroll=n
-xvector[={yes|no}]
Enable automatic generation of calls to the vector
library functions.
-xvector=yes permits the compiler to transform math
library calls within DO loops into single calls to the
equivalent vector math routines when such transforma-
tions are possible. This could result in a performance
improvement for loops with large loop counts.
The default if not specified is -xvector=no. Specifying
-xvector is equivalent to -xvector=yes.
This option also triggers -depend if -depend is not
already specified prior to -xvector on the command line.
However, -nodepend following -xvector on the command
line will cancel the effect of -xvector.
The compiler automatically informs the linker to include
the libmvec and libc libraries in the load step. If com-
piling and linking are done in separate commands, -xvec-
tor must also appear on the linking f95 command.
-Zlp
Compile for loop profiling by looptool.
Prepare object files for the loop profiler looptool,
part of the Sun WorkShop. This option requires a
WorkShop license.
If you compile and link in separate steps, and you com-
pile with -Zlp, then be sure to link with -Zlp.
If you compile one subprogram with -Zlp, you need not
compile all subprograms of that program with -Zlp. How-
ever, you get loop information only for the files com-
piled with -Zlp, and no indication that the program
includes other files.
-ztext
Make no library with relocations
Do not make the library if relocations remain. The gen-
eral purpose of -ztext is to ask if the generated
library is pure text; instructions are all position-
independent code. Therefore, it is generally used with
both -G and -pic.
With -ztext, if ld finds an incomplete relocation in the
text segment, then it does not build the library. If it
finds one in the data segment, then it generally builds
the library anyway; the data segment is writable.
Without -ztext, ld builds the library, relocations or
not.
A typical use is to make a library from both source
files and object files, where you do not know if the
object files were made with -pic.
Other arguments are taken to be either linker option argu-
ments, or names of f95-compatible object programs, typically
produced by an earlier run, or libraries of routines that
are f95-compatible. These programs, together with the
results of any compilations specified, are linked in the
order given to produce an executable program in the file
specified by the -o option, or in a file named a.out if the
-o option is not specified.
DIRECTIVES
General Directives: f95 allows general compiler directive
lines starting with C$PRAGMA, !$PRAGMA, or *$PRAGMA, and any
uppercase or lowercase is allowed. Examples:
C$PRAGMA C( suba, subz)
C$PRAGMA SUN UNROLL 2
C$PRAGMA WEAK FUNK
C$PRAGMA SUN OPT=4
C$PRAGMA PIPELOOP=5
C$PRAGMA SPARC_PREFETCH_READ_ONCE (name)
C$PRAGMA SPARC_PREFETCH_READ_MANY (name)
C$PRAGMA SPARC_PREFETCH_WRITE_ONCE (name)
C$PRAGMA SPARC_PREFETCH_WRITE_MANY (name)
Parallel Directives: f95 recognizes Sun-style parallel com-
piler directive lines starting with C$PAR, !$PAR, or *$PAR,
and any uppercase or lowercase is allowed. Examples:
C$PAR DOALL
C$PAR DOSERIAL
C$PAR DOSERIAL*
C$PAR TASK COMMON
Cray-style parallelization directives are also recognized.
The directive sentinel is CMIC$ or !MIC$
See the Fortran User's Guide for details and variations.
ENVIRONMENT
The paths shown below assume a standard installation of the
Sun WorkShop Compilers to /opt/SUNWspro/. Contact your sys-
tem administrator if your compilers were custom installed to
some other directory path.
PATH
To use f95, add the following to the start of the search
path:
/opt/SUNWspro/bin/
MANPATH
To access the f95 man pages, add the following to the MAN-
PATH environment variable:
/opt/SUNWspro/man/
LD_LIBRARY_PATH
Generally, you need not set up LD_LIBRARY_PATH. If you do
need to do so, then maybe there is some discrepancy in the
installation, or some executable has been built incorrectly.
Set the LD_LIBRARY_PATH, environment variable to:
/opt/SUNWspro/lib/
LD_LIBRARY_PATH_64
On Solaris 7, this environment variable is similar to
LD_LIBRARY_PATH but overrides it when searching for 64-bit
dependencies.
When running Solaris 7 on a SPARC processor and linking in
32-bit mode, LD_LIBRARY_PATH_64 is ignored. If only
LD_LIBRARY_PATH is defined, it us used for both 32-bit and
64-bit linking. If both LD_LIBRARY_PATH and
LD_LIBRARY_PATH_64 are defined, the 32-bit linking will be
done using LD_LIBRARY_PATH and the 64-bit linking using
LD_LIBRARY_PATH_64.
See Linker and Libraries Guide for more information on these
environment variables.
LD_RUN_PATH
If you use LD_RUN_PATH, note that for f95, LD_RUN_PATH is
not identical with -R. (For ld.so, they are identical.)
See -R, in the Fortran User's Guide, for details.
FILES
Selected major files used by the compiler
a.out Executable output file
file.a Library of object files
file.d Test coverage input file for tcov(1)
file.f FORTRAN source file
file.f95 Fortran 95 source file
file.F FORTRAN source file for fpp(1)
file.F90 Fortran 95 source file for fpp(1)
file.for FORTRAN source file
file.il In-line expansion file
file.o Object file
file.r Ratfor source file
file.s Assembler source file
file.S Assembler source for cpp(1)
file.tcov Output from tcov(1)
/usr/lib/libc.a Standard C library, see intro(3)
/usr/lib/libp/libc.a Profiling library, see intro(3)
/tmp/* Compiler temporary files
mon.out File produced for analysis by prof(1)
gmon.out File produced for analysis by gprof(1)
For the remaining files, if no absolute path is shown then
they are in the following directory:
/opt/SUNWspro//
where varies with each release of Sun WorkShop.
(See your systems administrator for details.)
bin/fpp
Fortran preprocessor
bin/cpp
C preprocessor
include/f95
Path searched for f95 INCLUDE statement
include/f95/f95_floatingpoint.h
f95 IEEE arithmetic type definitions
The following libraries exist in both .so and .a versions:
lib/libfsu
f95 support intrinsics
lib/libfui
f95 - UNIX interface
lib/libfio
Fortran 95 I/O
lib/lib*fai
Fortran 95 array intrinsics libraries
lib/libifai
Fortran 95 interval array intrinsics library
lib/libf77compat
f77 I/O compatibility library
/usr/lib/libm.a
Math lib
/usr/lib/libp/libm.a
Math profile lib
lib/libsunmath.a
Sun value-added math lib
lib/libsunimath.a
Sun value-added interval math lib
lib/libp/libsunmath.a
Sun value-added math profile lib
lib/libp/libsunimath.a
Sun value-added interval math profile lib
READMEs
A number of README files provide valuable last-minute infor-
mation on the compilers and libraries, including white
papers. Of particular interest are:
o fortran_95
o math_libraries
o 64bit_Compilers
The path to the READMEs directory is:
/SUNWspro/READMEs/
where is usually /opt in a standard install.
SEE ALSO
asa(1), cc(1), dbx(1), fpp(1), fpr(1), fsplit(1),
gprof(1), ild(1), ld(1), perror(3f), prof(1), tcov(1)
Fortran User's Guide
Fortran Programming Guide
Numerical Computation Guide
Sun Performance Library User's Guide
Analyzing Program Performance with Sun WorkShop
Fortran Library Reference
Linker and Libraries Guide (ld)
Debugging a Program With dbx
Sun Performance Library: See the performance_library README
file. This library is part of the Sun Performance WorkShop
and contains subroutines and functions for operations in
computational linear algebra and Fourier transforms.
DIAGNOSTICS
The diagnostics produced by f95 itself are intended to be
self-explanatory. Occasional messages may be produced by the
linker. When compiling within the Sun WorkShop "Building"
window, the compiler's diagnostic messages are hyper-linked
to online help. Clicking on the message information icon
launches a browser with additional information about the
diagnostic.
Last change: 00/04/03 Sun WorkShop 6 60
|