diff options
author | Henrik G. Olsson <hnrklssn@gmail.com> | 2024-02-28 17:08:36 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-28 17:08:36 -0800 |
commit | 6a65b44322ee7ba816283c31f8d71559592ca5e7 (patch) | |
tree | 34cd260b3794f6c7c1276dc3c282101c3280ec7a /llvm/utils | |
parent | 2679d3793b264b2884cf5c9492e3311f08f41de3 (diff) | |
download | llvm-6a65b44322ee7ba816283c31f8d71559592ca5e7.zip llvm-6a65b44322ee7ba816283c31f8d71559592ca5e7.tar.gz llvm-6a65b44322ee7ba816283c31f8d71559592ca5e7.tar.bz2 |
[UTC] Don't leave dangling CHECK-SAME when removing CHECK lines (#82569)
When removing only lines that are global value CHECK lines, a related
CHECK-SAME line could be left dangling without a previous line to belong
to.
Resolves #78517
Diffstat (limited to 'llvm/utils')
-rw-r--r-- | llvm/utils/UpdateTestChecks/common.py | 15 | ||||
-rwxr-xr-x | llvm/utils/update_test_checks.py | 10 |
2 files changed, 22 insertions, 3 deletions
diff --git a/llvm/utils/UpdateTestChecks/common.py b/llvm/utils/UpdateTestChecks/common.py index 4a02a92..5377752 100644 --- a/llvm/utils/UpdateTestChecks/common.py +++ b/llvm/utils/UpdateTestChecks/common.py @@ -388,7 +388,12 @@ def itertests( def should_add_line_to_output( - input_line, prefix_set, skip_global_checks=False, comment_marker=";" + input_line, + prefix_set, + *, + skip_global_checks=False, + skip_same_checks=False, + comment_marker=";", ): # Skip any blank comment lines in the IR. if not skip_global_checks and input_line.strip() == comment_marker: @@ -402,9 +407,14 @@ def should_add_line_to_output( # And skip any CHECK lines. We're building our own. m = CHECK_RE.match(input_line) if m and m.group(1) in prefix_set: + if skip_same_checks and CHECK_SAME_RE.match(input_line): + # The previous CHECK line was removed, so don't leave this dangling + return False if skip_global_checks: + # Skip checks only if they are of global value definitions global_ir_value_re = re.compile(r"(\[\[|@)", flags=(re.M)) - return not global_ir_value_re.search(input_line) + is_global = global_ir_value_re.search(input_line) + return not is_global return False return True @@ -483,6 +493,7 @@ PREFIX_RE = re.compile("^[a-zA-Z0-9_-]+$") CHECK_RE = re.compile( r"^\s*(?://|[;#])\s*([^:]+?)(?:-NEXT|-NOT|-DAG|-LABEL|-SAME|-EMPTY)?:" ) +CHECK_SAME_RE = re.compile(r"^\s*(?://|[;#])\s*([^:]+?)(?:-SAME)?:") UTC_ARGS_KEY = "UTC_ARGS:" UTC_ARGS_CMD = re.compile(r".*" + UTC_ARGS_KEY + r"\s*(?P<cmd>.*)\s*$") diff --git a/llvm/utils/update_test_checks.py b/llvm/utils/update_test_checks.py index 06c247c..b5077d7 100755 --- a/llvm/utils/update_test_checks.py +++ b/llvm/utils/update_test_checks.py @@ -235,6 +235,7 @@ def main(): ) else: # "Normal" mode. + dropped_previous_line = False for input_line_info in ti.iterlines(output_lines): input_line = input_line_info.line args = input_line_info.args @@ -282,7 +283,10 @@ def main(): has_checked_pre_function_globals = True if common.should_add_line_to_output( - input_line, prefix_set, not is_in_function + input_line, + prefix_set, + skip_global_checks=not is_in_function, + skip_same_checks=dropped_previous_line, ): # This input line of the function body will go as-is into the output. # Except make leading whitespace uniform: 2 spaces. @@ -290,9 +294,13 @@ def main(): r" ", input_line ) output_lines.append(input_line) + dropped_previous_line = False if input_line.strip() == "}": is_in_function = False continue + else: + # If we are removing a check line, and the next line is CHECK-SAME, it MUST also be removed + dropped_previous_line = True if is_in_function: continue |