HP UX Fortran Software manual Options for controlling the Linker

Page 15

Table 5 Options for controlling code generation (continued)

Option

Function

-g

Generate debugging information needed by the debugger.

 

This option is compatible with optimization levels 0, 1, and

 

2. If you compile and link separately and specify -gon

 

the command line, you must also specify it on the link line.

 

nl

 

For information about using this option to prepare programs

 

for the debugger, see “Using the HP WDB debugger”

 

(page 76).

+[no]gprof

Prepare [do not prepare] object files for profiling with

 

gprof; see the gprof(1) manpage. The default is

 

+nogprof. If you compile and link separately and specify

 

+gprof on the command line, you must also specify it on

 

the link line.

 

nl

 

For information about using this option to profile programs

 

with gprof, see “gprof” (page 89).

+k

Generate code for programs that reference a very large

 

number of shared data items. The linker will issue a

 

diagnostic message in the rare cases when this option is

 

needed.

 

NOTE: This option is valid only on the PA-RISC systems.

+pic={shortlongno}

Generate Position Independent Code (PIC) with short

 

displacements (+pic=short) or long displacements

 

(+pic=long) for use in shared libraries. The default is

 

+pic=no.

 

nl

 

For information about using this option when creating

 

shared libraries, see “Compiling with +pic” (page 59).

+[no]prof

Prepare [do not prepare] object files for profiling with

 

prof; see the prof(1) manpage. The default is +noprof.

 

If you compile and link separately and specify +prof on

 

the command line, you must also specify it on the link line.

 

nl

 

For information about using this option to profile programs

 

with prof, see “gprof” (page 89).

+[no]save

Save [do not save] all local variables in all subprograms.

 

nl

 

For information about using this option when porting, see

 

“Uninitialized variables” (page 144).

Linker

The linker (ld) builds an executable program from the object files produced by the back end and the libraries. An important group of options for controlling the linker specify what libraries the linker should search and where it should search for them. Other options control the type of information that the linker should or should not include in its output file, such as symbol table information used by the debugger or marks identifying the output file as shareable or demand loadable. Table 1-6 lists and briefly describes options that control the linker.

NOTE: If you use the f90 command to compile and link on separate command lines and compile with any of the options (except -c) listed in Table 1-6, you must specify the same options on the link line as well.

Table 6 Options for controlling the Linker

Option

Function

-c

Suppress linking; produce object files only.

+[no]demand_load

Mark [do not mark] the output file from the linker demand

 

load. If you compile and link separately and specify

Linker 15

Image 15
Contents Abstract HP Fortran Programmer GuidePage Contents Performance and optimization Using the on statementControlling data storage DebuggingMigrating to HP Fortran 131 Using Fortran directives 123Writing HP-UX applications 107 Calling C routines from HP Fortran 110Fortran 2003 Features 151 Porting to HP Fortran 141Documentation Feedback 153 Glossary 154 Index 159 HP secure development lifecycle An overview of HP Fortran HP Fortran compiler environmentAn overview of HP Fortran +preinclude= file DriverOptions for controlling the f90 driver +dryrunOptions for controlling the C preprocessor PreprocessorOptions for controlling the front end Front-end+moddir=directory Options for controlling optimization Back-end+DAmodel Options for controlling code generation+Onooptimization OptimizationOptions for controlling the Linker Linker+FPflags LdirectoryOoutfile Tools HP-UX operating systemWl ,options $ f90 hello.f90 Compiling with the f90 commandF90 command syntax Compiling and linkingExample 2 hello.f90 Command-line optionsF90 command syntax Command-line options+save Command-line options by categoryCommonly-used options Commonly-used optionsOptions listed by category Option descriptionsExample 3 Example Do I+1, N+allowunaligned Boption Data type sizes and +autodbl414164 +autodbl +autodbl4+nocfc +cpp=default+charlit77 +check=boundsDatamodelare Name=def+DAmodel +DDdatamodelNative BlendedItanium Itanium2Values for the +FP option Signals recognized by the +fpexception option Gformat77+hugecommon Example 4 % f90 +hugecommon=results pcvals.f90 +initheapinteger=ival /usr/include directory +noimplicitnone+indirectcommonlist=file +initheapcomplex=rvalival+nolibs +io77Ipo +nocheckuf+noobjdebug Levels of optimizationRequires concurrent use of the +Oprofile=use option With different values of optlevel+pa1 +realconstant=single +demandload option. The default is +nodemandload+nodemandload the default +r8End.o Tx,pathTp,/usr/ccs/lbin/cpp F90comWx,arg1,arg2,...,argN Bhidden =symbol ,symbol Symbol binding optionsBdefault=symbol,symbol Bextern =symbol ,symbolUsing optimization options Reviewing general optimization optionsF90 +O3 +Osize myprog.f90 +Oautopar and omit +Oparallel +Oconservative+Onoall +OnoautoparF90 +O3 +Onomoveflops +Ofltacc myprog.f90 Fine-tuning optimization options+Onocxlimitedrange Default is +OnocxlimitedrangeDefault is +Odataprefetch +Ocachepadcommon option+Onofailsafe +Onofenvaccess+Onofastaccess +OnoentryschedOptimizations performed by +Onofltacc +Onoinline=function1,function2 +Oinlinebudget=n +Oinlinebudget enables+Onoinline +OnoinlinefilenameMillicode versions of intrinsic functions Values for the +Oinlinebudget option+Onoloopunrolljam +inlinelevel num+Onoloopunroll=factor +Oloopunroll=4+Onopipeline Default is+Onoparmsoverlap+Oparallelintrinsics +OnoparmsoverlapFor +Oprofile=collectarc,stride Default is +Onopromoteindirectcalls+Onorecovery Default is +Oshortdata=8Filenames recognized by f90 FilenamesLinking with f90 vs. ld Linking HP Fortran programs$ f90 -c hello.f90 # compile Libraries linked by default on PA-RISCLibraries linked by default on Itanium Linking to librariesLinking HP Fortran 90 routines Linking to nondefault librariesAdditional HP Fortran libraries Linking to shared librariesOpt/fortran90/lib/pa2064/ -lF90 -lisamstub $ f90 -Wl,-a,archive prog.f90 -lm Special-purpose compilationsCompiling programs with modules Library search rulesSpecial-purpose compilations Example 7 Example 2-3 code.f90 ExamplesExample Example 6 Example 2-2 main.f90$ dostats Compiling with makeExample 8 Example 2-4 data.f90 $ f90 -o dostats data.f90 code.f90 main.f90$ make Compiling for different PA-RISC machinesManaging .mod files Example 9 Example 2-5 makefileCompiling with +pic Creating shared librariesLinking with -b Using the C preprocessor$ f90 +cpp=yes -D Debug cppdirect.f90 Using the C preprocessorProcessing cpp directives Example 13 Example 2-9 cppdirect.f90Creating demand-loadable executables Creating shared executablesSaving the cpp output file HP Fortran environment variables Compiling in 64-bit modeUsing environment variables $ f90 +noshared prog.f90$ f90 +list hello.f90 F90ROOT environment variableSTF90COM64 environment variable HPF90OPTS environment variableMpnumberofthreads environment variable Floating installationFloating installation Lpath environment variableAlternate-path/opt/fortran90.3.6.1 Setting up floating installationDisabling implicit typing Controlling data storageDisabling implicit typing Automatic and static variablesControlling data storage ContainsIncreasing the precision of constants Increasing default data sizes Increasing default data sizesIncreasing default data sizes Sharing data among programs Usr/lib/libpthread.slWhich creates multiple threads Sharing data among programs $ gotosleepModules vs. common blocks $ wakeupIm up Modules vs. common blocks Using the HP WDB debugger DebuggingStripping debugging information Floating-point exceptions Signals recognized by +fpexceptionSignal Handling runtime exceptionsBus error exception Floating-point exceptions= 1.0/0.0 Segmentation violation exception Illegal instruction exceptionBad argument exception Using debugging linesExceptions handled by the on statement Using the on statementExceptions handled by the on statement On REAL8 DIV 0 Call divzerotrapActions specified by on On Double Precision DIV 0 Call divzerotrapExceptions handled by the on statement Example 15 Example5-2 ignore.f90 Ignoring errorsTerminating program execution Example 14 Example5-1 abort.f90On Double Precision Overflow Call trap Calling a trap procedureTrapping floating-point exceptions Trapping integer overflow exceptionsTrapping +Ctrl-C trap interrupts Allowing core dumpsExample 17 Example5-4 callitrap.f90 On Real Overflow Ignore Example 18 Example 5-5 allowcore.f90HP Caliper Using profilersUsing profilers Performance and optimizationProgramprogramarguments Comparing Program PerformanceOpt/ansic/bin/cc -Aa +O3 -o program +Oprofile=collect Program.c$ gprof prog gprof.out Using Options to Control Data CollectionGprof Specifying PBO file names and locations$ f90 +O4 file.f90 Using options to control optimizationUsing +O to set optimization levels Prof+O4 Using the optimization options+O2, -O +O3Packaged optimization options Fine-tuning optimization options$ f90 +02 +Oaggressive +Osize prog.f90 $ f90 +O4 +Oaggressive +Ofltacc prog.f90+Ofltacc=relaxed Is +Onofastaccess at+Ofastaccess at level +O2+Ofltacc=relaxed . This Fast+Onoinitcheck +Onoloopunroll=n +Oinlinelevel num+Onolibcalls +Olibcalls+Opipeline +Onoparminit+Orecovery +Ovectorize option on +Oregreassoc+Onoreturn +Oshortdata=8Conservative vs. aggressive optimization +Onowholeprogrammode+Owholeprogrammode F90 +O3 +Oparallel -c x.f90 y.f90 F90 +O3 -c z.f90 Conservative, aggressive, and default optimizationsParallelizing HP Fortran programs Compiling for parallel executionCalling routines with side effects parallellization Performance and parallelizationProfiling parallelized programs Conditions inhibiting loop parallelizationData dependences Indeterminate iteration countsVector routines called by +Ovectorize Using the +Ovectorize optionVectorization F90 +O3 +Ovectorize prog.f90Vecdmultadd Controlling vectorization locallySaxpy SdotIndustry-wide standard Vectorization Calling Blas library routinesExample 19 Example 6-1 axpy.f90 REAL, External sdotControlling code generation for performance Example 20 Example 7-1 getargs.f90 Accessing command-line argumentsWriting HP-UX applications $ fprog arg1 another argCalling HP-UX system and library routines Using HP-UX file I/OStream I/O using Fstream Performing I/O using HP-UX system callsObtaining an HP-UX file descriptor Using HP-UX file I/OCalling C routines from HP Fortran Data typesData type correspondence for HP Fortran and C Size differences after compiling with +autodbl Unsigned integersLogicals Size differences between HP Fortran and C data typesComplex numbers Complex sqrcomplexCOMPLEX cmxvalExample 21 Example 8-1 passcomplex.f90 Example 22 Example 8-2 sqrcomplex.c Argument-passing conventionsDerived types PointersCall foo%REFptr, %REFiarray, %VALi Integer ptr INTEGER, DIMENSION100 iarrayCase sensitivity Void fooint *ptr, int iarray100, intCase sensitivity Example 23 Example 8-3 sortem.c$HP$ Alias bubblesort = BubbleSort%REF,%VAL Example 24 Example 8-4 testsort.f90Int Memory layout of a two-dimensional array in Fortran and CREAL, DIMENSION2,3,4 ArraysExample 26 Example 8-6 getarray.c Example 25 Example 8-5 passarray.f90Passing a string StringsNull-terminated string Fortran hidden length argumentStrings Following are example C and Fortran programsFile handling Example 27 Example 8-7 passchars.f90Example 28 Example 8-8 getstring.c File handling Example 29 Example 8-9 fnumtest.f90Extern int globals100 Sharing dataInt somedata Extern int somedataHP Fortran directives Using Fortran directivesUsing HP Fortran directives Directive syntaxName SyntaxDescription and restrictions $HP$ Alias name = external-name arg-pass-mode-listLocal and global usage Case sensitivityArgument-passing conventions Example 32 Example 9-2 passstr.f90 StringsFor more information Example 31 Example 9-1 prstr.cListing file Disables the inclusion of source lines in the listing fileSpecified on the command line Example 33 ExampleVendor Directive Cray Compatibility directivesControlling vectorization Compatibility directives recognized by HP FortranCompatibility directives Controlling parallelizationControlling dependence checks Controlling checks for side effectsUsing Fortran directives Compiler limits Command-line options not supportedMigrating to HP Fortran Incompatibilities with HP FortranDouble Precision x = Format field widthsFloating-point constants Intrinsic functionsData types and constants Procedure calls and definitionsKEY= Input/outputDirectives Foo**REALbar, 8 ! foo**barMiscellaneous Migration issuesSource code issues Migration issuesHP Fortran 77 directives supported by f90 options DirectivesF77 options supported by f90 Command-line option issuesIntrinsic functions Conflicting intrinsics and libU77 routine namesData file issues Object code issuesHP-supplied migration tools Approaches to migration$ fid +800 file.f $ fid +es program.f END structure definition Porting to HP FortranCompatibility extensions Compatibility statements+Oparallel or Compiler directivesCompatibility directives Pointer Cray-style+Oparallel or +Ovectorize Intrinsic proceduresNonstandard intrinsic procedures in HP Fortran Directive prefixes recognized by HP FortranUninitialized variables Using porting options$ f90 testloop.f90 Using porting optionsLarge word size One-trip do loopsName conflicts Example 34 Example 11-1 clash.f90External int1 Source formats Names with appended underscoresPorting from Tru64 to HP Fortran Escape sequences+cfc Porting from Tru64 to HP Fortran EnhancementsNew options Nof66alternate for +noonetrip+nopadsrc Altparam Check noboundsoptions for example, -nocheckboundsMiscellaneous enhancements Fortran 2003 FeaturesInteroperability with C Input/output enhancementsObject orientation features Fortran 2003 FeaturesData enhancements 153 Documentation FeedbackGlossary Glossary155 So on. See also row-major orderAlso filename extension 157 Memory faultSee ttv Symbols Index159