[llvm-dev] C-Vise project introduction

Martin Liška via llvm-dev llvm-dev at lists.llvm.org
Thu Apr 23 05:48:50 PDT 2020


Hello.

I would like to announce a new Python fork of the C-Reduce tool:
https://github.com/marxin/cvise

I'm going to start with a bit of history and motivation behind the project.
All started 6 years ago when I joined SUSE as a toolchain developer and I quickly
became a friend with C-Reduce that I've been using for reduction of the GCC compiler
test-cases. No having enough numbers, but I claim I've used the tool probably
one thousand times and I must be one the biggest users of the tool. I wanted
to contribute to the project since then but I'm not much familiar with Perl language.
There's a pending attempt of Moritz who rewrote the tool to Python language 4 year ago
and he hasn't received a proper review. I feel the original authors don't like the language
and when he announced a final comparable port (2 years ago) there was still no feedback.
I took his work and now I'm offering the port to the community with the following improvements:

1) C-Vise is a super-parallel implementation where all passes run their transform and test script
    phase in parallel; that resolves #160; I've seen significant speed up on a 16-core Zen CPU
2) the project contains native BinaryState object which can help with fast traversal of a state space
3) Python is hopefully more popular language than Perl

Minor improvements:
- --log-level option - one can print different level of messages
- --remove-pass - one can skip a pass in pass manager (#200, #202)
- --list-passes - listing of existing passes (#150)
- project contains unit tests for some passes
- LLVM 9 and 10 support (#193, #204)
- --clang-delta-std option - workaround for #210
- unifdef and delta subprojects are removed from the repository
- --timing-since-start - print timestamps since the start of a reduction

Known limitations:
- configure & make build support is dropped
- FreeBSD and Windows port is not tested
- dependency on python-Pebble package
- a small issue observed in Pebble (noxdafox/pebble#58)

I'm planning to create a proper Github release soon and I've done an openSUSE package:
https://build.opensuse.org/package/show/home:marxin:devel:tools/cvise

I would like to thank the original authors and Moritz for the port.
I'm planning to share the codebase of clang_delta (and clex) which is an essential
part of each C/C++ test-case reduction process.

Feel free to test the project and come up with a feedback.

Martin


More information about the llvm-dev mailing list