diff --git a/llvm/utils/update_analyze_test_checks.py b/llvm/utils/update_analyze_test_checks.py --- a/llvm/utils/update_analyze_test_checks.py +++ b/llvm/utils/update_analyze_test_checks.py @@ -77,7 +77,14 @@ common.warn("Skipping unparsable RUN line: " + l) continue - (tool_cmd, filecheck_cmd) = tuple([cmd.strip() for cmd in l.split("|", 1)]) + commands = [cmd.strip() for cmd in l.split("|")] + assert len(commands) >= 2 + preprocess_cmd = None + if len(commands) > 2: + preprocess_cmd = " | ".join(commands[:-2]) + tool_cmd = commands[-2] + filecheck_cmd = commands[-1] + common.verify_filecheck_prefixes(filecheck_cmd) if not tool_cmd.startswith(opt_basename + " "): @@ -94,7 +101,7 @@ # FIXME: We should use multiple check prefixes to common check lines. For # now, we just ignore all but the last. - prefix_list.append((check_prefixes, tool_cmd_args)) + prefix_list.append((check_prefixes, tool_cmd_args, preprocess_cmd)) builder = common.FunctionTestBuilder( run_list=prefix_list, @@ -113,13 +120,16 @@ path=ti.path, ) - for prefixes, opt_args in prefix_list: + for prefixes, opt_args, preprocess_cmd in prefix_list: common.debug("Extracted opt cmd:", opt_basename, opt_args, file=sys.stderr) common.debug( "Extracted FileCheck prefixes:", str(prefixes), file=sys.stderr ) + common.debug("Extracted preprocess cmd:", preprocess_cmd) - raw_tool_outputs = common.invoke_tool(ti.args.opt_binary, opt_args, ti.path) + raw_tool_outputs = common.invoke_tool( + ti.args.opt_binary, opt_args, ti.path, preprocess_cmd + ) if re.search(r"Printing analysis ", raw_tool_outputs) is not None: # Split analysis outputs by "Printing analysis " declarations. @@ -154,7 +164,9 @@ func_dict = builder.finish_and_get_func_dict() is_in_function = False is_in_function_start = False - prefix_set = set([prefix for prefixes, _ in prefix_list for prefix in prefixes]) + prefix_set = set( + [prefix for prefixes, _, _ in prefix_list for prefix in prefixes] + ) common.debug("Rewriting FileCheck prefixes:", str(prefix_set), file=sys.stderr) output_lines = []