https://github.com/ZequanWu created https://github.com/llvm/llvm-project/pull/92141
This change allows us to pass creduce options to creduce-clang-crash.py script. With this, `--n` is no longer needed to specify the number of cores, so removed the flag. The motivation is https://github.com/llvm/llvm-project/pull/87933#issuecomment-2109463497 suggests that disabling creduce renaming passes helps people to further reduce crash manually. >From 39d996deffc9d77c28f9f43c2f2ba4b114dd864f Mon Sep 17 00:00:00 2001 From: Zequan Wu <zequa...@google.com> Date: Tue, 14 May 2024 12:08:15 -0400 Subject: [PATCH] Allow passing creduce options through creduce-clang-crash.py --- clang/utils/creduce-clang-crash.py | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/clang/utils/creduce-clang-crash.py b/clang/utils/creduce-clang-crash.py index 4d0c8224d8b49..e2c999196f36c 100755 --- a/clang/utils/creduce-clang-crash.py +++ b/clang/utils/creduce-clang-crash.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 """Calls C-Reduce to create a minimal reproducer for clang crashes. +Unknown arguments are treated at creduce options. Output files: *.reduced.sh -- crash reproducer with minimal arguments @@ -70,7 +71,7 @@ def write_to_script(text, filename): class Reduce(object): - def __init__(self, crash_script, file_to_reduce, core_number): + def __init__(self, crash_script, file_to_reduce, creduce_flags): crash_script_name, crash_script_ext = os.path.splitext(crash_script) file_reduce_name, file_reduce_ext = os.path.splitext(file_to_reduce) @@ -83,8 +84,7 @@ def __init__(self, crash_script, file_to_reduce, core_number): self.clang_args = [] self.expected_output = [] self.needs_stack_trace = False - self.creduce_flags = ["--tidy"] - self.creduce_flags = ["--n", str(core_number)] + self.creduce_flags = ["--tidy"] + creduce_flags self.read_clang_args(crash_script, file_to_reduce) self.read_expected_output() @@ -412,13 +412,13 @@ def reduce_clang_args(self): print("Reduced command:", reduced_cmd) def run_creduce(self): + full_creduce_cmd = ( + [creduce_cmd] + self.creduce_flags + [self.testfile, self.file_to_reduce] + ) print("\nRunning C-Reduce...") + verbose_print(quote_cmd(full_creduce_cmd)) try: - p = subprocess.Popen( - [creduce_cmd] - + self.creduce_flags - + [self.testfile, self.file_to_reduce] - ) + p = subprocess.Popen(full_creduce_cmd) p.communicate() except KeyboardInterrupt: # Hack to kill C-Reduce because it jumps into its own pgid @@ -458,26 +458,17 @@ def main(): help="The path to the `creduce` executable. " "Required if `creduce` is not in PATH environment.", ) - parser.add_argument( - "--n", - dest="core_number", - type=int, - default=max(4, multiprocessing.cpu_count() // 2), - help="Number of cores to use.", - ) parser.add_argument("-v", "--verbose", action="store_true") - args = parser.parse_args() - + args, creduce_flags = parser.parse_known_args() verbose = args.verbose llvm_bin = os.path.abspath(args.llvm_bin) if args.llvm_bin else None creduce_cmd = check_cmd("creduce", None, args.creduce) clang_cmd = check_cmd("clang", llvm_bin, args.clang) - core_number = args.core_number crash_script = check_file(args.crash_script[0]) file_to_reduce = check_file(args.file_to_reduce[0]) - r = Reduce(crash_script, file_to_reduce, core_number) + r = Reduce(crash_script, file_to_reduce, creduce_flags) r.simplify_clang_args() r.write_interestingness_test() _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits