DeadCodeProductions / dead

Other
50 stars 5 forks source link

Basic diff #59

Closed thetheodor closed 1 year ago

thetheodor commented 1 year ago

Missing:

thetheodor commented 1 year ago

@Quarub this is the most basic diff testing functionality

It's still incomplete so feel free to ignore this. But it shows the core idea.

I think it's quite nice how short this can be given the new dead_instrumenter and diopter

thetheodor commented 1 year ago

@Quarub This implements a very basic version of the differential testing part. Can be used, e.g., as: python -m dead "clang-14 -O3" "clang-15 -O3" output_directory --testing_mode=unidirectional This will generate and test in parallel cases and dump (in a very stupid way) the results in output_directory

thetheodor commented 1 year ago

I'll add reductions in a subsequent PR

thetheodor commented 1 year ago

I'm wondering if dead2 should follow the "data hoarding" approach like I used in the ORM version, i.e. instead of storing the difference of markers, we store all alive markers and have the interestingness test as a separate function.

Pro: Nearly free signatures and signature tests. Test-type can be decided after the fact.

Con: Complexity.

Yup, it probably makes sense to directly store the marker status (probably other stuff as well?), but atm it's very easy to extract them: case.program.find_{alive,dead}_markers(case.setting{1,2}).

I am wondering if it would make sense to directly store some kind of signature instead of plainly listing markers