mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
1bcb6d2dd5
Copy the message into script, so that new users won't need to dig into commit messages to figure out how to use. The message are copied directly from Michael's commit message in https://reviews.llvm.org/rL214610. llvm-svn: 369054
50 lines
1.5 KiB
Python
Executable File
50 lines
1.5 KiB
Python
Executable File
#!/usr/bin/env python
|
|
#
|
|
# The way you use this is you create a script that takes in as its first
|
|
# argument a count. The script passes into LLVM the count via a command
|
|
# line flag that disables a pass after LLVM has run after the pass has
|
|
# run for count number of times. Then the script invokes a test of some
|
|
# sort and indicates whether LLVM successfully compiled the test via the
|
|
# scripts exit status. Then you invoke bisect as follows:
|
|
#
|
|
# bisect --start=<start_num> --end=<end_num> ./script.sh "%(count)s"
|
|
#
|
|
# And bisect will continually call ./script.sh with various counts using
|
|
# the exit status to determine success and failure.
|
|
#
|
|
import os
|
|
import sys
|
|
import argparse
|
|
import subprocess
|
|
|
|
parser = argparse.ArgumentParser()
|
|
|
|
parser.add_argument('--start', type=int, default=0)
|
|
parser.add_argument('--end', type=int, default=(1 << 32))
|
|
parser.add_argument('command', nargs='+')
|
|
|
|
args = parser.parse_args()
|
|
|
|
start = args.start
|
|
end = args.end
|
|
|
|
print("Bisect Starting!")
|
|
print("Start: %d" % start)
|
|
print("End: %d" % end)
|
|
|
|
last = None
|
|
while start != end and start != end-1:
|
|
count = start + (end - start)/2
|
|
print("Visiting Count: %d with (Start, End) = (%d,%d)" % (count, start, end))
|
|
cmd = [x % {'count':count} for x in args.command]
|
|
print cmd
|
|
result = subprocess.call(cmd)
|
|
if result == 0:
|
|
print(" PASSES! Setting start to count")
|
|
start = count
|
|
else:
|
|
print(" FAILS! Setting end to count")
|
|
end = count
|
|
|
|
print("Last good count: %d" % start)
|