---
name: "ldmd"
section: "1"
platform: "linux"
package: "ldc"
version: "0.9.1+hg1634-1"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/ldmd"
---

# ldmd(1)

manual page for LLVM D Compiler

## NAME

LDMD - manual page for LLVM D Compiler

## 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

## SEE ALSO

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.
