1
0
Fork 0
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.

84 lines
2.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Pass bisection
This document describes a feature for the bisection tool, which provides
pass and transformation level bisection for a bad object file.
Before reading this document, please refer to README.bisect for general usage
of the bisection tool.
The benefit of using pass level bisection is:
When building a bad object file, it can tell you which pass and transformation
in the compiler caused the error.
*Notice:* This tool will only work for LLVM/clang, since it is using options
`-opt-bisect-limit` and `print-debug-counter` that only exist in LLVM.
## Arguments
All the required arguments in object-file-level bisection tool are still
to be provided. In addition, you will need to add the following arguments:
1. `--pass_bisect`: enables pass level bisection
2. `--ir_diff`: enables output of IR differences
Please refer to `--help` or the examples below for details about how to use
them.
## HOW TO USE: ChromeOS
*TODO* - Future work: Currently this only works for Android.
## HOW TO USE: Android
1. Prerequisites: A general setup is still needed for Android, which means that
you need to populate good and bad set of objects with two versions of
compilers.
See the documentation in `README.bisect.md` for more detailed instructions.
1. Pass/Transformation Bisection: If you do not wish to override the other
arguments, this command should be sufficient to do pass/transformation level
bisection:
```
./run_bisect.py android PATH_TO_ANDROID_HOME_DIR
--pass_bisect=android/generate_cmd.sh
--prune=False
--ir_diff
--verbose
```
Where:
```
--pass_bisect:
Enables pass/transformation level bisection and with default
script to generate the command as android/generate_cmd.sh.
--prune:
For now, prune must be set to False to return only the first
bad item.
--ir_diff:
Optional argument to print out IR differences.
--verbose:
To show IR diff, verbose needs to be on.
```
Other default arguments:
```
--get_initial_items='android/get_initial_items.sh'
--switch_to_good='android/switch_to_good.sh'
--switch_to_bad='android/switch_to_bad.sh'
--test_setup_script='android/test_setup.sh'
--test_script='android/interactive_test.sh'
--incremental
--prune
--file_args
```
You can always override them if needed. See README.bisect for more
details.
1. Other features: Features such as resuming, number of jobs, and device id
remain the same as before. See README.bisect for more details.