Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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  in-
	     cludes

     --system-include-dir dir
	     Add  directory  to  include search path and mark it as a system in-
	     clude 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 in-
	     teger 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 com-
	     mon 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.

     --codegen-decimal-default
	     Use platform-native decimal number encoding [default].

     --codegen-decimal-bid
	     Use decimal number BID encoding. Requires kefir to be compiled with
	     BID-enabled compiler to provide correct encoding of static data.

     --codegen-decimal-dpd
	     Use decimal number DPD encoding. Requires kefir to be compiled with
	     DPD-enabled compiler to provide correct encoding of static data.

     --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].   Pro-
	     vides  extra correctness for structures allocated close to a bound-
	     ary 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 soft-
	     ware atomic library such as libatomic or libcompiler_rt).

     --no-declare-atomic-support
	     Declare the absence of atomic support via defining  __STDC_NO_ATOM-
	     ICS__ macro.

     --declare-decimal-support
	     Declare  support  of decimal floating-point (might require explicit
	     linking of libgcc); has effect only is kefir has  been  built  with
	     decimal-capable compiler.

     --no-declare-decimal-support
	     Do not declare support of decimal floating-point; suppresses defin-
	     itions of kefir-specific support macros.

     --declare-decimal-bitint-conv-support
	     Declare  support  of decimal floating-point conversion to/from bit-
	     precise integers (requires linking with recent  libgcc  >=14);  has
	     effect only is kefir has been built with decimal-capable compiler.

     --no-declare-decimal-support
	     Do not declare support of decimal floating-point conversion to/from
	     bit-precise integers; suppresses definitions of kefir-specific sup-
	     port macros.

     --optimize-stack-frame
	     Optimize stack frame layout by reusing space for variables for dis-
	     joint  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 sepa-
	     rately.

   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

     imprecise-decimal-bitint-conv
	     Enable imprecise conversions between bit-precise integers and deci-
	     mal floating-point values during constant evaluation if precise na-
	     tive routines are not available [default: off]

     max-parser-errors [num]
	     Set  maximum number of parser errors produced; use -1 for unbounded
	     number of errors.	Note that printed error list  is  non-exhaustive
	     irrespective of the setting. [default: 24]

     max-analyzer-errors [num]
	     Set  maximum  number  of  analyzer  errors produced; use -1 for un-
	     bounded number of errors.	Note that printed error list is  non-ex-
	     haustive irrespective of the setting. [default: 24]

     Werror-compiler-ref
	     Include  compiler	source code references into reported errors [de-
	     fault: on].

     Wno-error-compiler-ref
	     Exclude compiler source code references from reported  errors  [de-
	     fault: off].

   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  at-
	     tribute 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 al-
	     ternatives [default: on]

     imprecise-decimal-bitint-conv
	     Use  imprecise conversions between bit-precise integers and decimal
	     floating-point values in generated code [default: off]

     syntax=SYNTAX
	     Produce assembly output with specified syntax  [x86_64-intel_nopre-
	     fix, 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).

     optimize
	     Perform low-level optimizations in code generator [default: on].

     no-optimize
	     Disable low-level optimizations in code generator.

   OPTIMIZER
     Optimizer pipeline specification consists of comma separated names of opti-
     mization pipeline passes:

     noop    No-operation pass

     phi-removal
	     Wherever possible, substitue phi nodes of SSA representation by ac-
	     tual references

     mem2reg
	     Pull function local variables into registers

     memory-ssa
	     Perform memory SSA-based optimizations for  store-load,  load-load,
	     store-store sequences.

     sroa    Perfrom limited scalar replacement of non-escaping aggregates.

     op-simplify
	     General code simplification

     constant-fold
	     Folding constant expressions

     canonicalize
	     Canonicalizations for late pipeline stages

     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.

     merge-blocks
	     Remove unnecessary jump and branch instructions and  merge  respec-
	     tive 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. Manda-
	     tory for bit-precise integer support.

     inline-asm-untie
	     Untie inline assembly non-memory parameters from  directly  linking
	     to memory locations. Improves integration with mem2reg.

   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 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 jevgenij@protopopov.lv

     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

FreeBSD ports 15.quarterly	   April 2026			    kefir-cc1(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=kefir-cc1&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help