| Fortran User's Guide |
f77/f95Compiler OptionsThis chapter details the command-line options for the Sun WorkShop
f77andf95compilers.
- A description of the syntax used for compiler option flags starts on page 37
- Summaries of options arranged by functionality starts on page 39.
- The complete reference detailing each compiler option flag starts on page 45.
Some options are not available on both compilers (
f77orf95). Check the reference section for availability.Command Syntax
The general syntax of the compiler command line is:
f77 [options] list_of_files additional_optionsf95[options] list_of_files additional_optionsItems in square brackets indicate optional parameters. The brackets are not part of the command. The options are a list of option keywords prefixed by dash (
-). Some keyword options take the next item in the list as an argument. The list_of_files is a list of source, object, or library file names separated by blanks. Also, there are some options that must appear after the list of source files, and these could include additional lists of files (for example,-B,-l, and-L).Options Syntax
Typical compiler option formats are:
TABLE 3-1 Options Syntax -flag
-g-flagvalue
-Dnostep-flag=value
-xunroll=4-flag value
-o outfile
The following typographical conventions are used when describing the individual options:
Brackets, pipe, and ellipsis are meta characters used in the descriptions of the options and are not part of the options themselves.
Some general guidelines for options are:
-lx is the option to link with librarylibx.a. It is always safer to put-lx after the list of file names to insure the order libraries are searched.- In general, processing of the compiler options is from left to right, allowing selective overriding of macro options (options that include other options).
Source files, object files, and libraries are compiled and linked in the order in which they appear on the command line.
Options Summary
In this section, the compiler options are grouped by function to provide an easy reference. The details will be found on the pages in the following sections, as indicated.
The following table summarizes the
f77andf95compiler options by functionality. The table does not include obsolete and legacy option flags. Some flags serve more than one purpose and appear more than once.
Commonly Used Options
The Sun Fortran compilers have many features that are selectable by optional command-line parameters. The short list below of commonly used options is a good place to start.
Backward Compatibility and Legacy Options
The following options are provided for backward compatibility with earlier compiler releases, and certain Fortran legacy capabilities.
Use of these option flags is not recommended and should be avoided.
Obsolescent Options
The following options are no longer supported by the
f77andf95compilers. Their appearance on a compiler command does not cause an error, and no action is taken; they are ignored.
TABLE 3-6 Obsolescent Options Compile for Thread Analyzer -ZthaDisable exception traps ( f95) -fnonstop
Options Reference
This section shows all
f77andf95compiler command-line option flags, including various risks, restrictions, caveats, interactions, examples, and other details. Each description indicates platform availability of the option.
Legend Option Availablity f77
only available with f77f95
only available with f95f77/f95
available with both f77andf95
Options that are not available for a compiler on a particular platform will still be accepted silently by the compiler. That is, the compiler will accept the option on the command-line on that platform without issuing a warning, but the option does nothing.
-a
Profile by basic block using
tcov, old style.
- SPARC: f77/f95
This is the old style of basic block profiling for
tcov. See-xprofile=tcovfor information on the new style of profiling and thetcov(1) man page for more details. Also see the manual, Analyzing Program Performance with Sun WorkShop.Insert code to count the times each basic block of statements is executed. This invokes a runtime recording mechanism that creates one
.dfile for every.ffile at normal program termination. The.dfile accumulates execution data for the corresponding source file. Thetcov(1) utility can then be run on the source file(s) to generate statistics about the program. The summary output produced bytcovis written to file.tcovfor each source file.-pgandgprofare complementary to-aandtcov.If set at compile-time, the
TCOVDIRenvironment variable specifies the directory where the.dand.tcovfiles are located. If this variable is not set, then the.dfiles remain in the same directory as the.ffiles.The
-xprofile=tcovand the-aoptions are compatible in a single executable. That is, you can link a program that contains some files which have been compiled with-xprofile=tcov, and others with-a. You cannot compile a single file with both options.If you compile and link in separate steps, and you compile with
-a, then be sure to link with-a.For details, see the chapter Performance Profiling in the Fortran Programming Guide.
-aligncommon[=n]
Specify the alignment of data in COMMON blocks.
- SPARC: f77/f95
n may be 1, 2, 4, 8, or 16, and indicates the desired alignment size (in bytes) of data elements within COMMON blocks.
For example,
-aligncommon=4would align all common block data elements of size 4 bytes or more on 4-byte boundaries. Data in blocks smaller than the specified size are not affected by this option and are aligned on their respective natural boundaries.When
-aligncommonis not specified, common block data is aligned by default on (at most) 4-byte boundaries.Specifying
-aligncommonwithout a value defaults to 1 on all platforms: all common block data aligns on byte boundaries (no padding between elements).-ansi
Identify many nonstandard extensions.
- SPARC: f77/f95
Warning messages are issued for any uses of non-standard Fortran 77 or Fortran 95 extensions in the source code.
-arg=local
Preserve actual arguments over
ENTRYstatements.
- SPARC: f77
When you compile a subprogram with alternate entry points with this option,
f77uses copy restore to preserve the association of dummy and actual arguments. For example, the following program would require compilation with-arg=localto insure proper execution:
A = SETUP(ALPHA,BETA,GAMMA)ZORK = FXGAMMA(GCONST)...FUNCTION SETUP(A1,A2,A3)...ENTRY FXGAMMA(F)FXGAMMA = F*GAMMA...RETURNENDWithout this option, there is no guarantee that the correct values of the actual arguments from the
SETUPcall will be referenced when the routine is entered throughFXGAMMA. Code that relies on-arg=localis nonstandard.autopar
Enable automatic loop parallelization. (Requires a Sun WorkShop HPC license.)
- SPARC: f77/f95
Finds and parallelizes appropriate loops for running in parallel on multiple processors. Analyzes loops for inter-iteration data dependencies and loop restructuring. If the optimization level is not specified
-O3or higher, it will automatically be raised to-O3.To improve performance, also specify the -
stackvaroption when using any of the parallelization options, including -autopar.Avoid
-autoparif the program already contains explicit calls to thelibthreadthreads library. See note with-mton page 72.The
-autoparoption is not appropriate on a single-processor system, and the compiled code will generally run slower.To run a parallelized program in a multithreaded environment, you must set the
PARALLEL(orOMP_NUM_THREADS) environment variable prior to execution. This tells the runtime system the maximum number of threads the program can create. The default is 1. In general, set thePARALLELorOMP_NUM_THREADSvariable to the available number of processors on the target platform.If you use
-autoparand compile and link in one step, the multithreading library and the thread-safe Fortran runtime library will automatically be linked. If you use-autoparand compile and link in separate steps, then you must also link with-autoparto insure linking the appropriate libraries.The
-reductionoption may also be useful with-autopar. Other parallelization options are-paralleland -explicitpar.Refer to the Fortran Programming Guide for more information on parallelization.
Fortran parallelization features require a Sun WorkShop HPC license.
-B{static|dynamic}
Prefer dynamic or require static library linking.
- SPARC: f77/f95
No space is allowed between
-Banddynamicorstatic. The default, without-Bspecified, is-Bdynamic.
-Bdynamic: Prefer dynamic linking (try for 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 with a warning that the "library was not found."- If you specify
dynamic, but the linker finds only a static version, then that library is linked, with no warning.You can toggle
-Bstaticand-Bdynamicon the command line. That is, you can link some libraries statically and some dynamically by specifying-Bstaticand-Bdynamicany number of times on the command line, as follows:
f77 prog.f -Bdynamic -lwells -Bstatic -lsurfaceThese are loader and linker options. Compiling and linking in separate steps with
-Bx on the compile command will require it in the link step as well.You cannot specify both
-Bdynamicand-dnon the command line because-dndisables linking of dynamic libraries.In a 64-bit Solaris environment, many system libraries are available only as shared dynamic libraries. These include
libm.soandlibc.so(libm.aandlibc.aare not provided). This means that-Bstaticand-dnmay cause linking errors in 64-bit Solaris environments. Applications must link with the dynamic libraries in these cases.See the Fortran Programming Guide for more information on static and dynamic libraries.
-C
Check array references for out of range subscripts.
- SPARC: f77/f95
Subscripting arrays beyond their declared sizes may result in unexpected results, including segmentation faults. The -
Coption checks for possible array subscript violations in the source code and during execution.Specifying
-Cmay make the executable file larger.If the -
Coption is used, array subscript violations are treated as an error. If an array subscript range violation is detected in the source code during compilation, it is treated as a compilation error.If an array subscript violation can only be determined at runtime, the compiler generates range-checking code into the executable program. This may cause an increase in execution time. As a result, it is appropriate to enable full array subscript checking while developing and debugging a program, then recompiling the final production executable without subscript checking.
-c
Compile only; produce object
.ofiles, but suppress linking.
- SPARC: f77/f95
Suppress linking. Compile a
.ofile for each source file. If only a single source file is being compiled, the -ooption can be used to specify the name of the.ofile written.-cg89
Compile for generic SPARC architecture. (Obsolete)
- SPARC: f77/f95
This option is a macro for:
-xarch=v7-xchip=old-xcache=64/32/1which is equivalent to-xtarget=ss2.-cg92
Compile for SPARC V8 architecture. (Obsolete)
- SPARC: f77/f95
This option is a macro for:
-xarch=v8-xchip=super-xcache=16/32/4:1024/32/1which is equivalent to-xtarget=ss1000.-copyargs
Allow assignment to constant arguments.
- SPARC: f77/f95
Allow a subprogram to change a dummy argument that is a constant. This option is provided only to allow legacy code to compile and execute without a runtime error.
- Without
-copyargs, if you pass a constant argument to a subroutine, and then within the subroutine try to change that constant, the run aborts.- With
-copyargs, if you pass a constant argument to a subroutine, and then within the subroutine change that constant, the run does not necessarily abort.Code that aborts unless compiled with
-copyargsis, of course, not Fortran standard compliant. Also, such code is often unpredictable.-Dname[=def]
Define symbol name for the preprocessor.
- SPARC: f77/f95
This option only applies to
.Fand.f95source files.
-Dname=def Define name to have value defOn the command line, this option will define name as if:
had appears in the source file. If no
=def specified, the name name is defined as the value 1. The macro symbol name is passed on to the preprocessorfpp(orcpp-- see the-xppoption) for expansion.Following are the predefined values (these symbols have two leading underscores):
- The product version is predefined (in hex) in
__SUNPRO_F77,__SUNPRO_F90,and__SUNPRO_F95. For example__SUNPRO_F77is0x600for the Sun WorkShop 6 release.- The following predefined on appropriate systems:
__sparc,__unix,__sun,__SVR4,__SunOS_5_6, __SunOS_5_7, __SunOS_5_8- For instance, the value
__sparcis defined on is defined on SPARC systems. You can use these values in such preprocessor conditionals as the following:#ifdef __sparc- The following are predefined with no underscores, but they may be deleted in a future release:
sparc,unix,sun- On SPARC V9 systems, the
__sparcv9macro is also defined.The compilers use the
fpp(1) preprocessor by default. Like the C preprocessorcpp(1),fppexpands source code macros and enables conditional compilation of code. Unlikecpp,fppunderstands Fortran syntax, and is preferred as a Fortran preprocessor. Use the -xpp=cppflag to force the compiler to specifically usecpprather thanfpp.-dalign
Align COMMON block data and generate faster multi-word load/stores.
- SPARC: f77/f95
This flag changes the data layout in COMMON blocks (and EQUIVALENCE classes), and enables the compiler to generate faster multi-word load/stores for that data.
The data layout effect is that of the
-fflag: 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=v9orv9a). The default alignment of data in COMMON blocks is on 4-byte boundaries. The compiler is also allowed to assume natural alignment and generate faster multi-word load/stores to reference the data.
Note -dalignmay result in nonstandard alignment of data, which could cause problems with variables inEQUIVALENCEorCOMMONand may render the program non-portable if-dalignis required.
-dalignis a macro equivalent to:-xmemalign=8s -aligncommon=8See--xmemalign, page 107.Using both
-dbland-dalignalso causes defaultINTEGERvariables to be 8-byte aligned and 64-bits. Also:
-xtypemap=real:x,double:y,integer:64If you compile one subprogram with
-dalign, compile all subprograms of the program with-dalign. This option is included in the-fastoption.-db
- SPARC:f95
- 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 generated automatically when the-Xlistoption is used. The-dboption can be used to regenerate the CIF file without-Xlist.-dbl
Double the default size for
REAL,INTEGER,DOUBLE, andCOMPLEX.
- SPARC:f77
Note This option, and-r8, is now considered obsolete and may be removed in future releases. Use the more general-xtypemapoption instead.
-dblpromotes the default byte size forREAL,INTEGER,DOUBLE,andCOMPLEXvariables declared without an explicit byte size as follows:
TABLE 3-7 Default Data Sizes and - dbl(Bytes) INTEGER4 8 REAL4 8 DOUBLE8 16
This option applies to variables, parameters, constants, and functions.
Also,
LOGICALis treated asINTEGER,COMPLEXas twoREALs, andDOUBLECOMPLEXas twoDOUBLEs.Compare
-dblwith-r8:-dbland -r8can be expressed in terms of the more general -xtypemap=option:
These options promote default
DOUBLEPRECISIONdata toQUADPRECISION(128 bits). This may be unwanted and may cause performance degradation. It might be more appropriate to use-xtypemap=real:64,double:64,integer:64instead of-dblin these cases.For all of the floating point data types,
-dblworks the same as-r8; using both-r8and-dblproduces the same results as using only-dbl.
- For
INTEGERandLOGICALdata types,-dblis different from-r8:In general, if you compile one subprogram with
-dbl, then be sure to compile all subprograms of that program with-dbl. This is particularly important with programs communicating through files with unformatted I/O -- if one program is compiled with-dbl, then the other program must similarly be compiled. Be also aware that this option alters the default data size of function names, including calls to library functions, unless the function name is typed explicitly with a data size.dbl_align_all={yes|no}
Force alignment of all data on 8-byte boundaries
- SPARC: f77/f95
The value is either
yesorno. Ifyes, all variables will be aligned on 8-byte boundaries. Default is-dbl_align_all=no.When compiling for 64-bit environments with
-xarch=v9orv9a, 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.
On SPARC, use with
-dalignto enable added efficiency with multi-word load/stores.If used, all routines must be compiled with this flag.
-depend
Analyze loops for data dependencies.
- SPARC: f77/f95
Analyze loops for inter-iteration data dependencies and do loop restructuring. This option will raise the optimization level to
O3if no optimization level is specified, or if it is specified less thanO3.-dependis also included with-fast,-autoparand-parallel. (See the Fortran Programming Guide.)-dryrun
Show commands built by driver, but do not compile.
- SPARC: f77/f95
Useful when debugging, this option displays the commands it will run to perform the compilation.
-d{y|n}
Allow or disallow dynamic libraries for the entire executable
- SPARC: f77/f95
-dy: Yes, allow dynamically bound libraries (allow shared libraries).-dn: No, do not allow dynamically bound libraries (no shared libraries).The default, if not specified, is
-dy.Unlike -
Bx, this option applies to the whole executable and need appear only once on the command line.
-dy|-dnare loader and linker options. If you compile and link in separate steps with these options, then you need the same option in the link step.In a 64-bit Solaris environment, many system libraries are not available only as shared dynamic libraries. These include
libm.soandlibc.so(libm.aandlibc.aare not provided). This means that-dnand-Bstaticmay cause linking errors in 64-bit Solaris environments. Applications must link with the dynamic libraries in these cases.-e
Accept extended length input source line.
- SPARC: f77/f95
Accept source lines up to 132 characters long. The compiler pads on the right with trailing blanks to column 132. If you use continuation lines while compiling with
-e, then do not split character constants across lines, otherwise, unnecessary blanks may be inserted in the constants.erroff=taglist
Suppress warning messages listed by tag name.
- SPARC: f77/f95
Suppress displaying the warning messages specified in the comma-separated list of tag names taglist. If taglist consists of
%none, no warnings are suppressed. If taglist consists of%all, all warnings are suppressed (this is equivalent to the-woption.)
f77 -erroff=WDECL_LOCAL_NOTUSED ink.fUse the
-errtagsoption to see the tag names associated with warning messages.errtags
Display the message tag with each warning message.
- SPARC: f77/f95
With this option, the compiler's internal error tag name will appear along with warning messages. The default is not to display the tag.
demo%f77 -errtags ink.fink.f:MAIN:"ink.f", line 11: Warning: local variable "i" never used (WDECL_LOCAL_NOTUSED) <- The warning message's tag nameexplicitpar
Parallelize loops or regions explicitly marked by directives.
- SPARC: f77/f95
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 preceded 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
libthreadlibrary.To run a parallelized program in a multithreaded environment, you must set the
PARALLEL(orOMP_NUM_THREADS) environment variable prior to execution. This tells the runtime system the maximum number of threads the program can create. The default is 1. In general, set thePARALLELorOMP_NUM_THREADSvariable to the available number of processors on the target platform.If you use
-explicitparand compile and link in one step, then linking automatically includes the multithreading library and the thread-safe Fortran runtime library. If you use-explicitparand compile and link in separate steps, then you must also link with-explicitpar.To improve performance, also specify the -
stackvaroption when using any of the parallelization options, including -explicitpar.Use the
-mpoption (page 72) to select the style of parallelization directives enabled: Sun, Cray, or OpenMP.If the optimization level is not
-O3or higher, it is raised to-O3automatically.For details, see the Parallelization chapter in the Fortran Programming Guide.
Fortran parallelization features require a Sun WorkShop HPC license.
-ext_names=e
Create external names with or without trailing underscores.
- SPARC: f77/f95
e must be either
plainorunderscores. The default isunderscores.
-ext_names=plain: Do not add trailing underscore.
-ext_names=underscores: Add trailing underscore.An external name is a name of a subroutine, function, block data subprogram, or labeled common. This option affects both the name of the routine's entry point and the name used in calls to it. This option may be used to allow Fortran 77 routines to call and be called by other language routines.
-F
Invoke the source file preprocessor, but do not compile.
- SPARC: f77/f95
Apply the
fpppreprocessor to.Ffiles (and.f95files withf95) and write the processed result on a file with the same name but with suffix changed to.f(or.f95), but do not compile.writes the processed source file to
source.f
fppis the default preprocessor for Fortran. The C preprocessor,cpp, can be selected instead by specifying -xpp=cpp.-f
- SPARC: f77/f95
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=v9orv9a). The default alignment of data in COMMON blocks is on 4-byte boundaries.
Note -fmay result in nonstandard alignment of data, which could cause problems with variables inEQUIVALENCEorCOMMONand may render the program non-portable if-fis required.
Using
-dblwith-faligns all 64-bit integer data on 8-byte boundaries as well.Compiling any part of a program with
-frequires compiling all subprograms of that program with-f.By itself, this option does not enable the compiler to generate faster multi-word fetch/store instructions on double and quad precision data. The
-dalignoption does this and invokes-fas well. Use of-dalignis preferred over the older-f.
See-dalign, page 52. Because-dalignis part of the-fastoption, so is-f.-fast
Optimize for speed of execution using a selection of options.
- SPARC: f77/f95
Select options that optimize for speed of execution without excessive compilation time. This option provides close-to-the-maximum performance for many applications.
If you compile and link in separate steps, and you compile with
-fast, then be sure to link with-fast.
-fastselects the following options:
-dalign-depend-fns-fsimple=2-ftrap=%none(f77)or-ftrap=common(f95)-libmil-f (f95only)-xtarget=native-O5-xlibmopt-pad=common-xvector=yes
Note This option is defined as a particular selection of other options that is subject to change from one release to another, and between compilers. Also, some of the options selected by -fastmay not be available on all platforms.
Details about the options selected by
-fast:
- The
-xtarget=nativehardware target.
If the program is intended to run on a different target than the compilation machine, follow the-fastwith a code-generator option. For example:f77 -fast -xtarget=ultra ...- The
-O5optimization level option. (This is a change from previous compiler releases that set-O3or-O4with-fast.)- The
-dependoption (SPARC only).- The
-libmiloption for system-supplied inline expansion templates.
For C functions that depend on exception handling, follow-fastby -nolibmil:-fast-nolibmil. With-libmil, exceptions cannot be detected witherrnoormatherr(3m).- The
-fsimple=2option for aggressive floating-point optimizations.-fsimple=2is unsuitable if strict IEEE 754 standards compliance is required. See page 63. (This is a change from previous releases that set-fsimple=1with-fast.)- The
-dalignoption to generate double loads and stores (SPARC only).
Using this option may generate nonstandard Fortran data alignment.- The
-xlibmoptoption (SPARC only)-pad=commoninserts padding between variables in common blocks where appropriate to improve cache usage. (This was not set by-fastin previous releases.)-xvector=yestransforms certain math library calls within DO loops to single calls to a vectorized library equivalent routine with vector arguments. (This was not set by-fastin previous releases.)-fns-ftrap=%noneto turn off all trapping for Fortran 77. Trapping on common floating-point exceptions is the default for Fortran 95.f95adds the-foption.It is possible to add or subtract from this list by following the
-fastoption with other options, as in:
f95 -fast -fsimple=1 -xnolibmopt ...which overrides the -
fsimple=2option and disables the -xlibmoptselected by -fast.-fixed
Specify fixed-format Fortran 95 source input files.
- SPARC:f95
All source files on the command-line will be interpreted as
f77fixed format regardless of filename extension. Normally,f95interprets only.ffiles as fixed format,.f95as free format.-flags
- SPARC: f77/f95
-fnonstd
Initialize floating-point hardware to non-standard preferences.
- SPARC: f77/f95
This option is a synonym for the combination of the following option flags:
- SPARC:
-fns-ftrap=commonSpecifying
-fnonstdis approximately equivalent to the following two calls at the beginning of a Fortran main program.
i=ieee_handler("set", "common", SIGFPE_ABORT)call nonstandard_arithmetic()The
nonstandard_arithmetic()routine replaces the obsoleteabrupt_underflow()routine of earlier releases.To be effective, the main program must be compiled with this option.
Using this option initializes the floating-point hardware to:
- Abort (trap) on floating-point exceptions.
- SPARC: Flush underflow results to zero if it will improve speed, rather than produce a subnormal number as the IEEE standard requires.
See
-fnsfor more information about gradual underflow and subnormal numbers.The
-fnonstdoption allows hardware traps to be enabled 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 terminates with a dump of memory.For more information, see the ieee_handler(3m) and ieee_functions(3m) man pages, the Numerical Computation Guide, and the Fortran Programming Guide.
-fns[={no|yes}]
Select the SPARC nonstandard floating-point mode.
- SPARC: f77/f95
The default is the SPARC standard floating-point mode (
-fns=no). (See the Floating-Point Arithmetic chapter of the Fortran Programming Guide.)Optional use of
=yesor=noprovides a way of toggling the-fnsflag following some other macro flag that includes it, such as-fast.-fnsis the same as-fns=yes.This option flag enables nonstandard floating-point mode when the program begins execution. On some SPARC systems, specifying 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.
Where x does not cause total underflow, x is a subnormal number if and only if |x| is in one of the ranges indicated:
TABLE 3-8 Subnormal REAL and DOUBLE REAL0.0 < |x| < 1.17549435e-38 DOUBLE PRECISION0.0 < |x| < 2.22507385072014e-308
See the Numerical Computation Guide for details on subnormal numbers, and the Fortran Programming Guide chapter Floating-Point Arithmetic for more information about this and similar options. (Some arithmeticians use the term denormalized number for subnormal number.)
The standard initialization of floating-point preferences is the default:
- IEEE 754 floating-point arithmetic is nonstop (do not abort on exception).
- Underflows are gradual.
To be effective, the main program must be compiled with this option.
-fpover[={yes|no}]
Detect floating-point overflow in formatted input.
- SPARC: f77/f95
With
-fpover=yesspecified, the I/O library will detect runtime floating-point overflows in formatted input and return an error condition (1031). The default is no such overflow detection (-fpover=no).-fpoveris equivalent to-fpover=yes.-fpp
Force preprocessing of input with
fpp.
- SPARC:f95
Pass all the input source files listed on the f95 command line through the
fpppreprocessor, regardless of file extension. (Normally, only files with.F,.F90, or.F95extension are automatically preprocessed byfpp.) See also-xpp, page 109.-free
Specify free-format source input files.
- SPARC:f95
All source files on the command-line will be interpreted as
f95free format regardless of filename extension. Normally,f95interprets.ffiles as fixed format,.f95as free format.-fround=r
Set the IEEE rounding mode in effect at startup.
- SPARC: f77/f95
r must be one of:
nearest,tozero,negative,positive.The default is
-fround=nearest.To be effective, compile the main program with this option.
This option sets the IEEE 754 rounding mode that:
- Can be used by the compiler in evaluating constant expressions.
- Is established at runtime during the program initialization.
When r is
tozero,negative, orpositive, the option sets the rounding direction to round-to-zero, round-to-negative-infinity, or round-to-positive-infinity, respectively, when the program begins execution. When-froundis not specified,-fround=nearestis used as the default and the rounding direction is round-to-nearest. The meanings are the same as those for theieee_flagsfunction. (See the Floating-Point Arithmetic chapter of the Fortran Programming Guide.)-fsimple[=n]
Select floating-point optimization preferences.
- SPARC: f77/f95
Allow the optimizer to make simplifying assumptions concerning floating-point arithmetic. (See the Floating-Point Arithmetic chapter of the Fortran Programming Guide.)
For consistent results, compile all units of a program with the same -
fsimpleoption.If n is present, it must be 0, 1, or 2. The defaults are:
- Without the
-fsimpleflag, the compiler defaults to-fsimple=0- With
-fsimplealone, the compiler defaults to-fsimple=1The different floating-point simplification levels are:
Permit no simplifying assumptions. Preserve strict IEEE 754 conformance.
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 following:
- 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 ("Not a Number") as operands need not propagate NaNs to their results; e.g.,
x*0may be replaced by0.- 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 computation cannot be replaced by one that produces different results with rounding modes held constant at run time.
- Permit aggressive floating point optimizations that may cause many programs to produce different numeric results due to changes in rounding.
- For example,
-fsimple=2permits the optimizer to attempt to replace repeated computations of x/y with x*z, where z=1/y is computed once and saved in a temporary, eliminating the costly divide operation.- Even with
-fsimple=2, the optimizer still is not permitted to introduce a floating point exception in a program that otherwise produces none.-fastsets-fsimple=2.-ftrap=t
Set floating-point trapping mode in effect at startup.
- SPARC: f77/f95
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.
-ftrap=commonis a macro for-ftrap=invalid,overflow,underflow,division.Where the
%is shown, it is a required character.The
f77default is-ftrap=%none. Thef95default is-ftrap=common.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 example:
-ftrap=overflow.Example:
-ftrap=%all,no%inexactmeans set all traps, exceptinexact.The meanings for
-ftrap=t are the same as forieee_flags(), except that:
%allturns on all the trapping modes, and will cause trapping of spurious and expected exceptions. Usecommoninstead.%none, thef77default, turns off all trapping modes.- A
no%prefix turns off that specific trapping mode.To be effective, compile the main program with this option.
For further information, see the Floating-Point Arithmetic chapter in the Fortran Programming Guide.
Build a dynamic shared library instead of an executable file.
- SPARC: f77/f95
-g
- SPARC: f77/f95
Produce additional symbol table information for debugging with
dbx(1) or the Sun WorkShop debugging utility.Although some debugging is possible without specifying -
g, the full capabilities ofdbxanddebuggerare only available to those compilation units compiled with -g.Some capabilities of other options specified along with
-gmay be limited. See thedbxdocumentation for details.For SPARC: The
-goption makes-xildonthe default incremental linker option when .o object files appear on the command line (see page 102). That is, with-g, the compiler default behavior is to automatically invokeildin place ofld, unless the-Goption is present, or any source file is named on the command line.-hname
Specify the name of the generated dynamic shared library.
- SPARC: f77/f95
This option is passed on to the linker. For details, see the Solaris Linker and Libraries Guide, and the Fortran Programming Guide chapter Libraries.
The
-hname option records the name name to the shared dynamic library being created as the internal name of the library. A space between-hand name is optional (except if the library name iselp, for which the space will be needed). In general, name must be the same as what follows the-o. Use of this option is meaningless without also specifying -G.Without the
-hname option, no internal name is recorded in the library file.If the library has an internal name, whenever an executable program referencing the library is run the runtime linker will search for a library with the same internal name in any path the linker is searching. With an internal name specified, searching for the library at runtime linking is more flexible. This option can also be used to specify versions of shared libraries.
If there is no internal name of a shared library, then the linker uses a specific path for the shared library file instead.
-help
Display a summary list of compiler options.
- SPARC: f77/f95
Displays a list of option summaries. See also -
xhelp=h on page 101.-Idir
Add dir to the INCLUDE file search path.
- SPARC: f77/f95
Insert the directory dir at the start of the
INCLUDEfile search path. No space is allowed between-Iand dir. Invalid directories are ignored with no warning message.The include file search path is the list of directories searched for
INCLUDEfiles--file names appearing on preprocessor#includedirectives, or FortranINCLUDEstatements.Example: Search for
INCLUDEfiles in/usr/app/include:
demo%f77 -I/usr/app/include growth.FMultiple
-Idir options may appear on the command line. Each adds to the top of the search path list (first path searched).The search order for relative path on
INCLUDEor #include is:
- The directory that contains the source file
- The directories that are named in the
-Idir options- The directories in the default list
The default list for
-Idir depends on the installation directory for the compiler. In a standard install, compiler software packages reside in the/optdirectory; however, systems administrators may decide to install packages in other locations. The default search paths forINCLUDEfiles are:
- for
f77:<install_dir>/SUNWspro/<release>/include/f77 /usr/include- for
f95:<install_dir>/SUNWspro/<release>/include/f90 /usr/includewhere <install_dir> is the path to the installed packages (typically
/optin a normal install), and <release> is a path that varies with each release.-i2
Set the default integer size to two bytes.
- SPARC:f77
Set the default size to 2 bytes for integer and logical constants and variables declared without an explicit size. (
INTEGER*nYstill declares Y to be n bytes regardless of the-i2.) This option may degrade performance. It is generally recommended to declare specific variablesINTEGER*2rather than use -i2.-i4
Set the default integer size to four bytes.
- SPARC:f77
Set the default size to 4 bytes for integer and logical constants and variables declared without an explicit size. (
INTEGER*nYstill declares Y to be n bytes regardless of the-i4.).Although 4 bytes is the default size for
INTEGERandLOGICAL, this option can be used for overriding settings made by options like -dbland -r8, which set these defaults to 8:
demo%f77 -dbl -i4 *.fCommand line warning: -i4 overrides integer part of -dbl...-inline=[%auto][[,][no%]f1,...[no%]fn]
Enable or disable inlining of specified routines.
- SPARC: f77/f95
Request the optimizer inline the user-written routines named in the f1,...,fn list. Prefixing a routine name with
no%disables inlining of that routine.Inlining is an optimization technique whereby the compiler effectively replaces a subprogram reference such as a
CALLor function call with the actual subprogram code itself. Inlining often provides the optimizer more opportunities to produce efficient code.The lists are a comma-separated list of functions and subroutines. To inhibit inlining of a function, prefix its name with
no%.The appearance of
-inlinewith-O4disables the automatic inlining that the compiler would normally perform, unless%autois specified with-inline.Example: Inline the routines
xbar, zbar, vpoint:
demo%f95 -O3 -inline=xbar,zbar,vpoint *.fFollowing are the restrictions; no warnings are issued:
- SPARC: Optimization must be
-O3or greater.- The source for the routine must be in the file being compiled, unless
-xcrossfileis also specified.- The compiler determines if actual inlining is profitable and safe.
With
-O4, the compilers normally try to inline all appropriate user-written subroutines and functions. Adding-inlinewith -O4may degrade performance by restricting the optimizer's inlining to only those routines in the list. In this case, use the%autosuboption to enable automatic inlining at-O4and-O5.
demo%f95 -O4 -inline=%auto,no%zpoint *.fIn the example above, the user has enabled
-O4's automatic inlining while disabling any possible inlining of the routinezpoint()that the compiler might attempt.-Kpic
- SPARC: f77/f95
-KPIC
- SPARC: f77/f95
-Ldir
Add dir to list of directories to search for libraries.
- SPARC: f77/f95
Adds dir to the front of the list of object-library search directories. A space between
--Land dir is optional. This option is passed to the linker. See also-lx on page 69.While building the executable file
,ld(1) searches dir for archive libraries (.afiles) and shared libraries (.sofiles).ldsearches dir before searching the default directories. (See the Fortran Programming Guide chapter Libraries for information on library search order.) For the relative order betweenLD_LIBRARY_PATHand-Ldir, see ld(1).Example: Use
-Ldir to specify library search directories:
demo%f77 -Ldir1 -Ldir2 any.f
Note Specifying/usr/libor/usr/ccs/libwith-Ldir may prevent linking the unbundledlibm. These directories are searched by default.
-lx
Add library
libx.ato linker's list of search libraries.
- SPARC: f77/f95
Pass
-lx to the linker to specify additional libraries forldto search for unresolved references. ld links with object librarylibx. If shared librarylibx.sois available (and -Bstaticor-dnare not specified),lduses it, otherwise,lduses static librarylibx.a. If it uses a shared library, the name is built in toa.out. No space is allowed between-land x character strings.Example: Link with the library
libV77:
demo%f77 any.f -lV77
Use -lx again to link with more libraries.Example: Link with the libraries
libyandlibz:
demo%f77 any.f -ly -lzSee also the Libraries chapter in the Fortran Programming Guide for information on library search paths and search order.
libmil
Inline selected
libmlibrary routines for optimization.
- SPARC: f77/f95
There are inline templates for some of the
libmlibrary routines. This option selects those inline templates that produce the fastest executable for the floating-point options and platform currently being used.For more information, see the man pages
libm_single(3F) andlibm_double(3F)-loopinfo
- SPARC: f77/f95
Show which loops were and were not parallelized with the
-parallel,-autopar, or-explicitparoptions. (Option-loopinfomust appear with one of these parallelization options.)The parallelization features of the Fortran compilers require a Sun WorkShop HPC license.
-loopinfodisplays a list of messages on standard error:
Use the error(1) utility with
f77compilations to merge this list with the source file to produce an annotated source listing with each loop tagged as parallelized or not.Example:
Passing standard error to theerrorutility:
demo$f77 -autopar -loopinfo any.f 2>&1 | erroroptionsBe aware that
errorrewrites the input source file. For details onerror, see theerror(1) man page and the Fortran Programming Guide chapter on debugging.Mdir
Add dir to directories searched for Fortran 95 modules.
- SPARC:f95
Add dir to the list of directories to be searched for module files. No space appears between the -
Mand dir.The directories listed with -
Mare searched after the current directory. Compiling a source file containing a module generates a.modmodule file for eachMODULEencountered. See in Appendix , Module Files for more information about modules in Fortran 95.-misalign
- SPARC:f77
The
-misalignoption permits misaligned data in memory that would otherwise produce an error. Particular uses ofCOMMONandEQUIVALENCEstatements may cause data to be misaligned (with a compiler diagnostic). With-misalign, the compiler will allow intentional misalignment and will not add padding in COMMON blocks to insure proper data alignment. However, this seriously degrades performance; recoding to eliminate the cause of data misalignment is a better alternative.If used, all routines in a program must be compiled with this option. If you compile and link in separate steps, compiling with the
-misalignoption requires the option on the link step as well.
-misalignis a macro equivalent to:-xmemalign=1i -aligncommon=1See
-xmemalign, page 107.-mp={%none|sun|cray|openmp}
Select the style for parallelization directives.
- SPARC: f77/f95
The default without specifying
-mpis%none.
You can combine OpenMP directives with Sun or Cray directives in the same compilation unit. But both Sun and Cray directives cannot both be active in the same compilation unit. For example:
-mp=sun,openmpand-mp=cray,openmpare permitted, but-mp=sun,crayis not.You must also specify
-explicitpar(or-parallel) to enable parallelization. For correctness, also specify-stackvar:
-explicitpar -stackvar -mp=openmpSee also
-openmp, page 78.Fortran parallelization features require a Sun WorkShop HPC license.
A summary of these
f77/f95directives appears in Appendix in this manual. See the Fortran Programming Guide for details.-mt
Require thread-safe libraries.
- SPARC: f77/f95
Require linking to thread-safe libraries. If you do your own low-level thread management (for example, by calling the
libthreadlibrary), compiling with -mtprevents conflicts.Use
-mtif you mix Fortran with C multithread C code that calls thelibthreadlibrary. See also the Solaris Multithreaded Programming Guide.
-mtis implied automatically when using the-autopar,-explicitpar, or-paralleloptions.
- A function subprogram that does I/O should not itself be referenced as part of an I/O statement. Such recursive I/O may cause the program to deadlock with
-mt.- In general, do not compile your own multithreaded code with
-autopar,-explicitpar, or-parallel. The compiler-generated calls to the threads library and the program's own calls may conflict, causing unexpected results.- On a single-processor system, performance may be degraded with the
-mtoption.-native
Optimize performance for the host system. (Obsolete)
- SPARC: f77/f95
This option is a synonym for
-xtarget=native.The-fastoption sets-xtarget=native.-noautopar
Disable automatic parallelization.
- SPARC: f77/f95
Disables automatic parallelization invoked by
-autoparearlier on the command line.-nodepend
Cancel
-dependin command line.
- SPARC: f77/f95
Cancel any
-dependappearing earlier on the command line.noexplicitpar
Disable explicit parallelization.
- SPARC: f77/f95
Disables explicit parallelization invoked by
-explicitparearlier on the command line.-nolib
Disable linking with system libraries.
- SPARC: f77/f95
Do not automatically link with any system or language library; that is do not pass any default
-lx options on told. The normal behavior is to link system libraries into the executables automatically, without the user specifying them on the command line.The
-noliboption makes it easier to link one of these libraries statically. The system and language libraries are required for final execution. It is your responsibility to link them in manually. This option provides you with complete control.For example, consider a program linked dynamically with
libF77that fails on a remote system because has nolibF77. With this option you can link the library into your program statically.Link
libF77statically and linklibcdynamically withf77:
demo%f77 -nolib any.f -Bstatic -lF77 -Bdynamic -lm -lcLink
libmstatically andlibcdynamically withf95:
demo%f95 -nolib any.f95 -Bstatic -lm -Bdynamic -lcThe order for the
-lx options is important. Follow the order shown in the examples.-nolibmil
Cancel
-libmilon command line.
- SPARC: f77/f95
Use this option after the
-fastoption to disable inlining oflibmmath routines:
demo%f77 -fast -nolibmil ...-noqueue
- SPARC: f77/f95
With this option, if no software license is available to run the compiler, it returns without queueing your request and without compiling. A nonzero environment status is returned for testing in
makefiles.-noreduction
Cancel
-reductionon command line.
- SPARC: f77/f95
-reductionis used with other parallelization options. This option cancels-reduction.-norunpath
Do not build a runtime shared library search path into the executable.
- SPARC: f77/f95
The compiler normally builds into an executable a path that tells the runtime linker where to find the shared libraries it will need. The path is installation dependent. The
-norunpathoption prevents that path from being built in to 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
-Rpaths.See the Fortran Programming Guide chapter on Libraries for more information.
-O[n]
- SPARC: f77/f95
n can be
1,2,3,4, or5. No space is allowed between-Oand n.If
-O[n] is not specified, only a very basic level of optimization limited to local common subexpression elimination and dead code analysis is performed. A program's performance may be significantly improved when compiled with an optimization level than without optimization. Use of -O(which sets -O3) or
-fast(which sets -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 optimization levels may result in increased compilation time and larger executable files.Debugging with
-gdoes not suppress-On, but-On limits-gin certain ways; see thedbxdocumentation.The
-O3and-O4options reduce the utility of debugging such that you cannot display variables fromdbx, but you can still use thedbxwherecommand to get a symbolic traceback.For SPARC: If the optimizer runs out of memory, it attempts to proceed over again at a lower level of optimization, resuming compilation of subsequent routines at the original level.
For details on optimization, see the Fortran Programming Guide chapters Performance Profiling, and Performance and Optimization.
-O
-O1
Provides a minimum of statement-level optimizations.
Use if higher levels result in excessive compilation time, or exceed available swap space.
-O2
Enables basic block level optimizations.
This level usually gives the smallest code size. (See also
-xspace.)
-O3is preferred over-O2unless-O3results in unreasonably long compilation time, exceeds swap space, or generates excessively large executable files.-O3
Adds loop unrolling and global optimizations at the function level.
Usually
-O3generates larger executable files.-O4
Adds automatic inlining of routines contained in the same file.
Usually
-O4generates larger executable files due to inlining.The
-goption suppresses the-O4automatic inlining described above.-xcrossfileincreases the scope of inlining with-O4.-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 compilation time, and may also degrade performance when applied to too large a fraction of the source program.Optimization at this level is more likely to improve performance if done with profile feedback. See
-xprofile=p.-o name
Specify the name of the executable file to be written.
- SPARC: f77/f95
There must be a blank between
-oand name. Without this option, the default is to write the executable file toa.out. When used with-c,-ospecifies the target.oobject file; with-Git specifies the target.solibrary file.-oldldo
Select "old" list-directed output style.
- SPARC:f77
Omit the blank that starts each record for list-directed output. This is a change from
f77releases 1.4 and earlier. The default behavior is to provide that blank, since the Fortran Standard requires it. Note also theFORM='PRINT'option ofOPEN. You can compile parts of a program with-oldldoand other parts without it.-onetrip
- SPARC: f77/f95
Compile
DOloops such that they are executed at least once.DOloops in standard Fortran 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.
- SPARC:f95
This option is a macro for the combination of options:
-mp=openmp -explicitpar -stackvar -D_OPENMPOpenMP directives are summarized in Appendix .
To run a parallelized program in a multithreaded environment, you must set the
PARALLEL(orOMP_NUM_THREADS) environment variable prior to execution. This tells the runtime system the maximum number of threads the program can create. The default is 1. In general, set thePARALLELorOMP_NUM_THREADSvariable to the available number of processors on the target platform.Fortran parallelization features require a Sun WorkShop HPC license.
-p
Compile for profiling with the
profprofiler.
- SPARC: f77/f95
Prepare object files for profiling, see prof (1). If you compile and link in separate steps, and if you compile with the
-poption, then be sure to link with the-poption.-pwithprofis provided mostly for compatibility with older systems.-pgprofiling withgprofis possibly a better alternative. See the Fortran Programming Guide chapter on Performance Profiling for details.-pad[=p]
Insert padding for efficient use of cache.
- SPARC: f77/f95
This option inserts padding between arrays or character variables if they are static local and not initialized, or in common blocks. The extra padding positions the data to make better use of cache. In either case, the arrays or character variables can not be equivalenced.
For
-pad[=p], if p is present, it must be either (or both):
local
Add padding between adjacent local variables common
Add padding between variables in common blocks
- Without the
-pad[=p] option, the compiler does no padding.- With
-pad, but without the=p, the compiler does both local and common padding.
f77 -padany.ff77 -pad=local,commonany.ff77 -pad=common,localany.fThe
-pad[=p] option applies to items that satisfy the following criteria:
- The items are arrays or character variables
- The items are static local or in common blocks
For a definition of local or static variables, see -
stackvar, page 86.
- Neither the arrays nor the character strings are equivalenced
- If
-pad=commonis specified for compiling a file that references a common block, it must be specified when compiling all files that reference that common block. The option changes the spacing of variables within the common block. If one program unit is compiled with the option and another is not, references to what should be the same location within the common block might reference different locations.- If
-pad=commonis specified, the declarations of common block variables in different program units must be the same except for the names of the variables.The amount of padding inserted between variables in a common block depends on the declarations of those variables. If the variables differ in size or rank in different program units, even within the same file, the locations of the variables might not be the same.- If
-pad=commonis specified,EQUIVALENCEdeclarations involving common block variables are flagged as an error.parallel
Parallelize with:
-autopar, -explicitpar, -depend
- SPARC: f77/f95
Parallelize loops chosen automatically by the compiler as well as explicitly specified by user supplied directives. Optimization level is automatically raised to
-O3if it is lower.To improve performance, also specify the -
stackvaroption when using any of the parallelization options, including -autopar.Use
-mp, page 72, to select Sun, Cray, orf95OpenMP style parallelization directives.Avoid
-parallelif you do your own thread management. See the discussion of -mton page 72.Parallelization options like
-parallelare intended to produce executable programs to be run on multiprocessor systems. On a single-processor system, parallelization generally degrades performance.To run a parallelized program in a multithreaded environment, you must set the
PARALLEL(orOMP_NUM_THREADS) environment variable prior to execution. This tells the runtime system the maximum number of threads the program can create. The default is 1. In general, set thePARALLELorOMP_NUM_THREADSvariable to the available number of processors on the target platform.If you use
-paralleland compile and link in one step, then linking automatically includes the multithreading library and the thread-safe Fortran runtime library. If you use-paralleland compile and link in separate steps, then you must also link with-parallel.Fortran parallelization features require a Sun WorkShop HPC license.
See the Fortran Programming Guide chapter Parallelization for further information.
-pg
Compile for profiling with the
gprofprofiler.
- SPARC: f77/f95
Compile self-profiling code in the manner of
-p, but invoke a runtime recording mechanism that keeps more extensive statistics and produces agmon.outfile when the program terminates normally. Generate an execution profile by runninggprof. See thegprof(1) man page and the Fortran Programming Guide for details.Library options must be after the
.fand.ofiles (-pglibraries are static).If you compile and link in separate steps, and you compile with
-pg, then be sure to link with-pg.-pic
Compile position-independent code for shared library.
- SPARC: f77/f95
This kind of code is for 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.
- The size of the global offset table is limited to 8Kb on SPARC.
- Do not mix
-picand-PIC.
-picis equivalent to-xcode=pic13.There are two nominal performance costs with
-picand-PIC:
- A routine compiled with either
-picor-PICexecutes 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.- 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 reference.When considering the above costs, remember that the use of
-picand-PICcan significantly reduce system memory requirements, due to the effect of library code sharing. Every page of code in a shared library compiled-picor-PICcan be shared by every process that uses the library. If a page of code in a shared library contains 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
.ofile has been compiled with-picor-PICis with thenmcommand:
%nmfile.o | grep _GLOBAL_OFFSET_TABLE_U _GLOBAL_OFFSET_TABLE_A
.ofile containing position-independent code contains an unresolved external reference to _GLOBAL_OFFSET_TABLE_, as indicated by the letterU.To determine whether to use
-picor-PIC, usenmto identify the number of distinct global and static variables 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=v9orv9aon 64-bit Solaris 7, the-picor-PICoption, or their-xcodeequivalents, must be specified.-PIC
Compile position-independent code, but with 32-bit addresses.
- SPARC: f77/f95
This option is similar to
-pic, but it allows the global offset table to span the range of 32-bit addresses. Use it in those rare cases where there are too many global data objects for-pic. Do not mix-picand-PIC.
-PICis equivalent to-xcode=pic32.When building shared dynamic libraries with
-xarch=v9orv9aon 64-bit Solaris 7, the-picor-PICoption, or their-xcodeequivalents, must be specified.-Qoption pr ls
Pass options to compilation phase pr.
- SPARC: f77/f95
Pass the suboption list ls to the compilation phase pr. There must be blanks separating
Qoption, pr, and ls. TheQcan be uppercase or lowercase. The list is a comma-delimited list of suboptions, with no blanks within the list. Each suboption must be appropriate for that program phase, and can begin with a minus sign.This option is provided primarily for debugging the internals of the compiler by support staff. Use the
LD_OPTIONSenvironment variable to pass options to the linker. See the chapter on linking and libraries in the Fortran Programming Guide.-qp
- SPARC: f77/f95
-R ls
Build dynamic library search paths into the executable file.
- SPARC: f77/f95
With this option, the linker, ld(1), stores a list of dynamic library search paths into the executable file.
ls is a colon-separated list of directories for library search paths. The blank between
-Rand ls is optional.Multiple instances of this option are concatenated together, with each list separated by a colon.
The list is used at runtime by the runtime linker,
ld.so. At runtime, dynamic libraries in the listed paths are scanned to satisfy any unresolved references.Use this option to let users run shippable executables without a special path option to find needed dynamic libraries.
Building an executable file using
-Rpaths adds directory paths to a default path that is always searched last:Standard Default Path:
/opt/SUNWspro/libFor more information, see the Libraries chapter in the Fortran Programming Guide, and the Solaris Linker and Libraries Guide.
-r8
Double default byte size for
REAL,INTEGER,DOUBLEandCOMPLEX.
- SPARC:f77
Note This option, and-dbl, is now considered obsolete and may be removed in future releases. Use the more general-xtypemapoption instead.
-r8promotes the default byte size forREAL,INTEGER,DOUBLE, andCOMPLEXvariables declared without an explicit byte size as follows:
TABLE 3-9 Default Data Sizes and - r8(Bytes) INTEGER4 8 REAL4 8 DOUBLE8 16
This option applies to variables, parameters, constants, and functions.
Also,
LOGICALis treated asINTEGER,COMPLEXas twoREALs, andDOUBLECOMPLEXas twoDOUBLEs.
-dbland -r8can be expressed in terms of the more general -xtypemap=option:
These options promote default
DOUBLEPRECISIONdata toQUADPRECISION(128 bits). This may be unwanted and may cause performance degradation. It might be more appropriate to use-xtypemap=real:64,double:64,integer:64instead of-r8in these cases.
- For all of the floating point data types,
-dblworks the same as-r8; using both-r8and-dblproduces the same results as using only-dbl.- For
INTEGERandLOGICALdata types,-dbldiffers from-r8:In general, if you compile one subprogram with
-r8, then be sure to compile all subprograms of that program with-r8. This also important with programs communicating through unformatted I/O files -- if one program is compiled with-r8, then the other program must be similarly compiled. Be also aware that this option alters the default data size of function names, including calls to library functions, unless the function name is typed explicitly with a data size.The impact on runtime performance may be great. With
-r8, an expression likefloat=15.0d0*floatis evaluated in quadruple precision due to the declaration of the constant.If you select both
-r8and-i2, the results are unpredictable.-r8const
Promote single-precision constants to
REAL*8constants.
- SPARC: f77/f95
All single-precision
REALconstants are promoted toREAL*8. Double-precision (REAL*8) constants are not changed. This option only applies to constants. To promote both constants and variables use-xtypemap, page 115.reduction
Recognize reduction operations in loops.
- SPARC: f77/f95
Analyze loops for reduction operations during automatic parallelization. There is potential for roundoff error with the reduction.
A reduction operation accumulates the elements of an array into a single scalar value. For example, summing the elements of a vector is a typical reduction operation. Although these operations violate the criteria for parallelizability, the compiler can recognize them and parallelize them as special cases when
-reductionis specified. See the Fortran Programming Guide chapter Parallelization for information on reduction operations recognized by the compilers.This option is useable only with the automatic parallelization options -
autoparor -parallel. It is ignored otherwise. Explicitly parallelized loops are not analyzed for reduction operations.Example: Automatically parallelize with reduction:
demo%f77 -parallel -reduction any.f-S
Compile and only generate assembly code.
- SPARC: f77/f95
Compile the named programs and leave the assembly-language output on corresponding files suffixed with
.s. No.ofile is created.-s
Strip the symbol table out of the executable file.
- SPARC: f77/f95
This option makes the executable file smaller and more difficult to reverse engineer. However, this option inhibits debugging with
dbxor other tools, and overrides-g.-sb
Produce table information for the Sun WorkShop source code browser.
- SPARC: f77/f95
See Using Sun WorkShop for more information.
Note:
-sbcannot be used on source files the compiler automatically passes through thefpporcpppreprocessors (that is, files with.F, .F90, or.F95extensions).-sbfast
Produce only source code browser tables.
- SPARC: f77/f95
Produce only table information for the Sun WorkShop source code browser and stop. Do not assemble, link, or make object files.
-silent
- SPARC: f77/f95
Use this option to suppress non-essential messages from the compiler; error and warning messages are still issued. The default is to show file and entry names as they are reached during the compilation.
-stackvar
Force all local variables to be allocated on the memory stack.
- SPARC: f77/f95
Allocate on the memory stack all the local variables and arrays in routines, unless otherwise specified. This option makes these variables automatic, rather than static, and provides more freedom to the optimizer when parallelizing loops with calls to subprograms.
Use of -
stackvaris recommended with any of the parallelization options.Variables and arrays are local, unless they are:
- Arguments in a
SUBROUTINEorFUNCTIONstatement (already on stack)- Global items in a
COMMON,SAVE, orSTATICstatement- Items initialized in a type statement or
DATAstatement, such as:
REAL X/8.0/orDATA X/8.0/f77 only: Initializing a local variable in a
DATAstatement after an executable reference to that variable is flagged as an error when-stackvaris used:
demo%cat stak.freal xx = 1.t = 0.print*, tdata x/3.0/print *,x+tenddemo%f77 -o stak -stackvar stak.fstak.f:MAIN:"stak.f", line 5: Error: attempt to initialize an automaticvariable: xPutting large arrays onto the stack with
-stackvarcan 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 program 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
limitcommand (with no parameters) shows the current main stack size. If you get a segmentation fault using-stackvar, try increasing the main and thread stack sizes.Example: Show the current main stack size:
demo%limitcputime unlimitedfilesize unlimiteddatasize 523256 kbytesstacksize 8192 kbytes <---coredumpsize unlimiteddescriptors 64memorysize unlimiteddemo%Example: Set the main stack size to 64 Megabytes:
demo%limit stacksize 65536Example: Set each thread stack size to 8 Megabytes:
demo%setenv STACKSIZE 8192For further information of the use of
-stackvarwith parallelization, see the Parallelization chapter in the Fortran Programming Guide. Seecsh(1) for details on thelimitcommand.stop_status=yn
Permit
STOPstatement to return an integer status value.
- SPARC: f77/f95
yn is either
yesorno. The default isno.With
-stop_status=yes, aSTOPstatement may contain an integer constant. That value will be passed to the environment as the program terminates:The value must be in the range 0 to 255. Larger values are truncated and a run-time message issued. Note that
is still accepted and returns a status value of 0 to the environment, although a compiler warning message will be issued.
The environment status variable is
$statusfor the C shellcsh, and$?for the Bourne and Korn shells,shandksh.-temp=dir
Define directory for temporary files.
- SPARC: f77/f95
Set directory for temporary files used by the compiler to be dir. No space is allowed within this option string. Without this option, the files are placed in the
/tmpdirectory.-time
- SPARC: f77/f95
The time spent and resources used in each compiler pass is displayed.
-U
Recognize upper and lower case in source files.
- SPARC: f77/f95
Do not treat uppercase letters as equivalent to lowercase. The default is to treat uppercase as lowercase except within character-string constants. With this option, the compiler treats
Delta,DELTA,anddeltaas different symbols.Portability and mixing Fortran with other languages may require use of
-U. These are discussed in the Fortran Programming Guide.-u
- SPARC: f77/f95
Make the default type for all variables be undeclared rather than using Fortran implicit typing. This option warns of undeclared variables, and does not override any
IMPLICITstatements or explicit type statements.-unroll=n
Enable unrolling of DO loops where possible.
- SPARC: f77/f95
n is a positive integer. The choices are:
- n=1 inhibits all loop unrolling.
- n>1 suggests to the optimizer that it attempt to unroll loops n times.
Loop unrolling generally improves performance, but will increase the size of the executable file. For more information on this and other compiler optimizations, see the Performance and Optimization chapter in the Fortran Programming Guide. See also the discussion of the
UNROLLdirective on page 29.-V
Show name and version of each compiler pass.
- SPARC: f77/f95
This option prints the name and version of each pass as the compiler executes.
This information may be helpful when discussing problems with Sun service engineers.
-v
Verbose mode - show details of each compiler pass.
- SPARC: f77/f95
Like
-V, shows the name of each pass as the compiler executes, and details the options and environment variables used by the driver.-vax=v
Specify choice of VMS Fortran extensions enabled.
- SPARC:f77
v must be a comma-separated list of at least one suboption. Negatives may be constructed by prefixing each suboption keyword by
no%(as inno%logical_name).The primary options are
-vax=alignand-vax=misalign.
-vax=alignselects all the suboptions without allowing misaligned data. This is the behavior of the-xloption prior tof77release 3.0.1.
-vax=misalignselects all the suboptions and allows misaligned data. This is the behavior of the-xloption withf77releases 3.0.1, 4.0, 4.2, 5.0, and Sun WorkShop 6.The table below lists suboptions that can be individually selected.
%alland%nonecan also be used to select all or none of these suboptions.Sub- options accumulate from left to right. For example, to enable all but one feature:
-vax=%all,no%rsize
- SPARC: f77/f95
w
- SPARC: f77/f95
This option suppresses most warning messages. However, if one option overrides all or part of an option earlier on the command line, you do get a warning.
Example:
-wstill allows some warnings to get through:
demo%f77 -w -fast -silent -O4 any.ff77: Warning: -O4 overwrites previously set optimization level of -O3demo%For
f95:Individual levels from 0 to 4 can be specified: -w0suppresses the least messages while -w4suppresses most warning. -wis equivalent to -w0.-xa
- SPARC: f77/f95
-xarch=isa
Specify instruction set architecture (ISA).
Architectures that are accepted by
-xarchkeyword isa are shown in TABLE 3-11:
TABLE 3-11 -xarchISA KeywordsPlatform Valid -xarch Keywords SPARC generic, native, v7, v8a, v8, v8plus, v8plusa, v8plusb, v9, v9a, v9b
Note that although
-xarchcan be used alone, it is part of the expansion of the-xtargetoption and may be used to override the-xarchvalue that is set by a specific-xtargetoption. For example:
% f95 -xtarget=ultra2 -xarch=v8plusb ...overrides the
-xarch=v8set by-xtarget=ultra2This 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.
If this option is used with optimization, the appropriate choice can provide good performance of the executable on the specified architecture. An inappropriate choice results in a binary program that is not executable on the intended target platform.
Using
-xarchFor SPARC Platforms:TABLE 3-12 summarizes the most general
-xarchoptions:
- SPARC instruction set architectures V7, V8, and V8a are all binary compatible.
- Object binary files (.o) compiled with
v8plusandv8plusacan be linked and can execute together, but only on a SPARC V8plusa compatible platform.- Object binary files (.o) compiled with
v8plus,v8plusa, andv8plusbcan be linked and can execute together, but only on a SPARC V8plusb compatible platform.-xarchvaluesv9,v9a, andv9bare only available on UltraSPARC 64-bit Solaris environments.- Object binary files (.o) compiled with
v9andv9acan be linked and can execute together, but will run only on a SPARC V9a compatible platform.- Object binary files (.o) compiled with
v9,v9a, andv9bcan 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*16andlongdouble) floating-point instructions are available in many of these instruction set architectures, the compiler does not use these instructions in the code it generates.TABLE 3-13 gives details for each of the
-xarchkeywords on SPARC platforms.
-xautopar
- SPARC: f77/f95
-xcache=c
Define cache properties for the optimizer.
- SPARC: f77/f95
c must be one of the following:
generic- s1
/l1/a1- s1
/l1/a1:s2/l2/a2- s1
/l1/a1:s2/l2/a2:s3/l3/a3The si
/li/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 particular cache property is used.
Although this option can be used alone, it is part of the expansion of the
-xtargetoption; it is provided to allow overriding an-xcachevalue implied by a specific-xtargetoption.
Example:
-xcache=16/32/4:1024/32/1specifies the following:A Level 1 cache has: 16K bytes, 32 byte line size, 4-way associativity.
A Level 2 cache has: 1024K bytes, 32 byte line size, direct mapping associativity.
-xcg89
- SPARC: f77/f95
-xcg92
- SPARC: f77/f95
-xchip=c
Specify target processor for the optimizer.
- SPARC: f77/f95
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
-xtargetoption; it is provided to allow overriding a-xchipvalue implied by the a specific-xtargetoption.
- Instruction scheduling
- The way branches are compiled
- Choice between semantically equivalent alternatives
The following table lists the valid
-xchipvalues:
-xcode=code
Specify code address space on SPARC platforms.
- SPARC: f77/f95
The values for code are:
The defaults (not specifying
-xcode=code explicitly) are:
-xcode=abs32on SPARC V8 and V7 platforms.-xcode=abs64on SPARC and UltraSPARC V9 (-xarch=v9orv9a)When building shared dynamic libraries with
-xarch=v9orv9aand the 64-bit Solaris 7 environment,-xcode=pic13or-xcode=pic32(or-picor-PIC) must be specified.-xcommonchk[={no|yes}]
Enable runtime checking of common block inconsistencies.
- SPARC: f77/f95
This option provides a debug check for common block inconsistencies in programs using
TASKCOMMONand parallelization. (See the discussion of theTASKCOMMONdirective in the Parallelization chapter in the Fortran Programming Guide.)The default is
-xcommonchk=no; runtime checking for common block inconsistencies is disabled because it will degrade performance. Use it only during program development and debugging, and not for production-quality programs.Compiling with
-xcommonchk=yesenables runtime checking. If a common block declared in one source program unit as a regular common block appears somewhere else on aTASKCOMMONdirective, the program will stop with an error message indicating the first such inconsistency.xcrossfile [=n]
Enable optimization and inlining across source files.
- SPARC: f77/f95
If specified, n may be 0, or 1.
Normally, the scope of the compiler's analysis is limited to each separate file on the command line. For example,
-O4's automatic inlining is limited to subprograms 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 concatenated into a single source file.
-xcrossfileis only effective when used with-O4or-O5.Cross-file inlining creates a possible source file interdependence that would not normally be there. If any file in a set of files compiled together with
-xcrossfileis changed, then all files must be recompiled to insure that the new code is properly inlined. See the discussion of inlining on page 67.The default, without
-xcrossfileon the command line, is-xcrossfile=0, and no cross-file optimizations are performed. To enable cross-file optimizations, specify-xcrossfile(equivalent to-xcrossfile=1).-xdepend
- SPARC: f77/f95
-xexplicitpar
- SPARC: f77/f95
-xF
Allow function-level reordering by the Sun WorkShop Analyzer.
- SPARC: f77/f95
Allow the reordering of functions (subprograms) in the core image using the compiler, the Analyzer and the linker. If you compile with the
-xFoption, then run the Analyzer, you can generate a map file that optimizes 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-Mmapfileoption. 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 Using Sun WorkShop and Analyzing Program Performance with Sun WorkShop for further information on the Analyzer.
-xhelp=h
Show summary help information on options or
READMEfile.
- SPARC: f77/f95
The h is either
readmeorflags.
-xhelp=readmeShow the onlineREADMEfile for this release of the compiler.-xhelp=flagsShow the compiler flags (options).
-xhelp=flagsis a synonym for-help.-xia[=v]
Enable interval arithmetic extensions and set a suitable floating-point environment.
- SPARC:f95
v can be one of either
widestneedorstrict. The default if not specified iswidestneed.Fortran 95 extensions for interval arithmetic calculations are detailed in the Interval Arithmetic Programming Reference. See also
-xinterval, page 103.The
-xiaflag is a macro that expands as follows
-xia or
-xia=widestneed-xinterval=widestneed-ftrap=%none-fns=no-fsimple=0 -xia=strict-xinterval=strict-ftrap=%none-fns=no-fsimple=0
:-xildoff
Turn off the Incremental Linker.
- SPARC: f77/f95
This forces the use of the standard linker,
ld.This option is the default if you do not use the
-goption. It is also the default if you use-Gor name any source file on the command line.Override this default by using the
-xildonoption.-xildon
Turn on the Incremental Linker.
- SPARC: f77/f95
Turn on the Incremental Linker and force the use of
ildin incremental mode.This option is the default if you use
-gand do not use-G, and no source files appear on the command line (just object files and/or libraries).Override this default by using the
-xildoffoption.See the section on
ildin the C User's Guide.-xinline=list
- SPARC: f77/f95
-xinterval[=v]
Enable interval arithmetic extensions.
- SPARC: f95
v can be one of either
no,widestneedorstrict. The default if not specified iswidestneed.
Fortran 95 extensions for interval arithmetic calculations are detailed in the Interval Arithmetic Programming Reference. See also
-xia, page 101.-xl[d]
Enable more VMS Fortran extensions.
- SPARC:f77
-xl:Enable the compiler to accept more VMS Fortran extensions. This is a macro that is translated to-vax=misalign, and provides the language features that are listed later in this description. See the description of-vax=, page 90.Although most VMS features are accepted automatically by
f77without any special options, you must use the-xloption for a few VMS extensions.In general, you need the
-xloption if a source statement can be interpreted as either a VMS feature or anf77orf95feature, and you want the VMS feature. In this case, the-xloption forces the compiler to interpret it the VMS way.This option enables the following VMS language features:
- Unformatted record size in words rather than bytes (
-xl)- VMS style logical file names (
-xl)- Quote (") character introducing octal constants (
-xl)- Backslash (\) as ordinary character within character constants (
-xl)- Nonstandard form of the
PARAMETERstatement (-xl)- Alignment of structures as in VMS. (
-xl)- Debugging lines as comment lines or Fortran statements (
-xld)Use
-xlto get VMS alignment if your program has some detailed knowledge of how VMS structures are implemented.Use
-xldto cause compilation of debugging comments (Dordin column one). Without the-xldoption, they remain comments only. (There is no space between-xlandd.)Programs that share structures with C routines should not use
-xl.See the Fortran Library Reference for information on the VMS libraries. See also the chapter on VMS language extensions in the Fortran 77 Language Reference that the
f77compiler automatically recognizes.-xlibmil
- SPARC: f77/f95
-xlibmopt
Use library of optimized math routines.
- SPARC: f77/f95
Use selected math routines optimized for speed. 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 significant.
xlic_lib=sunperf
Link with the Sun Performance Library.
- SPARC: f77/f95
For example:
f77 -o pgx -fast pgx.f -xlic_lib=sunperfAs with
-l, this option should appear on the command line after all source and object file names.This option must be used to link with the Sun Performance Library. (See the Sun Performance Library User's Guide.)
xlicinfo
Show license server information.
- SPARC: f77/f95
Use this option to return license information about the licensing system--in particular, the name of the license server and the user ID for each of the users who have licenses checked out.
Generally, with this option, no compilation takes place, and a license is not checked out. This option is normally used alone with no other options. However, if a conflicting option is used, then the last one on the command line prevails, and there is a warning.
-Xlist[x]
Produce listings and do global program checking (GPC).
- SPARC: f77/f95
Use this option to find potential programming bugs. It invokes an extra compiler pass to check for consistency in subprogram call arguments, common blocks, and parameters, across the global program. The option also generates a line-numbered listing of the source code, including a cross reference table. The error messages issued by the -
Xlistoptions are advisory warnings and do not prevent the program from being compiled and linked.
Note Be sure to correct all syntax errors in the source code before compiling with a-Xlistglobal program checking output. GPC can produce unpredictable reports when run on a source code with syntax errors.
Example: Check across routines for consistency:
demo%f95 -Xlist fil.fThe above example writes the following to the output file
fil.lst:
- A line-numbered source listing (default)
- Error messages (embedded in the listing) for inconsistencies across routines
- A cross reference table of the identifiers (default)
By default, the listings are written to the file
name.lst, wherenameis taken from the first listed source file on the command line.A number of sub-options provide further flexibility in the selection of actions. These are specified by suffixes to the main -
Xlistoption, as shown in the following table
Options
-Xlistc,-Xlistf,-Xlistflndir,-Xlisth,-Xlists, and-Xlistvn are not available withf95.See the Fortran Programming Guide chapter Program Analysis and Debugging for details.
-xloopinfo
- SPARC: f77/f95
-xmaxopt[=n]
Enable optimization pragma and set maximum optimization level.
- SPARC: f77/f95
n has the value 1 through 5 and corresponds to the optimization levels of
-O1through-O5. If not specified, the compiler uses 5.This option enables the
C$PRAGMASUNOPT=n directive (see page 30) when it appears in the source input. Without this option, the compiler treats these lines as comments.If such a pragma directive appears with an optimization level greater than the maximum level on the
-xmaxoptflag, the compiler uses-xmaxoptlevel.-xmemalign[=<a><b>]
Specify maximum assumed memory alignment and behavior of misaligned data accesses.
- SPARC: f77/f95
For memory accesses where the alignment is determinable at compile time, the compiler will generate the appropriate laod/store instruction sequence for that data alignment.
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
-xmemalignflag allows the user to specify the maximum memory alignment of data to be assumed by the compiler for those indeterminable situations. It also specifies the error behavior at runtime when a misaligned memory access does take place.The value specified consists of two parts: a numeric alignment value, <a>, and an alphabetic behavior flag, <b>.
Allowed values for alignment, <a>, are:
1Assume at most 1-byte alignment.2Assume at most 2-byte alignment.4Assume at most 4-byte alignment.8Assume at most 8-byte alignment.16Assume at most 16-byte alignment.Allowed values for error behavior on accessing misaligned data, <b>, are:
iInterpret access and continue executionsRaise signal SIGBUSfRaise signal SIGBUS only for alignments less or equal to 4The defaults without
-xmemalignspecified are:
4sfor-xarch=generic,v7,v8,v8a,v8plus,v8plusa8sfor-xarch=v9,v9afor C and C++8ffor-xarch=v9,v9afor FortranThe default for
-xmemalignappearing without a value is1ifor all platforms.The
-dalign(page 52) and-misalign(page 71) options are macros:
-dalignis a macro for:-xmemalign=8s -aligncommon=8is a macro for:
-misalign-xmemalign=1i -aligncommon=1-xnolib
- SPARC: f77/f95
-xnolibmil
- SPARC: f77/f95
-xnolibmopt
- SPARC: f77/f95
Use with
-fastto override linking the optimized math library:-xOn
- SPARC: f77/f95
-xpad
- SPARC:f77
-xparallel
- SPARC: f77/f95
-xpg
- SPARC: f77/f95
xpp={fpp|cpp}
Select source file preprocessor.
- SPARC: f77/f95
The compilers use
fpp(1) to preprocess.For.f95source files. This preprocessor is appropriate for Fortran. Previous versions used the standard C preprocessorcpp. To selectcpp, specify-xpp=cpp.-xprefetch[=v]
Enable prefetch instructions on platforms that support prefetch, such as UltraSPARC II.
- SPARC: f77/f95
Specifying
-xprefetch=yesenables the compiler to insert prefetch instructions whenever appropriate. This may result in a performance improvement on UltraSPARC II processors (-xarch=v8plus,v9plusa,v9, orv9a).v, if it appears, must be one or a comma-separated list of the following sub-options:
If not specified, the compiler assumes
-xprefetch=no.-xprefetchspecified by itself defaults to-xprefetch=yes.See page 31 for a description of the Fortran
PREFETCHdirectives.-xprofile=p
Collect or optimize with runtime profiling data.
- SPARC: f77/f95
p must be one of
collect[:nm],use[:nm], ortcov. Optimization level must be -O2or greater.
- Collect and save execution frequency data for later use by the optimizer with
-xprofile=use. The compiler generates code to measure statement execution frequency.- The nm is the name of the program that is being analyzed. This name is optional. If nm is not specified,
a.outis assumed to be the name of the executable.- At runtime a program compiled with
-xprofile=collect:nm will create the subdirectory nm.profileto hold the runtime feedback information. Data is written to the filefeedbackin this subdirectory. If you run the program several times, the execution frequency data accumulates in thefeedbackfile; that is, output from prior runs is not lost.
- 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 execution frequency data previously generated and saved in the
feedbackfiles written by a previous execution of the program compiled with-xprofile=collect.- The source files and other compiler options must be exactly the same as used for the compilation that created the compiled program that generated the
feedbackfile. If compiled with-xprofile=collect:nm, the same program name nm must appear in the optimizing compilation:-xprofile=use:nm.
- Basic block coverage analysis using "new" style
tcov.- Code instrumentation is similar to that of
-a, but.dfiles are no longer generated for each source file. Instead, a single file is generated, whose name is based on the name of the final executable. For example, ifstuffis the executable file, thenstuff.profile/tcovdis the data file.- When running
tcov, you must pass it the-xoption to make it use the new style of data. If not,tcovuses the old.dfiles, if any, by default for data, and produces unexpected output.- Unlike
-a, theTCOVDIRenvironment variable has no effect at compile-time. However, its value is used at program runtime to identify where to create the profile subdirectory.- See the
tcov(1) man page, the Performance Profiling chapter of the Fortran Programming Guide, and the Analyzing Program Performance with Sun WorkShop manual for more details.- Note: The report produced by
tcovcan be unreliable if there is inlining of subprograms due to-O4or-inline. Coverage of calls to routines that have been inlined are not recorded.-xrecursive
Allow routines without
RECURSIVEattribute call themselves recursively.
- SPARC:f95
Only subprograms defined with the
RECURSIVEattribute can call themselves recursively, unless they are compiled with-xrecursive.However, compiling with
-xrecursivemay cause performance degradations. Also consider using-stackvarwith-xrecursivesince-xrecursivedoes not by itself allocate local variables on the memory stack.-xreduction
- SPARC: f77/f95
-xregs=r
- SPARC: f77/f95
r is a comma-separated list that consists of one or more of the following:
Where the
%is shown, it is a required character.
appl: Allow using the application registers.
- On SPARC systems, certain registers are described as application registers. Using these registers can increase performance because fewer load and store instructions are needed. However, such use can conflict with some old library programs written in assembly code.
- The set of application registers depends on the SPARC platform:
-xarch=v8orv8a-- registers%g2,%g3, and%g4-xarch=v8orv8a-- registers%g2,%g3, and%g4-xarch=v8plusorv8plusa-- registers%g2,%g3, and%g4-xarch=v9orv9a-- registers%g2and%g3no%appl: Do not use theapplregisters.float: Allow using the floating-point registers as specified in the SPARC ABI. You can use these registers even if the program contains no floating-point code.no%float: Do not use the floating-point registers. With this option, a source program cannot contain any floating-point code.The default is:
-xregs=appl,float.xs
Allow debugging by
dbxwithout object (.o) files .
- SPARC: f77/f95
With
-xs, if you move executables to another directory, then you can usedbxand ignore the object (.o) files. Use this option when you cannot keep the.ofiles.
- The compiler passes
-sto the assembler and then the linker places all symbol tables fordbxin the executable file.- This way of handling symbol tables is the older way. It is sometimes called no auto-read
- The linker links more slowly, and
dbxinitializes more slowly.Without
-xs, if you move the executables, you must move both the source files and the object (.o) files, or set the path with either the dbxpathmaporusecommand.
- This way of handling symbol tables is the newer and default way of loading symbol tables. It is sometimes called auto-read.
- The symbol tables are distributed in the
.ofiles so thatdbxloads the symbol table information only if and when it is needed. Hence, the linker links faster, anddbxinitializes faster.-xsafe=mem
- SPARC: f77/f95
Using this option allows the compiler to assume no memory-based traps occur. It grants permission to use the speculative load instruction on V9 machines. It is only effective if
-O5and-xarch=v8plusare also specified.-xsb
- SPARC: f77/f95
-xsbfast
- SPARC: f77/f95
-xspace
Do not allow optimizations to increase code size.
- SPARC: f77/f95
Do no optimizations that increase the code size.
Example: Do not unroll or parallelize loops if it increases code size.
-xtarget=t
Specify target platform for optimization.
- SPARC: f77/f95
Specify the target platform for the instruction set and optimization.
t must be one of:
native,generic, platform-name.The
-xtargetoption permits a quick and easy specification of the-xarch,-xchip, and-xcachecombinations that occur on real platforms. The only meaning of-xtargetis in its expansion.The performance of some programs may benefit by providing the compiler with an accurate description of the target computer hardware. When program performance is critical, the proper specification of the target hardware could be very important. This is especially true when running on the newer SPARC processors. However, for most programs and older SPARC processors, the performance gain is negligible and a
genericspecification is sufficient.
native: Optimize performance for the host platform.
- The compiler generates code optimized for the host platform. It determines the available architecture, chip, and cache properties of the machine on which the compiler is running.
generic: Get the best performance for generic architecture, chip, and cache.
- The compiler expands
-xtarget=genericto:-xarch=generic-xchip=generic-xcache=generic- This is the default value.
platform-name: Get the best performance for the specified platform.
- Appendix D gives a complete list of current SPARC platform names accepted by the compilers. For example,
-xtarget=ultra2i-xtime
- SPARC: f77/f95
xtypemap=spec
Specify default data mappings.
- SPARC: f77/f95
This option provides a flexible way to specify the byte sizes for default data types. Use of this option is preferred over
-dbland-r8, and applies to both default-size variables and constants.The specification string spec may contain any or all of the following in a comma-delimited list:
real:sizedouble:sizeinteger:sizeThe accepted data size values are:
64,128, forrealanddouble;32,64, andmixedforinteger. For example:
-xtypemap=real:64,double:128,integer:64This option applies to all variables declared with default specifications (without explicit byte sizes), as in
REALXYZ(resulting in a 64-bitXYZ). Also, all single-precisionREALconstants are promoted toREAL*8.The allowable combinations on each platform are:
real:32real:64double:64double:128integer:32integer:64integer:mixed(f77 only)The
integer:mixedmapping specifies 8-byte data but only 4-byte arithmetic, and is only available withf77. Preferred isinteger:64.The
f77flags-dbland-r8options have their-xtypemapequivalents:
-dblsame as:-xtypemap=real:64,double:128,integer:64-r8same as:-xtypemap=real:64,double:128,integer:mixedThere are two additional possibilities on SPARC:
-xtypemap=real:64,double:64,integer:mixed-xtypemap=real:64,double:64,integer:64which map both default
REALandDOUBLEto 8 bytes, and may be preferable over the use of-dblor-r8because they do not promoteDOUBLEPRECISIONtoQUADPRECISION.Note that
INTEGERandLOGICALare treated the same, andCOMPLEXis mapped as twoREALs. Also,DOUBLECOMPLEXwill be treated the wayDOUBLEis mapped.-xunroll=n
- SPARC: f77/f95
-xvector[={yes|no}]
Enable automatic calls to the SPARC vector library functions.
- SPARC: f77/f95
With
-xvector=yes, the compiler is permitted to transform certain math library calls within DO loops into single calls to the equivalent vectorized library routine whenever possible. This could result in a performance improvement for loops with large loop counts.The compiler defaults to
-xvector=no.Specifying-xvectorby itself defaults to-xvector=yes.This option also triggers
-depend. (Follow-xvectorwith-nodependon the command line to cancel the dependency analysis.)The compiler will automatically notify the linker to include the
libmvecandlibclibraries in the load step if-xvectorappears. However, to compile and link in separate steps requires specifying-xvectoron the link step as well to correctly select these necessary libraries.-xvpara
- SPARC:f77
-Zlp
Compile for loop performance profiling by
looptool.
- SPARC: f77/f95
Prepare object files for the loop profiler,
looptool. Thelooptool(1) utility can then be run to generate loop statistics about the program.If you compile and link in separate steps, and you compile with
-Zlp, then be sure to link with-Zlp.If you compile one subprogram with
-Zlp, you need not compile all the subprograms of that program with-Zlp. However, you receive the loop information only for the files compiled with-Zlp, and no indication that the program includes other files.Refer to Analyzing Program Performance With Sun WorkShop for more information.
-ztext
Generate only pure libraries with no relocations.
- SPARC: f77/f95
Do not make the library if relocations remain.
The general purpose of
-ztextis verify that a generated library is pure text; instructions are all position-independent code. Therefore, it is generally used with both-Gand-pic.With
-ztext, ifldfinds 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,ldbuilds 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.Example: Make library from both source and object files:
demo%f77 -G -pic -ztext -o MyLib -hMyLib a.f b.f x.o y.oAn alternate use is to ask if the code is position-independent already: compile without
-pic, but ask if it is pure text.Example: Ask if it is pure text already--even without
-pic:
demo%f77 -G -ztext -o MyLib -hMyLib a.f b.f x.o y.oIf you compile with
-ztextandlddoes not build the library, then you can recompile without-ztext, andldwill build the library. The failure to build with-ztextmeans that one or more components of the library cannot be shared; however, maybe some of the other components can be shared. This raises questions of performance that are best left to you, the programmer.
|
Sun Microsystems, Inc. Copyright information. All rights reserved. Feedback |
Library | Contents | Previous | Next | Index |