From 2be8d8a8b32eebfec104bc8cc2479f4bc4e94f7c Mon Sep 17 00:00:00 2001 From: "Joel E. Denny" Date: Tue, 20 Jul 2021 11:17:50 -0400 Subject: [PATCH] [UpdateCCTestChecks] Implement --global-value-regex `--check-globals` activates checks for all global values, and `--global-value-regex` filters them. For example, I'd like to use it in OpenMP offload codegen tests to check only global variables like `.offload_maptypes*`. Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D104742 --- utils/UpdateTestChecks/common.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/utils/UpdateTestChecks/common.py b/utils/UpdateTestChecks/common.py index ff48e3b9f67..29d22401cf7 100644 --- a/utils/UpdateTestChecks/common.py +++ b/utils/UpdateTestChecks/common.py @@ -36,9 +36,12 @@ def parse_commandline_args(parser): help='List of regular expressions to replace matching value names') parser.add_argument('--prefix-filecheck-ir-name', default='', help='Add a prefix to FileCheck IR value names to avoid conflicts with scripted names') + parser.add_argument('--global-value-regex', nargs='+', default=[], + help='List of regular expressions that a global value declaration must match to generate a check (has no effect if checking globals is not enabled)') args = parser.parse_args() - global _verbose + global _verbose, _global_value_regex _verbose = args.verbose + _global_value_regex = args.global_value_regex return args @@ -796,13 +799,27 @@ def add_global_checks(glob_val_dict, comment_marker, prefix_list, output_lines, if not glob_val_dict[checkprefix][nameless_value.check_prefix]: continue - output_lines.append(comment_marker + SEPARATOR) - + check_lines = [] global_vars_seen_before = [key for key in global_vars_seen.keys()] for line in glob_val_dict[checkprefix][nameless_value.check_prefix]: + if _global_value_regex: + matched = False + for regex in _global_value_regex: + if re.match('^@' + regex + ' = ', line): + matched = True + break + if not matched: + continue tmp = generalize_check_lines([line], is_analyze, set(), global_vars_seen) check_line = '%s %s: %s' % (comment_marker, checkprefix, tmp[0]) + check_lines.append(check_line) + if not check_lines: + continue + + output_lines.append(comment_marker + SEPARATOR) + for check_line in check_lines: output_lines.append(check_line) + printed_prefixes.add((checkprefix, nameless_value.check_prefix)) # Remembe new global variables we have not seen before