This pull request extends an already existing attempt to port C-Reduce to Python (#114).
First, I have to say that @mpflanzer did a great job and the port is really nice. I see it great opportunity to modernize the tool that I've used 1000x for reducting of GCC bugs. I really like the tool and I must thank you for what you've done so far.
The reasoning for the port:
the port is feature complete, it implements all passes supported by Perl version
a built-in class BinaryState is used by passes that do a binary search of a state space
Python port contains unit-tests for a portion of passes
the port contains patches for LLVM 9 and LLVM 10 that are not yet merged upstream
configure & make build system is removed; I see it redundant to CMake
a new option --test-manager {conservative,fast-conservative,non-deterministic} is added to select different reduction strategies
a new option --remove-pass is added for skipping of a pass
delta and unifdef subfolders are removed - I bet these tools should be run-time prerequisites
Future plans:
I'm willing to maintain and develop the Python core and I would like to become one of the project maintainers. Hope the community will welcome the port.
Right now I'm going to come up with a parallel transform phase that can rapidly increase interestingness of clang_delta pass. It seems that the initial replace-function-with-decl and remove-unused-function passes are very effective, but run practically serially.
This pull request extends an already existing attempt to port C-Reduce to Python (#114). First, I have to say that @mpflanzer did a great job and the port is really nice. I see it great opportunity to modernize the tool that I've used 1000x for reducting of GCC bugs. I really like the tool and I must thank you for what you've done so far.
The reasoning for the port:
BinaryState
is used by passes that do a binary search of a state space--test-manager {conservative,fast-conservative,non-deterministic}
is added to select different reduction strategies--remove-pass
is added for skipping of a passdelta
andunifdef
subfolders are removed - I bet these tools should be run-time prerequisitesSpeed comparison: I selected 3 GCC bugs and corresponding log files can be seen here: https://github.com/marxin/creduce-benchmarks
Collected statistics:
pr94526-m68k-ice
: 77 to 66 secondspr92516-vectorize-ice
: 4624 to 2515 secondspr94523-template-depth
: 2032 to 833 secondsFuture plans: I'm willing to maintain and develop the Python core and I would like to become one of the project maintainers. Hope the community will welcome the port. Right now I'm going to come up with a parallel
transform
phase that can rapidly increase interestingness ofclang_delta
pass. It seems that the initialreplace-function-with-decl
andremove-unused-function
passes are very effective, but run practically serially.Thanks.