On Wed, 27 Sept 2023 at 18:22, Jeff Law <jeffreya...@gmail.com> wrote:
> It would help to describe how these patterns were under specified so > that folks don't continue to make the same mistake as new tests get added. dg-final scan-assembler, scan-assembler-not, and scan-assembler-times use a tcl regular expression (often referred to abbreviated as RE), as described in https://www.tcl.tk/man/tcl8.4/TclCmd/re_syntax.html . If your RE is not specific enough, it can match LTO information that the compiler places into its assembly output when the relevant options are provided, which is common when running tests where the test harness iterates over a number of optimization option combinations. Note that '.' is an atom that can match any character. If you want to match a dot specifically, you have to escape it with a backslash: '\.' . When you are matching an instruction mnemonic, an effective way to avoid matching in LTO information is to enforce matching of word start (\m) and/or word end (\M) . Note also that the backslash has to be quoted. If the RE is enclosed in '"' quotes, extra backslashes are needed. That is not necessary when it is enclosed in curly braces. For example, "ld.w" will be matched in: .ascii "h\227\022\212ld@w\251jr\254'\320\255vwj\252\026\016\364" If you write {\mld\.w\M} instead, you avoid this problem. ################################# Where should this go? Maybe somewhere in or linked from https://gcc.gnu.org/codingconventions.html , Testsuite conventions?