### 7.6 Support for testing link-time optimizations

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.