Omni OpenMP C Compiler

NAME
omcc - Multi-configuration Omni OpenMP C compiler

SYNOPSIS
       omcc [driver-options] [compiler-options] filename ...
DESCRIPTION
omcc is a program to compile OpenMP programs written in C. omcc processes input files through one or more of four stages: preprocessing, compilation, assembly, and linking. This man page contains descriptions for only omcc-specific aspects of the compiler, though it also contains summaries of some general-purpose options. For a fuller explanation of the compile options, see options of the backend compiler which is specified in the installation. C source files use the suffix '.c'.

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.

PRE-DEFINED C PREPROCESSOR MACROS
omcc defines various C preprocessor macros automatically, depend on the configuration specfied by -omniconfig option.
    __OMNI_CPU_ARCH__
    ARCH: I386, MIPS, SPARC, ALPHA ...
    __OMNI_OS_SYSTEM__
    SYSTEM: LINUX, SOLARIS, IRIX ...
    __OMNI_SPIN_LOCK__
    Defined if the configuration matches 'spin-*'.
    __OMNI_MUTEX_LOCK__
    Defined if the configuration matches 'mutex-*'.
    __OMNI_PTHREAD__
    Defined if the configuration matches '*-pthread'.
    __OMNI_SOLARIS_THREAD__
    Defined if the configuration matches '*-solaris'.
    __OMNI_SPROC__
    Defined if the configuration matches '*-sproc'.
    __OMNI_SHMEM__
    Defined if the configuration is 'shmem'.
    __OMNI_SCASH__
    Defined if the configuration is 'scash'.
    __OMNI_STACKTHREADS__
    Defined if the configuration is 'stackthreads'.

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

FILES
  • bin/omcc -- Omni C compile driver
  • lib/openmp/libexec/C-front -- C front end (C to Xobj translator)
  • lib/openmp/libexec/C-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/ompc_main.o -- Omni OpenMP start off routine
  • lib/openmp/lib/include/omp.h -- OpenMP standard include file
  • lib/openmp/lib/include/tlog.h -- Omni OpenMP profile header file
  • lib/openmp/lib/include/stdarg.h -- stdarg.h for Omni OpenMP
  • lib/openmp/examples/ -- OpenMP example source code (C, Fortran)
  • include/omniConfig.h -- configuration information header of compilation time of Omni itself

Unsupported Features and Known BUGS
  • 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 variables of non-master threads is not initialized properly. Use "copyin" clause to initialize them explicitly.
  • The semantics for const-qualified variables in OpenMP is not fully implemented.
  • "#file ..." directives are not recognized.
  • 64 bit platforms are supported as a beta state. May be not fully functional yet. For more detail of Omni 64 bit environment, See Omni 64 bit environment status .