scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

scc-cc1.man (2851B)


      1 .TH SCC-CC1 1 scc\-VERSION
      2 .SH NAME
      3 scc-cc1 \- C compiler frontend
      4 .SH SYNOPSIS
      5 .B cc1
      6 .RB [ \-Ewd ]
      7 .RB [ \-M ]
      8 .RB [ \-a
      9 .IR architecture ]
     10 .RB [ \-D
     11 .IR def[=val] ] ...
     12 .RB [ \-U
     13 .IR def ] ...
     14 .RB [ \-I
     15 .IR dir ] ...
     16 .RI [ input ]
     17 .SH DESCRIPTION
     18 .B cc1
     19 is the C compiler frontend of the scc toolchain.
     20 It reads a C source file (or standard input if no
     21 .I input
     22 file is given), performs preprocessing, parsing, type checking,
     23 and semantic analysis, and emits the scc intermediate representation (IR)
     24 to standard output.
     25 .PP
     26 .B cc1
     27 is not normally invoked directly.
     28 It is called by the compiler driver
     29 .BR scc\-cc (1),
     30 which pipes its output to
     31 .BR cc2 ,
     32 the code generation backend that produces assembly output.
     33 .B cc1
     34 is installed as
     35 .IR $prefix /libexec/scc/cc1.
     36 .SH OPTIONS
     37 .TP
     38 .BI \-a " architecture"
     39 Select the target architecture.
     40 The following architectures are supported:
     41 .RS
     42 .TP
     43 .B amd64-sysv
     44 64-bit x86 with the System V ABI (default).
     45 .TP
     46 .B arm64-sysv
     47 64-bit ARM with the System V ABI.
     48 .TP
     49 .B riscv64-sysv
     50 64-bit RISC-V with the System V ABI.
     51 .TP
     52 .B i386-sysv
     53 32-bit x86 with the System V ABI.
     54 .TP
     55 .B z80-scc
     56 Zilog Z80 with the scc ABI.
     57 .RE
     58 .TP
     59 .BI \-D " def[=val]"
     60 Define the preprocessor macro
     61 .I def
     62 with an optional value
     63 .IR val .
     64 If
     65 .I val
     66 is omitted, the macro is defined with the value
     67 .BR 1 .
     68 This option may be repeated to define multiple macros.
     69 .TP
     70 .B \-E
     71 Stop after preprocessing.
     72 Emit the preprocessed C source to standard output instead of IR.
     73 No compilation is performed.
     74 .TP
     75 .BI \-I " dir"
     76 Prepend
     77 .I dir
     78 to the list of directories searched for header files.
     79 This option may be repeated to add multiple directories.
     80 User-specified directories are searched before any system include directories
     81 added by
     82 .BR scc\-cc (1).
     83 .TP
     84 .B \-M
     85 Emit a
     86 .BR make (1)
     87 dependency rule describing the
     88 .B #include
     89 dependencies of the input file, then exit.
     90 No compilation is performed.
     91 .TP
     92 .BI \-U " def"
     93 Undefine the preprocessor macro
     94 .IR def .
     95 This option may be repeated.
     96 .TP
     97 .B \-d
     98 Enable internal debug output.
     99 .TP
    100 .B \-w
    101 Enable warning messages for dubious constructs.
    102 .SH OUTPUT
    103 .B cc1
    104 writes the scc IR to standard output.
    105 The IR is a line-oriented, tab-separated format.
    106 Declarations begin in column 0; expressions are indented with a tab
    107 and written in reverse Polish notation.
    108 For a full description of the IR format, types, storage classes,
    109 and statement encoding, see
    110 .BR scc\-ir (7).
    111 .PP
    112 When only preprocessing is requested
    113 .RB ( \-E
    114 or
    115 .BR \-M ),
    116 the preprocessed source or dependency rule is written to standard output
    117 instead.
    118 .PP
    119 If any compilation error occurs, the output stream is closed immediately
    120 so that the backend
    121 .B cc2
    122 receives no output and can detect the failure.
    123 .B cc1
    124 exits with a non-zero status on error.
    125 .SH SEE ALSO
    126 .BR scc\-cc (1),
    127 .BR scc\-cpp (1),
    128 .BR scc (1),
    129 .BR scc\-cc2 (1),
    130 .BR scc\-ir (7)