You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.0 KiB
81 lines
2.0 KiB
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
# Copyright 2020 The ChromiumOS Authors
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
"""Command script without compiler support for pass level bisection.
|
|
|
|
This script generates a pseudo log which a workable compiler should print out.
|
|
It assumes that -opt-bisect-limit and -print-debug-counter are supported by the
|
|
compiler.
|
|
"""
|
|
|
|
|
|
import os
|
|
import sys
|
|
|
|
from binary_search_tool.test import common
|
|
|
|
|
|
def Main(argv):
|
|
if not os.path.exists("./is_setup"):
|
|
return 1
|
|
|
|
if len(argv) != 3:
|
|
return 1
|
|
|
|
limit_flags = os.environ["LIMIT_FLAGS"]
|
|
opt_bisect_exist = False
|
|
debug_counter_exist = False
|
|
|
|
for option in limit_flags.split():
|
|
if "-opt-bisect-limit" in option:
|
|
opt_bisect_limit = int(option.split("=")[-1])
|
|
opt_bisect_exist = True
|
|
if "-debug-counter=" in option:
|
|
debug_counter = int(option.split("=")[-1])
|
|
debug_counter_exist = True
|
|
|
|
if not opt_bisect_exist:
|
|
return 1
|
|
|
|
# Manually set total number and bad number
|
|
total_pass = 10
|
|
total_transform = 20
|
|
bad_pass = int(argv[1])
|
|
bad_transform = int(argv[2])
|
|
|
|
if opt_bisect_limit == -1:
|
|
opt_bisect_limit = total_pass
|
|
|
|
for i in range(1, total_pass + 1):
|
|
bisect_str = (
|
|
"BISECT: %srunning pass (%d) Combine redundant "
|
|
"instructions on function (f1)"
|
|
% ("NOT " if i > opt_bisect_limit else "", i)
|
|
)
|
|
print(bisect_str, file=sys.stderr)
|
|
|
|
if debug_counter_exist:
|
|
print("Counters and values:", file=sys.stderr)
|
|
print(
|
|
"instcombine-visit : {%d, 0, %d}"
|
|
% (total_transform, debug_counter),
|
|
file=sys.stderr,
|
|
)
|
|
|
|
if opt_bisect_limit > bad_pass or (
|
|
debug_counter_exist and debug_counter > bad_transform
|
|
):
|
|
common.WriteWorkingSet([1])
|
|
else:
|
|
common.WriteWorkingSet([0])
|
|
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
retval = Main(sys.argv)
|
|
sys.exit(retval)
|