This directory contains tests for link-time optimization (LTO).
Tests in this directory may span multiple files, so the naming of
the files is significant.

The name of every file must end with '_N' where N is an integer.
All the files with the same name base and different _N suffixes
will be compiled separately and linked together to form the final
executable.

By default, each set of files will be compiled with list of
options listed in LTO_OPTIONS (../../lib/lto.exp), which can be
overwritten in the shell environment or using the 'dg-lto-options'
command in the main file of the set (i.e., the file with _0
suffix).

For example, given the files a_0.C a_1.C a_2.C, they will be
compiled as:

$ g++ -c <flags> a_0.C
$ g++ -c <flags> a_1.C
$ g++ -c <flags> a_2.C
$ g++ -o <executable> a_0.o a_1.o a_2.o

Tests that do not need more than one file are a special case
where there is a single file named 'foo_0.C'.

The only supported dg-lto-do option are 'assemble', 'run' and 'link'.
Additionally, these can only be used in the main file.  If
'assemble' is used, only the individual object files are
generated.  If 'link' is used, the final executable is generated
but not executed (in this case, function main() needs to exist
but it does not need to do anything).  If 'run' is used, the
final executable is generated and the resulting binary executed.

The default value for dg-lto-do is 'run'.
