OCC21(1)

NAME
occ21 - KRoC occam compiler

SYNOPSIS
occ21 [OPTION]... FILE

DESCRIPTION

Compiles the named occam source FILE, generating extended transputer byte-code (ETC) output. Users need not run this command directly -- the kroc command will invoke the compiler with the right options. Compiler options can be added through the use of the --oc-opts flag to kroc.

OPTIONS

The options are divided into various categories: standard, all, and hidden. The options given in HIDDEN OPTIONS are largely uninteresting to users, comprised of specific code-generation, language and debugging options.

STANDARD OPTIONS

-d  (REDUNDANT) include minimum debugging data in TCOFF records

-h  compile in HALT error-mode. in this mode, a run-time error will cause the run-time system to exit.

-s  compile in STOP error-mode. in this mode, a run-time error will cause the single process that generated the error to terminate, leaving other processes running.

-x  universal error mode (not currently supported).

-help
    display a full help page (standard options and full options).

-i  show compiler version.

-o file
    specify file as output file.

-p file
    specify file as map file name.

-v  disable separate vector-space.

-wall
    enable all warnings.

-y  disable library I/O.

ALL OPTIONS

-a  disable alias checking.

-alpha
    alpha revision of chip (unsupported).

-axp
    target to DEC Alpha AXP (unsupported).

-b  display brief error messages.

-be generate alternate-endian constants.

-c  check only.

-code size
    set output code-buffer size to size k-bytes.

-def name[=val]
    define pre-processor value name with optional value val.

-e  disable compiler libraries.

-etc
    target to ETC code.

-g  sequential code insertion (unsupported).

-gamma
    gamma revision of chip (unsupported).

-gammae
    gamma-E revision of chip (unsupported).

-init
    enable INITIAL declarations.

-k  disable range checking.

-mobiles
    enable mobile data types and mobile channel types.

-mpt
    enable mobile process types.

-msf
    enable mobile size-field (needed for user-defined channels).

-n  disable usage checking.

-na disable run-time ASSERT checks.

-ndm
    disable dynamic memory support.

-npc
    disable placed-channel support.

-nwca
    disable warnings on CHAN ANY.

-nwgy
    disable warnings on GUY constructs.

-nwp
    disable unused parameter warnings.

-nwu
    disable unused name warnings.

-pg enable call graph profiling (unsupported).

-pl enable line profiling (unsupported).

-pr enable routine profiling (unsupported).

-qs favour space efficiency in generated code.

-qt favour time efficiency in generated code (default).

-r file
    redirect screen output to file.

-revalt
    enable reversed ALT disabling sequence.

-safe
    compile safe code only.

-strict
    strict usage-checking.

-t  write TCOFF records without code.

-t2 target to T2 processor class.

-t212
    target to T212 processor.

-t222
    target to T222 processor.

-t225
    target to T225 processor.

-t3 target to T3 processor class.

-t4 target to T4 processor class.

-t400
    target to T400 processor.

-t414
    target to T414 processor.

-t425
    target to T425 processor.

-t450
    target to T450 processor.

-t5 target to T5 processor class.

-t8 target to T8 processor class.

-t800
    target to T800 processor.

-t801
    target to T801 processor.

-t805
    target to T805 processor.

-t9 target to T9 processor class.

-t9000
    target to T9000 (L-process) processor.

-t9000gamma
    target to T9000-gamma processor.

-t9000gammae
    target to T9000-gamma-E processor.

-ta target to TA processor class.

-tal
    target requires aligned memory accesses.

-tb target to TB processor class.

-tbe
    target to big-endian processor (default for MIPS, Sparc).

-tle
    target to litten-endian processor (default for x86).

-tul
    target supports unaligned memory accesses (default).

-u  disable run-time error checking.

-udo
    enable user-defined operators.

-w  full code insertion (unsupported).

-walign
    warn on alignment checks.

-wd provide descoped name warnings.

-wo provide overlap-check warnings.

-wqual
    enable software quality warnings.

-xin
    enable extended input.

-xtag
    enable extended input on tagged/CASE input.

-zen
    use enhanced ALT enabling sequence.

-zep
    use ALT pre-enabling sequence.

HIDDEN OPTIONS

-za generate assembler diagnostics.

-zam
    allocate max below WS.

-zand
    don't allocate divided by size.

-zas
    allocate variables in scope order.

-zasm
    assembler output (unsupported).

-zb assembler output only (unsupported).

-zxcdiv
    allocate temporaries for complex DIV operations.

-zxcrem
    allocate temporaries for complex REM operations.

-zd disassemble after crunch (unsupported).

-ze visible compiler library names.

-zen
    use enhanced ALT enabling sequence.

-zep
    use ALT pre-enabling sequence.

-zer64
    swap words of REAL64s.

-zgrp
    output suitable for the grouper (unsupported).

-zh mark output as an occam harness (unsupported).

-zi path
    change default pathname to path.

-zk code generation for KRoC.

-zlc lib
    change compiler library to lib.

-zlcp sfx
    specify sfx as compiler pre-define suffix.

-zlcs sfx
    specify sfx as compiler library suffix.

-zli lib
    change compiler I/O library to lib.

-zlis sfx
    specify sfx as I/O library suffix.

-zmem
    display memory (sbrk) statistics.

-zmp
    map all PROCs.

-zmppa
    check for terminated MOBILE PROCs at activation.

-zna
    no outermost preamble/postamble.

-znc
    no variable I/O for counted arrays.

-zncc
    no call compatibility checks.

-znd
    no debugging information at all.

-zneas
    no errors for illegal ASM instructions.

-znec
    no comment indentation errors.

-zner
    no errors at all (beware!).

-zni
    disable INLINEd PROCs/FUNCTIONs.

-znj
    generate conditional jumps where possible.

-znl
    no disassembly line numbers.

-znm
    no disassembly comments.

-zno
    no disassembly operands.

-znp
    no pre-defines allowed.

-znv
    don't optimise when vsoffset_flag is zero.

-znwf
    no formal parameter descope warnings.

-zod
    merge types in descriptors.

-zoe
    disable export of origin symbol.

-zoi
    disable imported origin checks.

-zol
    prioritise linkage.

-zon
    short names in descriptors.

-zops
    try and optimise for space.

-zor
    read in incompatible library entries.

-zos
    set code output buffer size (see -code).

-zov
    don't hash version into origin.

-zow
    don't output WS, VS and MS symbols.

-zoys
    add space in descriptors.

-zpd
    profiling trace information (unsupported).

-zpnn
    ignore null trap handlers (unsupported).

-zpp
    show pre-processor defines.

-zprm
    print all messages.

-zrv
    generate new variable(s) for RESULT abbreviations.

-zsc
    stop after type-check.

-zse
    stop after all errors.

-zsm
    stop after mapping.

-zsp
    stop after parse.

-zsrc
    print source tree.

-zst
    stop after trans.

-zsu
    stop after and debug usage-check.

-zt show parse tree and variable allocation if mapped.

-zt450awa
    disable T450 workarounds.

-ztst
    generic test flag.

-zv disable library I/O.

-zw do channels not by pointer.

-zwau
    warn on alias and usage checks.

-zwc
    warn on comment indentation.

-zwtag
    warn about unused tags in tagged input.

-zx 8-byte libpatch (unsupported).

-zypt
    visible PROTOCOL tags.

-zz use ALT for PRI PAR (unsupported).

AUTHOR
See the file AUTHORS in the distribution for the list of contributors to KRoC. This manual page is maintained by Fred Barnes <frmb@kent.ac.uk>

SEE ALSO
kroc(1)

REPORTING BUGS
Please report bugs to <ofa-bugs@kent.ac.uk>

COPYRIGHT
Original occam2.1 toolset compiler Copyright (C) 1984-1997 Inmos Limited. Copyright released (by SGS-THOMPSON Microelectronics Limited, 1997) for open-source development under the condition that the compiler is not used to generate code for an real transputer (this capability has been removed from the compiler).

Modifications Copyright © 1997-1999 Jim Moores, Michael Poole, David Wood

Copyright © 1999-2005 Fred Barnes

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

An additional restriction is that this compiler may not be used to generate code for an actual Transputer (T200, T400, T800 and T9000 series). This restriction is still theoretically valid, but it is unlikely that ST Microelectronics (who own the copyright on the original compiler developed by Inmos Limited) will enforce it: the number of real Transputers in use is dwindling; Transputers have not been manufactured since 1997; and the compiler has been modified to the extent where code-generation for a real transputer is probably not practical.