Tests for link-time optimizations usually require multiple source files that are compiled separately, perhaps with different sets of options. There are several special-purpose test directives used for these tests.
{ dg-lto-do do-what-keyword }
do-what-keyword specifies how the test is compiled and whether it is executed. It is one of:
assemble
Compile with -c to produce a relocatable object file.
link
Compile, assemble, and link to produce an executable file.
run
Produce and run an executable file, which is expected to return an exit code of 0.
The default is assemble
. That can be overridden for a set of
tests by redefining dg-do-what-default
within the .exp
file for those tests.
Unlike dg-do
, dg-lto-do
does not support an optional
‘target’ or ‘xfail’ list. Use dg-skip-if
,
dg-xfail-if
, or dg-xfail-run-if
.
{ dg-lto-options { { options } [{ options }] } [{ target selector }]}
This directive provides a list of one or more sets of compiler options to override LTO_OPTIONS. Each test will be compiled and run with each of these sets of options.
{ dg-extra-ld-options options [{ target selector }]}
This directive adds options to the linker options used.
{ dg-suppress-ld-options options [{ target selector }]}
This directive removes options from the set of linker options used.