xref: /freebsd/contrib/llvm-project/lld/docs/DTLTO.rst (revision e64bea71c21eb42e97aa615188ba91f6cce0d36d)
1Integrated Distributed ThinLTO (DTLTO)
2======================================
3
4Integrated Distributed ThinLTO (DTLTO) enables the distribution of backend
5ThinLTO compilations via external distribution systems, such as Incredibuild,
6during the traditional link step.
7
8The implementation is documented here: https://llvm.org/docs/DTLTO.html.
9
10Currently, DTLTO is only supported in ELF and COFF LLD.
11
12ELF LLD
13-------
14
15The command-line interface is as follows:
16
17- ``--thinlto-distributor=<path>``
18  Specifies the file to execute as the distributor process. If specified,
19  ThinLTO backend compilations will be distributed.
20
21- ``--thinlto-remote-compiler=<path>``
22  Specifies the path to the compiler that the distributor process will use for
23  backend compilations. The compiler invoked must match the version of LLD.
24
25- ``--thinlto-distributor-arg=<arg>``
26  Specifies ``<arg>`` on the command line when invoking the distributor.
27  Can be specified multiple times.
28
29- ``--thinlto-remote-compiler-arg=<arg>``
30  Appends ``<arg>`` to the remote compiler's command line.
31  Can be specified multiple times.
32
33  Options that introduce extra input/output files may cause miscompilation if
34  the distribution system does not automatically handle pushing/fetching them to
35  remote nodes. In such cases, configure the distributor - possibly using
36  ``--thinlto-distributor-arg=`` - to manage these dependencies. See the
37  distributor documentation for details.
38
39Some LLD LTO options (e.g., ``--lto-sample-profile=<file>``) are supported.
40Currently, other options are silently accepted but do not have the intended
41effect. Support for such options will be expanded in the future.
42
43COFF LLD
44--------
45
46The command-line interface is as follows:
47
48- ``/thinlto-distributor:<path>``
49  Specifies the file to execute as the distributor process. If specified,
50  ThinLTO backend compilations will be distributed.
51
52- ``/thinlto-remote-compiler:<path>``
53  Specifies the path to the compiler that the distributor process will use for
54  backend compilations. The compiler invoked must match the version of LLD.
55
56- ``/thinlto-distributor-arg:<arg>``
57  Specifies ``<arg>`` on the command line when invoking the distributor.
58  Can be specified multiple times.
59
60- ``/thinlto-remote-compiler-arg:<arg>``
61  Appends ``<arg>`` to the remote compiler's command line.
62  Can be specified multiple times.
63
64  Options that introduce extra input/output files may cause miscompilation if
65  the distribution system does not automatically handle pushing/fetching them to
66  remote nodes. In such cases, configure the distributor - possibly using
67  ``/thinlto-distributor-arg:`` - to manage these dependencies. See the
68  distributor documentation for details.
69
70Some LLD LTO options (e.g., ``/lto-sample-profile:<file>``) are supported.
71Currently, other options are silently accepted but do not have the intended
72effect. Support for such options could be expanded in the future.
73
74Currently, there is no DTLTO command line interface supplied for ``clang-cl``,
75as users are expected to invoke LLD directly.