I've pushed changes to C-Reduce that support reducing more than one file at a time. Use cases include:

- reductions for LTO bugs

- reducing a file + its transitive includes when, for whatever reason, reducing the preprocessed file does not work

(As always, if you can reduce a preprocessed file, you should do so.)

To support the second case, I wrote a program that copies each transitive include file for a C/C++ file into the cwd, renaming files as necessary (there are 8 files called "errno.h" under /usr/include on one of my machines) and also replacing each <foo>-style include with a "foo"-style include. The program is in scripts/localize_headers. To use it you need to modify a few variables up at the top. Let me know if you have either a good or a bad experience with this script. I'm not sure that it is very robust but it has worked for me.

Multifile reduction works by running each pass over all files that are being reduced. It is often the case that some files go to zero bytes. C-Reduce could at this point try to delete such files, but it doesn't do that yet.

I also beefed up C-Reduce's usage info.

clang-delta becomes pretty crashy on non-preprocessed files. I don't really know what is going on, but these crashes are largely harmless. Please don't kill us with bug reports about this.

Testing appreciated.  I've only tested on Linux so far.

John

Reply via email to