When multiple diagnostics for a given line in a test are expected, I have been using the vertical bar ('|') in regular expression arguments to DejaGnu directives like dg-error and dg-warning on the assumption that all are matched.
This use appears to be sanctioned by the GCC TestCaseWriting Wiki (https://gcc.gnu.org/wiki/TestCaseWriting): Should a line produce two errors, the regular expression can include an "|" (ie. a regular expression OR) between the possible message fragments. If only one of the errors is important, a better way to deal with the multiple errors is to check for the one you want with dg-error and discard the extras with dg-prune-output: ... In a discussion of a recent patch of mine I was surprised to learn that this use may not actually accomplish quite what's intended. The effect of the bar operator is for the directive to match a message on that line that contains either the left operand or the right operand of the regex. Which means that the directive is appropriate when it doesn't matter which of the alternatives matches, but not when both or all messages are expected and need to be verified. Is there a way to express a requirement that a single line cause two or more diagnostic messages (in any order) each matching one of the regex strings? I've searched the test suite for examples but couldn't find anything. The dg-{begin,end}-multiline-output directive looked promising until I realized that it does plain string matching and doesn't appear to be able to match whole errors. Thanks Martin