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

FreeBSD Manual Pages

  
 
  

home | help
LLC(1)				     LLVM				LLC(1)

NAME
       llc - LLVM static compiler

SYNOPSIS
       llc [options] [filename]

DESCRIPTION
       The  llc	command	compiles LLVM source inputs into assembly language for
       a specified architecture.  The assembly language	 output	 can  then  be
       passed  through a native	assembler and linker to	generate a native exe-
       cutable.

       The choice of architecture for the output assembly  code	 is  automati-
       cally  determined from the input	file, unless the -march	option is used
       to override the default.

OPTIONS
       If filename is "-" or omitted, llc reads	from standard  input.	Other-
       wise, it	will read from filename.  Inputs can be	in either the LLVM as-
       sembly language format (.ll) or the LLVM	bitcode	format (.bc).

       If  the -o option is omitted, then llc will send	its output to standard
       output if the input is from standard input.  If the -o option specifies
       "-", then the output will also be sent to standard output.

       If no -o	option is specified and	an input file other than "-" is	speci-
       fied, then llc creates the output filename by taking  the  input	 file-
       name, removing any existing .bc extension, and adding a .s suffix.

       Other llc options are described below.

   End-user Options
       -help  Print a summary of command line options.

       -M     Pass  target-specific  InstPrinter options.  Refer to the	-M op-
	      tion of llvm-objdump(1).

       -o <filename>
	      Use <filename> as	the output filename. See the summary above for
	      more details.

       -O=uint
	      Generate code at different optimization  levels.	 These	corre-
	      spond  to	the -O0, -O1, -O2, and -O3 optimization	levels used by
	      clang.

       -mtriple=<target	triple>
	      Override the target triple specified in the input	file with  the
	      specified	string.

       -march=<arch>
	      Specify  the  architecture for which to generate assembly, over-
	      riding the target	encoded	in the input file.  See	the output  of
	      llc -help	for a list of valid architectures.  By default this is
	      inferred	from  the target triple	or autodetected	to the current
	      architecture.

       -mcpu=<cpuname>
	      Specify a	specific chip in the current architecture to  generate
	      code  for.   By  default this is inferred	from the target	triple
	      and autodetected to the current architecture.   For  a  list  of
	      available	CPUs, use:

		 llvm-as < /dev/null | llc -march=xyz -mcpu=help

       -filetype=<output file type>
	      Specify  what kind of output llc should generated.  Options are:
	      asm for textual assembly ( '.s'),	obj for	 native	 object	 files
	      ('.o') and null for not emitting anything	(for performance test-
	      ing).

	      Note that	not all	targets	support	all options.

       -mattr=a1,+a2,-a3,...
	      Override	or  control specific attributes	of the target, such as
	      whether SIMD operations are enabled or not.  The default set  of
	      attributes  is  set by the current CPU.  For a list of available
	      attributes, use:

		 llvm-as < /dev/null | llc -march=xyz -mattr=help

       --frame-pointer
	      Specify  effect  of  frame  pointer   elimination	  optimization
	      (all,non-leaf,none).

       --disable-excess-fp-precision
	      Disable  optimizations  that  may	 produce  excess precision for
	      floating point.  Note that this  option  can  dramatically  slow
	      down code	on some	systems	(e.g. X86).

       --enable-no-infs-fp-math
	      Enable optimizations that	assume no Inf values.

       --enable-no-nans-fp-math
	      Enable optimizations that	assume no NAN values.

       --enable-no-signed-zeros-fp-math
	      Enable  FP  math	optimizations that assume the sign of 0	is in-
	      significant.

       --enable-no-trapping-fp-math
	      Enable setting the FP exceptions build attribute not to use  ex-
	      ceptions.

       --enable-unsafe-fp-math
	      Enable  optimizations  that  make	 unsafe	assumptions about IEEE
	      math (e.g. that addition is associative) or may not work for all
	      input ranges.  These optimizations allow the code	 generator  to
	      make  use	 of some instructions which would otherwise not	be us-
	      able (such as fsin on X86).

       --stats
	      Print statistics recorded	by code-generation passes.

       --time-passes
	      Record the amount	of time	needed for each	pass and print	a  re-
	      port to standard error.

       --load=<dso_path>
	      Dynamically  load	 dso_path  (a path to a	dynamically shared ob-
	      ject) that implements an LLVM target.  This will permit the tar-
	      get name to be used with the -march option so that code  can  be
	      generated	for that target.

       -meabi=[default|gnu|4|5]
	      Specify  which  EABI version should conform to.  Valid EABI ver-
	      sions are	gnu, 4 and 5.  Default value (default) depends on  the
	      triple.

       -stack-size-section
	      Emit  the	 .stack_sizes  section which contains stack size meta-
	      data. The	section	contains an array of pairs of function	symbol
	      values  (pointer	size)  and  stack sizes	(unsigned LEB128). The
	      stack size values	only include the space allocated in the	 func-
	      tion  prologue. Functions	with dynamic stack allocations are not
	      included.

       -remarks-section
	      Emit the __remarks (MachO) section which contains	metadata about
	      remark diagnostics.

   Tuning/Configuration	Options
       --print-after-isel
	      Print generated machine code after instruction selection (useful
	      for debugging).

       --regalloc=<allocator>
	      Specify the register allocator to	use.  Valid  register  alloca-
	      tors are:

	      basic
		 Basic register	allocator.

	      fast
		 Fast  register	 allocator.  It	is the default for unoptimized
		 code.

	      greedy
		 Greedy	register allocator. It is the  default	for  optimized
		 code.

	      pbqp
		 Register  allocator  based  on	'Partitioned Boolean Quadratic
		 Programming'.

       --spiller=<spiller>
	      Specify the spiller to use for register allocators that  support
	      it.   Currently this option is used only by the linear scan reg-
	      ister allocator.	The default spiller is local.  Valid  spillers
	      are:

	      simple
		 Simple	spiller

	      local
		 Local spiller

   Intel IA-32-specific	Options
       --x86-asm-syntax=[att|intel]
	      Specify  whether	to  emit assembly code in AT&T syntax (the de-
	      fault) or	Intel syntax.

EXIT STATUS
       If llc succeeds,	it will	exit with 0.  Otherwise, if an	error  occurs,
       it will exit with a non-zero value.

SEE ALSO
       lli(1)

AUTHOR
       Maintained by the LLVM Team (https://llvm.org/).

COPYRIGHT
       2003-2025, LLVM Project

21				  2025-11-02				LLC(1)

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

home | help