DESCRIPTION

OVERVIEW: LLVM-based D Compiler

USAGE: ldc [options] files --run program args...

OPTIONS:

-D - Generate documentation -Dd=<docdir> - Write documentation file to <docdir> directory -Df=<filename> - Write documentation file to <filename> -H - Generate 'header' file -Hd=<hdrdir> - Write 'header' file to <hdrdir> directory -Hf=<filename> - Write 'header' file to <filename> -I=<path> - Where to look for imports -J=<path> - Where to look for string imports -L=<linkerflag> - Pass <linkerflag> to the linker

  • Setting the optimization level: -O - Equivalent to -O2 -O0 - No optimizations (default) -O1 - Simple optimizations -O2 - Good optimizations -O3 - Aggressive optimizations -O4 - Link-time optimization -O5 - Link-time optimization -annotate - Annotate the bitcode with human readable source code -asm-verbose - Add comments to directives. -c - Do not link -check-printf-calls - Validate printf call format strings against arguments -code-model - Choose code model

=default

- Target default code model

=small

- Small code model

=kernel

- Kernel code model

=medium

- Medium code model

=large

- Large code model -d - Allow deprecated language features -d-debug=<level/idents> - Compile in debug code >= <level> or identified by <idents>. -d-version=<level/idents> - Compile in version code >= <level> or identified by <idents> -debuglib=<lib,...> - Set default libraries for debug build -defaultlib=<lib,...> - Set default libraries for non-debug build -deps=<filename> - Write module dependencies to filename -enable-asserts - (*) Enable assertions -enable-boundscheck - (*) Enable array bounds checks -enable-contracts - (*) Enable function pre- and post-conditions -disable-d-passes - Disable D-specific passes in -O<N> -disable-excess-fp-precision - Disable optimizations that may increase FP precision -disable-fp-elim - Disable frame pointer elimination optimization -disable-gc2stack - Disable promotion of GC allocations to stack memory in -O<N> -enable-inlining - (*) Enable function inlining in -O<N> -enable-invariants - (*) Enable invariants -disable-post-RA-scheduler - Disable scheduling after register allocation -enable-postconditions - (*) Enable function postconditions -enable-preconditions - (*) Enable function preconditions -disable-simplify-drtcalls - Disable simplification of runtime calls in -O<N> -disable-spill-fusing - Disable fusing of spill code into instructions -enable-correct-eh-support - Make the -lowerinvoke pass insert expensive, but correct, EH code -enable-eh - Emit DWARF exception handling (default if target supports) -enable-finite-only-fp-math - Enable optimizations that assumes non- NaNs / +-Infs -enable-fp-mad - Enable less precise MAD instructions to be generated -enable-load-pre - -enable-sjlj-eh - Emit SJLJ exception handling (default if target supports) -enable-unsafe-fp-math - Enable optimizations that may decrease FP precision -float-abi - Choose float ABI type

=default

- Target default float ABI type

=soft

- Soft float ABI (implied by -soft-float)

=hard

- Hard float ABI (uses FP registers)

  • Generating debug information: -g - Generate debug information -gc - Same as -g, but pretend to be C -help - Display available options (--help-hidden for more) -ignore - Ignore unsupported pragmas -internalize-public-api-file=<filename> - A file containing list of symbol names to preserve -internalize-public-api-list=<list> - A list of symbol names to preserve -join-liveintervals - Coalesce copies (default=true) -limit-float-precision=<uint> - Generate low-precision inline sequences for some float libcalls -m32 - 32 bit target -m64 - 64 bit target -march=<string> - Architecture to generate code for: -mattr=<a1,+a2,-a3,...> - Target specific attributes (-mattr=help for details) -mcpu=<cpu-name> - Target a specific cpu type (-mcpu=help for details) -mtriple=<string> - Override target triple -nested-ctx - How to construct a nested function's context:

=array

- Array of pointers to variables (including multi-level)

=hybrid

- List of pointers to structs of variables, one per level. -noasm - Disallow use of inline assembler -nodefaultlib - Don't add a default library for linking implicitly -noruntime - Do not allow code that generates implicit runtime calls -noverify - Do not run the validation pass before writing bitcode -nozero-initialized-in-bss - Don't place zero-initialized symbols into bss section -o- - Do not write object file -od=<objdir> - Write object files to directory <objdir> -of=<filename> - Use <filename> as output file name -op - Do not strip paths from source file -oq - Write object files with fully qualified names -output-bc - Write LLVM bitcode -output-ll - Write LLVM IR -output-o - Write native object -output-s - Write native assembly -pre-RA-sched - Instruction schedulers available (before register allocation):

=fast

- Fast suboptimal list scheduling

=list-td

- Top-down list scheduler

=list-tdrr

- Top-down register reduction list scheduling

=list-burr

- Bottom-up register reduction list scheduling

=default

- Best scheduler for the target -print-machineinstrs - Print generated machine code -profile-estimator-loop-weight=<loop-weight> - Number of loop executions used for profile-estimator -profile-info-file=<filename> - Profile file loaded by -profile-loader -profile-randomness - How to randomly choose to profile:

=global

- global counter

=ra_global

- register allocated global counter

=rdcc

- cycle counter -realign-stack - Realign stack if needed -regalloc - Register allocator to use: (default = linearscan)

=linearscan

- linear scan register allocator -release - Disables asserts, invariants, contracts and boundscheck -relocation-model - Choose relocation model

=default

- Target default relocation model

=static

- Non-relocatable code

=pic

- Fully relocatable, position independent code

=dynamic-no-pic

- Relocatable external references, non-relocatable code -rewriter - Rewriter to use: (default: local)

=local

- local rewriter

=trivial

- trivial rewriter -run=<string> - program args... -schedule-livein-copies - Schedule copies of livein registers -schedule-spills - Schedule spill code -shrink-wrap - Shrink wrap callee-saved register spills/restores -singleobj - Create only a single output object file -soft-float - Generate software floating point library calls -stack-alignment=<uint> - Override default stack alignment -stack-protector-buffer-size=<uint> - Lower bound for a buffer to be considered for stack protection -stats - Enable statistics output from program -tailcallopt - Turn on tail call optimization. -time-passes - Time each pass, printing elapsed time for each on exit -unittest - Compile in unit tests -unwind-tables - Generate unwinding tables for all functions -v - Verbose -v-cg - Verbose codegen -verify-dom-info - Verify dominator info (time consuming) -version - Display the version of this program -vv - Very verbose -w - Enable warnings -x86-asm-syntax - Choose style of code to emit from X86 backend:

=att

- Emit AT&T-style assembly

=intel

- Emit Intel-style assembly

-d-debug can also be specified without options, in which case it enables all debug checks (i.e. (asserts, boundchecks, contracts and invariants) as well as acting as -d-debug=1

Options marked with (*) also have a -disable-FOO variant with inverted meaning.

based on DMD v1.051 and llvm 2.6 (Wed Dec 2 17:39:53 2009) Copyright (c) 1999-2009 by Digital Mars and Tomas Lindquist Olsen written by Walter Bright and Tomas Lindquist Olsen D Language Documentation: http://www.digitalmars.com/d/1.0/index.html LDC Homepage: http://www.dsource.org/projects/ldc

RELATED TO ldmd2…

The full documentation for LLVM is maintained as a Texinfo manual. If the info and LLVM programs are properly installed at your site, the command

  • info LLVM

should give you access to the complete manual.