[PATCH] D135580: utils/update_mir_test_checks.py: support UTC_ARGS

Gaƫtan Bossu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 30 02:01:07 PST 2022


gbossu updated this revision to Diff 478859.
gbossu added a comment.

Remove print-stack-update.mir test input file and just re-run update_mir_test_checks on the existing file instead.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D135580/new/

https://reviews.llvm.org/D135580

Files:
  llvm/test/tools/UpdateTestChecks/update_mir_test_checks/Inputs/print-stack.mir.expected
  llvm/test/tools/UpdateTestChecks/update_mir_test_checks/print-stack.test
  llvm/utils/update_mir_test_checks.py


Index: llvm/utils/update_mir_test_checks.py
===================================================================
--- llvm/utils/update_mir_test_checks.py
+++ llvm/utils/update_mir_test_checks.py
@@ -320,22 +320,10 @@
     return True
 
 
-def update_test_file(args, test):
+def update_test_file(args, test, autogenerated_note):
     with open(test) as fd:
         input_lines = [l.rstrip() for l in fd]
 
-    script_name = os.path.basename(__file__)
-    first_line = input_lines[0] if input_lines else ""
-    if 'autogenerated' in first_line and script_name not in first_line:
-        common.warn("Skipping test which wasn't autogenerated by " +
-                    script_name + ": " + test)
-        return
-
-    if args.update_only:
-      if not first_line or 'autogenerated' not in first_line:
-        common.warn("Skipping test which isn't autogenerated: " + test)
-        return
-
     triple_in_ir = find_triple_in_ir(input_lines, args.verbose)
     run_lines = common.find_run_lines(test, input_lines)
     run_list = build_run_list(test, run_lines, args.verbose)
@@ -350,7 +338,7 @@
         log('Extracted LLC cmd: llc {}'.format(llc_args), args.verbose)
         log('Extracted FileCheck prefixes: {}'.format(prefixes), args.verbose)
 
-        raw_tool_output = args.llc(llc_args, test)
+        raw_tool_output = args.llc_binary(llc_args, test)
         if not triple_in_cmd and not triple_in_ir:
             common.warn('No triple found: skipping file', test_file=test)
             return
@@ -364,9 +352,6 @@
     prefix_set = set([prefix for run in run_list for prefix in run.prefixes])
     log('Rewriting FileCheck prefixes: {}'.format(prefix_set), args.verbose)
 
-    comment_char = '#' if test.endswith('.mir') else ';'
-    autogenerated_note = ('{} NOTE: Assertions have been autogenerated by '
-                          'utils/{}'.format(comment_char, script_name))
     output_lines = []
     output_lines.append(autogenerated_note)
 
@@ -448,19 +433,20 @@
 def main():
     parser = argparse.ArgumentParser(
         description=__doc__, formatter_class=argparse.RawTextHelpFormatter)
-    parser.add_argument('--llc-binary', dest='llc', default='llc', type=LLC,
+    parser.add_argument('--llc-binary', default='llc', type=LLC,
                         help='The "llc" binary to generate the test case with')
     parser.add_argument('--print-fixed-stack', action='store_true',
                         help='Add check lines for fixedStack')
     parser.add_argument('tests', nargs='+')
     args = common.parse_commandline_args(parser)
 
-    test_paths = [test for pattern in args.tests for test in glob.glob(pattern)]
-    for test in test_paths:
+    script_name = os.path.basename(__file__)
+    for ti in common.itertests(args.tests, parser,
+                               script_name='utils/' + script_name):
         try:
-            update_test_file(args, test)
+            update_test_file(ti.args, ti.path, ti.test_autogenerated_note)
         except Exception:
-            common.warn('Error processing file', test_file=test)
+            common.warn('Error processing file', test_file=ti.path)
             raise
 
 
Index: llvm/test/tools/UpdateTestChecks/update_mir_test_checks/print-stack.test
===================================================================
--- llvm/test/tools/UpdateTestChecks/update_mir_test_checks/print-stack.test
+++ llvm/test/tools/UpdateTestChecks/update_mir_test_checks/print-stack.test
@@ -2,6 +2,11 @@
 ## Check that update_mir_test_checks handles --print-fixed-stack properly.
 
 ## Verify with --print-fixed-stack, the proper CHECK lines for fixedStack are
-## generated.
+## generated, and UTC_ARGS is written in the header comment.
 # RUN: cp -f %S/Inputs/print-stack-first.mir %t.mir && %update_mir_test_checks %t.mir --print-fixed-stack
 # RUN: diff -u %S/Inputs/print-stack.mir.expected %t.mir
+
+## Check that re-running without --print-fixed-stack does not change the
+## CHECK lines, because of UTC_ARGS.
+# RUN: %update_mir_test_checks %t.mir
+# RUN: diff -u %S/Inputs/print-stack.mir.expected %t.mir
Index: llvm/test/tools/UpdateTestChecks/update_mir_test_checks/Inputs/print-stack.mir.expected
===================================================================
--- llvm/test/tools/UpdateTestChecks/update_mir_test_checks/Inputs/print-stack.mir.expected
+++ llvm/test/tools/UpdateTestChecks/update_mir_test_checks/Inputs/print-stack.mir.expected
@@ -1,4 +1,4 @@
-# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --print-fixed-stack
 # RUN: llc -mtriple=x86_64-linux-gnu -run-pass=none -o - %s | FileCheck %s
 
 # Note that this file isn't a test in itself (Inputs/ is excluded from lit's


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D135580.478859.patch
Type: text/x-patch
Size: 4808 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221130/ac7c2caa/attachment.bin>


More information about the llvm-commits mailing list