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 in-
       put 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
	       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-spe-
	       cific.

       --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  [de-
	       fault].

       --codegen-visibility-default
	       Keep default visibility for all symbols [default].

       --codegen-visibility-hidden
	       Make  all  symbols  hidden unless an attribute specifies	other-
	       wise.

       --codegen-visibility-protected
	       Make all	symbols	protected unless an attribute specifies	other-
	       wise.

       --codegen-visibility-internal
	       Make all	symbols	internal unless	an attribute specifies	other-
	       wise.

       --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 ef-
	       ficient 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  pre-
	       processor

       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 plat-
	       form]

       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_no-
	       prefix, 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  sup-
	       ported  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  li-
       cense.

       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	September 2025			  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.0.quarterly>

home | help