kefir-cc1(1) General Commands Manual kefir-cc1(1)
NAME
kefir-cc1 — C17/C23 language compiler
SYNOPSIS
kefir-cc1 [options] [file]
DESCRIPTION
kefir-cc1 is a C17/C23 language compiler (without a driver). If no input file is provided, stdin is used.
OPTIONS
−−c17-standard
Use C17 language language standard.
−−c23-standard
Use C23 language language standard.
−−pp-timestamp timestamp
Override preprocessor timestamp
−−json-errors
Print errors in JSON format to stderr
−−tabular-errors
Print errors in tabular format to stderr
−−target-profile profile
Generate code for specified target (see “TARGET” subsection)
−−source-id identifier
Force use provided source file identifier
−−extension-lib libpath
Load extension library
−−quote-include-dir dir
Add directory to include search path exclusively for quoted includes
−−system-include-dir dir
Add directory to include search path and mark it as a system include path (used for dependency output)
−−embed-dir directory
Add directory to preprocessor embed search path
−−debug-info
Include debug information into produced output
−−optimizer-max-inline-depth depth
Maximum depth of function inlining (5 by default).
−−optimizer-max-inlines-per-func inlines
Maximum number of inlined functions (10 by default).
−−enable-lowering
Perform target-specific SSA lowering (mandatory for bit-precise integer support) [default]
−−disable-lowering
Skip target-specific SSA lowering.
−−preprocessor-assembly-mode
Enable assembly preprocessing mode (default for .S files). In this mode, leading ’$’ characters are not treated as identifier part.
−−preprocessor-normal-mode
Disable assembly preprocessing mode (default).
−−dump-dependencies
Output a make rule describing the dependencies of source file.
−−system-dependencies
Include dependencies from system include directories into the make rule (used with −−dump-dependencies flag) [default: on].
−−no-system-dependencies
Do not include dependencies from system include directories into the make rule (used with −−dump-dependencies flag).
−−add-phony-targets
Generate phony make targets for each dependency (used with −−dump-dependencies flag) [default: off].
−−no-add-phony-targets
Do not generate phony make targets for each dependency (used with −−dump-dependencies
−−dependency-target target
Override default make rule target (used with −−dump-dependencies flag).
−−dependency-output filename
Output make rule into specified file (used with −−dump-dependencies flag).
−−unsigned-char
Let the type char be unsigned. By default, it is target-specific.
−−signed-char
Let the type char be signed. By default, it is target-specific.
−−codegen-tentative-common
Place tentative definitions into common section (equivalent to common attribute applied to all variables).
−−codegen-tentative-no-common
Do not place tentative definitions into common section [default].
−−codegen-visibility-default
Keep default visibility for all symbols [default].
−−codegen-visibility-hidden
Make all symbols hidden unless an attribute specifies otherwise.
−−codegen-visibility-protected
Make all symbols protected unless an attribute specifies otherwise.
−−codegen-visibility-internal
Make all symbols internal unless an attribute specifies otherwise.
−−feature-[name]
Enable compiler feature (see “FEATURES” subsection)
−−no-feature-[name]
Disable compiler feature (see “FEATURES” subsection)
−−internal-[flag]
Enable compiler internal flag (see “INTERNALS” subsection)
−−no-internal-[flag]
Disable compiler internal flag (see “INTERNALS” subsection)
−−codegen-[option]
Enable option for code generator (see “CODEGEN” subsection)
−−no-codegen-[option]
Disable option for code generator (see “CODEGEN” subsection)
−−optimizer-pipeline spec
Optimizer pipeline specification (see “OPTIMIZER” subsection)
−−precise-bitfield-load-store
Load and store bitfields at byte boundaries [default: on]. Provides extra correctness for structures allocated close to a boundary with unmapped memory pages at the expense of less efficient bitfield handling. Does not change bitfield layout.
−−no-precise-bitfield-load-store
Load and store bitfields at machine word boundaries [default: off]. May cause failures for structures allocated close to boundaries with unmapped memory pages. Does not change bitfield layout.
−−declare-atomic-support
Declare support of atomics (might require explicit linking of software atomic library such as libatomic or libcompiler_rt).
−−no-declare-atomic-support
Declare the absence of atomic support via defining __STDC_NO_ATOMICS__ macro.
−−optimize-stack-frame
Optimize stack frame layout by reusing space for variables for disjoint lifetimes. Might increase compilation time and memory use on very large functions. [default: on].
−−no-optimize-stack-frame
Do not optimize stack frame layout and allocate each variable separately.
FEATURES
Supported features (to be used with −−feature-[feature-name] and −−no-feature-[feature-name] flags) -- disabled by default:
fail-on-attributes
Fail if __attribute__((...)) is encountered
missing-function-return-type
Permit function definitions with missing return type
designated-init-colons
Permit "fieldname:" syntax in designated initializers
labels-as-values
Permit label-addressing with && operator
non-strict-qualifiers
Disable strict qualifier checks for pointers
signed-enums
Force all enums to have signed integral type
implicit-function-decl
Permit implicit funciton declarations at use-site
empty-structs
Permit empty structure/union definitions
ext-pointer-arithmetics
Permit pointer arithmetics with function and void pointers
missing-braces-subobj
Permit missing braces for subobject initialization with scalar
statement-expressions
Enable statement expressions
omitted-conditional-operand
Permit omission of the middle ternary expression operand
int-to-pointer
Permit any integral type conversion to pointer
permissive-pointer-conv
Permit conversions between any pointer types
named-macro-vararg
Permit named macro variable arguments
include-next
Permit include_next preprocessor directive
fail-on-assembly
Disable support of inline assembly
va-args-comma-concat
Enable special processing for ", ##__VA_ARGS" case in preprocessor
switch-case-ranges
Enable support for ranges in switch cases
designator-subscript-ranges
Enable support for ranges in designator subscripts
CODEGEN
Supported code geneator options (to be used with −−codegen-[option] and −−no-codegen-[option] flags):
emulated-tls
Use emulated TLS [disabled by default, enabled on openbsd platform]
tls-common
Generate common section for thread-local storage if respective attribute is on [enabled for linux and netbsd]
pic
Generate position-independent code
omit-frame-pointer
Omit frame pointer in leaf function that do not need it
valgrind-compatible-x87
Replace x87 opcodes not supported by Valgrind by more expensive alternatives [default: on]
syntax=SYNTAX
Produce assembly output with specified syntax [x86_64-intel_noprefix, x86_64-intel_prefix, x86_64-att (default)]
details=DETAILS-SPEC
Augment assembly output with internal code generator details in comments. DETAILS-SPEC can be: vasm (virtual assembly), vasm+regs (virtual assembly and register allocations), devasm (devirtualized assembly).
pipeline=PIPELINE-SPEC
Code generator transformation pipeline specification (not supported for native-* targets) consists of comma separated names of pipeline passes:
noop
No-operation pass
amd64-drop-virtual
Non-functional virtual instruction elimination for amd64 targets
amd64-peephole
Peephole optimizations for amd64 targets
OPTIMIZER
Optimizer pipeline specification consists of comma separated names of optimization pipeline passes:
noop
No-operation pass
phi-propagate
Wherever possible, substitue phi nodes of SSA representation by actual references
mem2reg
Pull function local variables into registers
op-simplify
General code simplification
constant-fold
Folding constant expressions
gvn
Global value numering pass to eliminate redundant arithmetic and bitwise operations
local-alloc-sink
Moving local variable allocations closer to their actual uses (does not affect effective variable lifetimes).
dead-code-elimination
Eliminating dead code, blocks and phi links.
block-merge
Remove unnecessary jump instructions and merge respective blocks.
dead-alloc
Remove dead local variable allocations.
inline-func
Perform function inlining.
tail-calls
Perform tail call optimization.
lowering
Perform target-specific lowering of the SSA representation. Mandatory for bit-precise integer support.
TARGET
Supported compilation targets:
amd64-sysv-gas
Produce optimized GNU As-compatible assembly adhering System-V AMD64 ABI [default]
EXIT STATUS
Normally kefir-cc1 exits with 0 exit code. In case of any errors in any of compilation stages, all further compilation is aborted and non-zero exit code retruned.
STANDARDS
kefir-cc1 implements C17 language standard as specified in its final draft, and C23 language stadard (except _Decimal support) as specified in the first draft of C2Y.
NOTES
The kefir-cc1 compiler is licensed under the terms of GNU GPLv3 license.
kefir-cc1 is developed and maintained by Jevgenij Protopopov (legally: Jevgenijs Protopopovs)
Please report bugs found in kefir-cc1 to [email protected]
kefir-cc1 is available online at https://sr.ht/~jprotopopov/kefir/ with read-only mirrors at https://git.protopopov.lv/kefir and https://codeberg.org/jprotopopov/kefir GNU September 2025 kefir-cc1(1)