Previous: Require Support, Up: Test Directives


7.2.6 Commands for use in dg-final

The GCC testsuite defines the following directives to be used within dg-final.

7.2.6.1 Scan a particular file
scan-file filename regexp [{ target/xfail selector }]
Passes if regexp matches text in filename.
scan-file-not filename regexp [{ target/xfail selector }]
Passes if regexp does not match text in filename.
scan-module module regexp [{ target/xfail selector }]
Passes if regexp matches in Fortran module module.
7.2.6.2 Scan the assembly output
scan-assembler regex [{ target/xfail selector }]
Passes if regex matches text in the test's assembler output.
scan-assembler-not regex [{ target/xfail selector }]
Passes if regex does not match text in the test's assembler output.
scan-assembler-times regex num [{ target/xfail selector }]
Passes if regex is matched exactly num times in the test's assembler output.
scan-assembler-dem regex [{ target/xfail selector }]
Passes if regex matches text in the test's demangled assembler output.
scan-assembler-dem-not regex [{ target/xfail selector }]
Passes if regex does not match text in the test's demangled assembler output.
scan-hidden symbol [{ target/xfail selector }]
Passes if symbol is defined as a hidden symbol in the test's assembly output.
scan-not-hidden symbol [{ target/xfail selector }]
Passes if symbol is not defined as a hidden symbol in the test's assembly output.
7.2.6.3 Scan optimization dump files

These commands are available for kind of tree, rtl, and ipa.

scan-kind-dump regex suffix [{ target/xfail selector }]
Passes if regex matches text in the dump file with suffix suffix.
scan-kind-dump-not regex suffix [{ target/xfail selector }]
Passes if regex does not match text in the dump file with suffix suffix.
scan-kind-dump-times regex num suffix [{ target/xfail selector }]
Passes if regex is found exactly num times in the dump file with suffix suffix.
scan-kind-dump-dem regex suffix [{ target/xfail selector }]
Passes if regex matches demangled text in the dump file with suffix suffix.
scan-kind-dump-dem-not regex suffix [{ target/xfail selector }]
Passes if regex does not match demangled text in the dump file with suffix suffix.
7.2.6.4 Verify that an output files exists or not
output-exists [{ target/xfail selector }]
Passes if compiler output file exists.
output-exists-not [{ target/xfail selector }]
Passes if compiler output file does not exist.
7.2.6.5 Check for LTO tests
scan-symbol regexp [{ target/xfail selector }]
Passes if the pattern is present in the final executable.
7.2.6.6 Checks for gcov tests
run-gcov sourcefile
Check line counts in gcov tests.
run-gcov [branches] [calls] { opts sourcefile }
Check branch and/or call counts, in addition to line counts, in gcov tests.
7.2.6.7 Clean up generated test files

Usually the test-framework removes files that were generated during testing. If a testcase, for example, uses any dumping mechanism to inspect a passes dump file, the testsuite recognized the dump option passed to the tool and schedules a final cleanup to remove these files.

There are, however, following additional cleanup directives that can be used to annotate a testcase "manually".

cleanup-coverage-files
Removes coverage data files generated for this test.
cleanup-modules "list-of-extra-modules"
Removes Fortran module files generated for this test, excluding the module names listed in keep-modules. Cleaning up module files is usually done automatically by the testsuite by looking at the source files and removing the modules after the test has been executed.
          module MoD1
          end module MoD1
          module Mod2
          end module Mod2
          module moD3
          end module moD3
          module mod4
          end module mod4
          ! { dg-final { cleanup-modules "mod1 mod2" } } ! redundant
          ! { dg-final { keep-modules "mod3 mod4" } }

keep-modules "list-of-modules-not-to-delete"
Whitespace separated list of module names that should not be deleted by cleanup-modules. If the list of modules is empty, all modules defined in this file are kept.
          module maybe_unneeded
          end module maybe_unneeded
          module keep1
          end module keep1
          module keep2
          end module keep2
          ! { dg-final { keep-modules "keep1 keep2" } } ! just keep these two
          ! { dg-final { keep-modules "" } } ! keep all

dg-keep-saved-temps "list-of-suffixes-not-to-delete"
Whitespace separated list of suffixes that should not be deleted automatically in a testcase that uses -save-temps.
          // { dg-options "-save-temps -fpch-preprocess -I." }
          int main() { return 0; }
          // { dg-keep-saved-temps ".s" } ! just keep assembler file
          // { dg-keep-saved-temps ".s" ".i" } ! ... and .i
          // { dg-keep-saved-temps ".ii" ".o" } ! or just .ii and .o

cleanup-profile-file
Removes profiling files generated for this test.
cleanup-repo-files
Removes files generated for this test for -frepo.