Describe the new feature:
Bisect can fail due to symbol level incompatibility between the baseline compiler and the target compiler exhibiting the non-reproducible result. In many of these cases, the target compiler can produce the same result as the baseline when compiling with -O0. We can sidestep compiler incompatibility in this case and use the target compiler at -O0 as a pseudo baseline.
Suggested change:
If bisect is handed a target compilation which uses a different compiler than the baseline then we can do a test run using the target compiler at -O0. If this run is considered reproducible then we can use it as this pseudo baseline, if not then bisect can continue as it does now.
This would increase the number of test runs by one when the baseline and target compiler do not match, but I contend this cost may be worth it to decrease the number of bisects which fail due to crashes introduced by mixing symbols between compilers in the same object file.
Feature Request
Describe the new feature: Bisect can fail due to symbol level incompatibility between the baseline compiler and the target compiler exhibiting the non-reproducible result. In many of these cases, the target compiler can produce the same result as the baseline when compiling with -O0. We can sidestep compiler incompatibility in this case and use the target compiler at -O0 as a pseudo baseline.
Suggested change: If bisect is handed a target compilation which uses a different compiler than the baseline then we can do a test run using the target compiler at -O0. If this run is considered reproducible then we can use it as this pseudo baseline, if not then bisect can continue as it does now.
This would increase the number of test runs by one when the baseline and target compiler do not match, but I contend this cost may be worth it to decrease the number of bisects which fail due to crashes introduced by mixing symbols between compilers in the same object file.