[llvm] [UpdateTestChecks] Don't fail silently when conflicting CHECK lines means no checks are generated for some functions (PR #159321)
Alex Bradbury via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 22 10:37:27 PDT 2025
================
@@ -918,14 +919,51 @@ def __init__(self, run_list, flags, scrubber_args, path, ginfo):
self._global_var_dict.update({prefix: dict()})
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 in test %s"
- % (
- prefix,
- self._path,
+ all_funcs = set()
+ for prefix in self._func_dict:
+ all_funcs.update(self._func_dict[prefix].keys())
+
+ warnings_to_print = collections.defaultdict(list)
+ for func in sorted(list(all_funcs)):
+ for i, run_info in enumerate(self._run_list):
+ prefixes = run_info[0]
+ if not prefixes:
+ continue
+
+ # Check if this RUN line produces this function at all.
+ run_contains_func = True
+ for p in prefixes:
+ if func not in self._func_dict.get(p, {}):
+ run_contains_func = False
+ break
+ if not run_contains_func:
+ continue
+
+ # Check if this RUN line can print any checks for this
+ # function. It can't if all of its prefixes have conflicting
+ # (None) output.
+ can_print_for_this_run = False
+ for p in prefixes:
+ if self._func_dict[p].get(func) is not None:
+ can_print_for_this_run = True
+ break
+
+ if not can_print_for_this_run:
+ warnings_to_print[func].append((i, prefixes))
+
+ for func, warning_info in warnings_to_print.items():
+ conflict_strs = []
+ for run_index, prefixes in warning_info:
+ conflict_strs.append(
+ "RUN #{} (prefixes: {})".format(run_index + 1, ", ".join(prefixes))
----------------
asb wrote:
Thanks, I'd seen plenty of format in this file so was conservative but I see now there's a number of fstring usages too. I've updated the string formatting appropriately.
https://github.com/llvm/llvm-project/pull/159321
More information about the llvm-commits
mailing list