PRUNERS / FLiT

A project to quickly detect discrepancies in floating point computation across hardware, compilers, libraries and software.
Other
36 stars 6 forks source link

Bisect feature: match compiler into the baseline #234

Open IanBriggs opened 6 years ago

IanBriggs commented 6 years ago

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.