[Utils] Add a switch controlling prefix warnings in UpdateTestChecks
authorMircea Trofin <mtrofin@google.com>
Mon, 1 Feb 2021 23:21:55 +0000 (15:21 -0800)
committerMircea Trofin <mtrofin@google.com>
Tue, 2 Feb 2021 02:04:18 +0000 (18:04 -0800)
The switch controls both unused prefix warnings, and warnings about
functions which differ under different runs for a prefix, and, thus, end
up not having asserts for that prefix.

(If the latter case spans to all functions, then the former case kicks
in)

The switch is on by default, and can be disabled.

Differential Revision: https://reviews.llvm.org/D95829

llvm/test/tools/UpdateTestChecks/update_llc_test_checks/common-label-different-bodies.test
llvm/utils/UpdateTestChecks/common.py

index 409114d..4109ce9 100644 (file)
@@ -3,7 +3,9 @@
 # RUN: cp -f %S/Inputs/common-label-different-bodies-1.ll %t-1.ll
 # RUN: cp -f %S/Inputs/common-label-different-bodies-2.ll %t-2.ll
 # RUN: cp -f %S/Inputs/common-label-different-bodies-3.ll %t-3.ll
-# RUN: %update_llc_test_checks %t-1.ll
+# RUN: cp -f %S/Inputs/common-label-different-bodies-3.ll %t-4.ll
+# RUN: %update_llc_test_checks %t-1.ll 2>&1 | FileCheck %s --check-prefix=WARNINGS
+# RUN: %update_llc_test_checks --disable-verbose-prefix-warnings %t-4.ll 2>&1 | FileCheck %s --check-prefix=NOWARNINGS --allow-empty
 # RUN: %update_llc_test_checks %t-2.ll
 # RUN: %update_llc_test_checks %t-3.ll
 # RUN: FileCheck --input-file=%t-1.ll %s
@@ -11,4 +13,7 @@
 # RUN: FileCheck --input-file=%t-3.ll %s
 
 # CHECK: B-LABEL: fold_v2i64
-# CHECK-NOT: A-LABEL: fold_v2i64
\ No newline at end of file
+# CHECK-NOT: A-LABEL: fold_v2i64
+# WARNINGS: WARNING: Function fold_v2i64 had conflicting output from different RUN lines for prefix A
+# WARNINGS: WARNING: Prefix A had conflicting output from different RUN lines for all functions
+# NOWARNINGS-NOT: WARNING
\ No newline at end of file
index 4befaec..a77dc63 100644 (file)
@@ -30,9 +30,14 @@ def parse_commandline_args(parser):
                        help='Activate CHECK line generation from this point forward')
   parser.add_argument('--disable', action='store_false', dest='enabled',
                       help='Deactivate CHECK line generation from this point forward')
+  parser.add_argument('--disable-verbose-prefix-warnings', action='store_false', 
+                      default=True,
+                      dest='verbose_prefix_warnings',
+                      help='Disable warnings about unused prefixes.')
   args = parser.parse_args()
-  global _verbose
+  global _verbose, _verbose_prefix_warnings
   _verbose = args.verbose
+  _verbose_prefix_warnings = args.verbose_prefix_warnings
   return args
 
 
@@ -272,8 +277,9 @@ class FunctionTestBuilder:
         self._func_order.update({prefix: []})
 
   def finish_and_get_func_dict(self):
-    for prefix in self._get_failed_prefixes():
-      warn('Prefix %s had conflicting output from different RUN lines for all functions' % (prefix,))
+    if _verbose_prefix_warnings:
+      for prefix in self._get_failed_prefixes():
+        warn('Prefix %s had conflicting output from different RUN lines for all functions' % (prefix,))
     return self._func_dict
 
   def func_order(self):
@@ -329,6 +335,9 @@ class FunctionTestBuilder:
               # so the body can't be common accross RUN lines. We use None to
               # indicate that.
               self._func_dict[prefix][func] = None
+              if _verbose_prefix_warnings:
+                warn('Function %s had conflicting output from different RUN lines for prefix %s' % (
+                    func, prefix))
               continue
 
         self._func_dict[prefix][func] = function_body(