blob: 3d419b266daa128aa86884fef046af157b2aeadd [file] [log] [blame]
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) Prerequisite
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 for more detailed instructions.
2) Pass/Transformation Bisection
If you do not wish to override the other arguments, this command should
be sufficient to do pass/transformation level bisection:
./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.
3) Other features:
Features such as resuming, number of jobs, and device id remain the
same as before. See README.bisect for more details.