Omni OpenMP Fortran 77 Compiler

NAME
omf77 - Multi-configuration Omni OpenMP Fortran 77 compiler

SYNOPSIS
       omf77 [driver-options] [compiler-options] filename ...
DESCRIPTION
omf77 is a program to compile OpenMP programs written in Fortran77. omf77 processes input files through one or more of with stages: compilation, assembly, and linking, with preprocessing as a option. This compiler is a kind of "f2c" (Fortran to C) program, which use the native C compiler as the backend. This man page contains descriptions for only omf77-specific aspects of the compiler, though it also contains summaries of some general-purpose options. omf77 is a translator which translate Fortran 77 program into a C program. For a fuller explanation of the compile options, see options of the backend C compiler which is specified in the installation. Fortran source files use the suffix '.f' or '.F': Fortran 77 programs to be preprocessed by cpp use the suffix '.F'.

driver-options:

-help
Display help.
-omniVersion
Display Omni version.
-omniconfig=name
Specify a name of configuration, listed below (Omni configuration and platform dependent) as examples:
stackthreads
shmem
scash
spin-pthread
....
If not specified, default configuration (depend on Omni configuration and platform) is used.
-omnicc=backend-cc
Specify a command name of backend C compiler. If not specified, default C compiler (depend on Omni configuration and platform) is used.

compiler-options:

-c
Compile or assemble the source files, but do not link. The compiler output is an object file corresponding to each source file.
-Dmacro
Define macro macro with the string `1' as its definition.
-Dmacro=defn
Define macro macro as defn.
-g
Produce debugging information.
-Idir
Append directory dir to the list of directories searched for include files.
-Ldir
Add directory dir to the list of directories to be searched for `-l'.
-llibrary
Use the library named library when linking.
-O
Optimize.
-o file
Place output in file.
-S
Stop after the stage of compilation proper; do not assemble. The output is an assembler code file for each non-assembler input file specified.
-Umacro
Undefine macro macro.
-x
Stop after parsing leaving the intermediate file.
-X
Stop before calling the backend compiler. Leave the intermediate C file after OpenMP transformation.
-t
Leave intermediate file "tmp.x", "tmp.xx", "tmp.c".
-v
Verbose mode. Echo the executed commands.
-omp
Ignore OpenMP pragma.
-i#
INTEGER (integer type declaration without size and implicitly declared integer type) will be treated as INTEGER*#. '#' must be one of 2, 4, and 8. The default is 4. 8 is avairable only when a backend C compiler supports 64 bit integer.
-r#
REAL (single precision real type and implicitly declared real type) will be treated as REAL*#. '#' must be 4 or 8. The default is 4.
-d#
DOUBLE PRECISION (double precision real type) will be treated as REAL*#. '#' must be 4 or 8. The default is 8.
-m#
(If configured with '--enable-mreal') Specify a precision of MULTIPLE PRECISION and/or REAL*16 type with '#' in bits. If '#' is less than 52, it will be raised to 52.
-u
Treat variables decalared implicitly as error.
-checkNaN
Generate floating point exception checking code.
-coredumpNaN
Generate floating point exception checking code and dumping core when the exception occur.
-pedanticEquivalence
Not allow to be equivalent character variables to other types by EQUIVALENCE statement.
-pedanticDataType
Not allow to initialize non-character variables with characters by DATA statement.
-pedanticCommon
Not allow non-standard initialization in common block.
-pedanticAll
Imply all other -pedantic* options.
-doubleAlign
If alignment of double is NOT sizeof double, treat alignment of double is sizeof double.
-disableQCZFolding
Disable complex and quad/multiple precision real (If configured with '--enable-mreal') constant folding for (slight) precision improvement.
-disableQOpt
(If configured with '--enable-mreal') Disable quad/multiple precision real specific optimization.

ENVIRONMENT VARIABLES
OMPF77_BYTE_SWAP_IO
If set (as any value) at execution of a program generated by omf77, I/O runtime routines swap the byte oredr of data for direct access I/O mode.

In addition to OpenMP standard environment variables Omni environment variables controls the parallel execution. See Omni Environment Variables .

FILES
  • bin/omf77 -- Omni f77 compile driver
  • lib/openmp/libexec/F-front -- Fortran77 front end (F77 to Xobj translator)
  • lib/openmp/libexec/F-back -- Xobj to C translator (available only when Omni was configured with '--enable-jexcBinary')
  • lib/openmp/java/exc.jar -- Java exc toolkit jar file
  • lib/openmp/lib/libompc.a -- Omni OpenMP runtime library
  • lib/openmp/lib/libtlog.a -- Omni OpenMP profile library
  • lib/openmp/lib/libf2c.a -- Omni OpenMP fortran runtime library
  • lib/openmp/lib/ompcf77main.o -- start off routine
  • lib/openmp/lib/ompcf77main_omp.o -- Omni OpenMP start off routine
  • lib/openmp/examples/ -- OpenMP example source code (C, Fortran)
  • lib/openmp/lib/include/omniBackend.h -- Omni header file for backend C compiler, for some runtime functions
  • include/omniConfig.h -- configuration information header of compilation time of Omni itself

Unsupported Features, Known Problem, BUGS and Implementation specifications
  • Gcc-2.9.6 is not supported. Gcc-2.9.6 is default compiler of RedHat-7.0/7.1 x86 package. Please install gcc-3.0 or gcc-2.9.5 at this platform.
  • Dummy procedures must be declared by the "external" statement.
  • Local variables in the main program are allocated statically without the "save" statement.
  • ASSIGN statement works only for assignment GOTO, not fot FORMAT statement label and variable GOTO.
  • The assignment GOTO without the list of statement labels is not supported.
  • Cray pointer extension is supported but doesn't work for CHARACTER variable/array. And MALLOC, FREE are not implemented.
  • In DATA statement, uninitialized area of character variable is initialized by ascii SPC (0x20), not NUL (0x00). This is compatible to many f77 implementation, but incompatible to f2c.
  • Using a local adjustable array as a dummy argument of the ENTRY statement is treated as an error.
  • Linking of a common block that has different length in between separated source files depends on backend C compiler. Some linker might be warning as incompatible length symbol, or treat it as an error.
  • These features were not fully tested:
    • String(character)s, especially copying, comparison, and substring.
    • Direct access I/O mode.
    • Cray pointer extension.
  • Dynamic adjustment of the number of threads is not supported.
  • Nested parallelism is partially supported. As long as idle threads are available, the threads are used to execute nested parallel regions.
  • The threadprivate commons or variables of non-master threads is not initialized properly. Use "copyin" clause to initialize them explicitly.
  • The named threadprivate variables in "copyin" clause is not supported yet.
  • 64 bit platforms are supported. For more detail of Omni 64 bit environment, See Omni 64 bit environment status .
  • If Omni is configured with '--enable-mreal', REAL*16 and MULTIPLE PRECISION type are supported. For more detail of Omni multiple precision real support, See omf77 multiple precision real support .