C-Reduce, a C program reducer
chenyang78 Merge pull request #172 from 360CodeSafe/master
Use a different name for the sub loop
Latest commit 5910abf Sep 21, 2018
Permalink
Failed to load latest commit information.
autoconf Regenerate Autoconf/Automake stuff. Mar 22, 2018
clang_delta Use a different name for the sub loop Sep 20, 2018
clex Regenerate Autoconf/Automake stuff. Mar 22, 2018
cmake Add CMake module for extracting git info. Jun 10, 2016
creduce Merge pull request #169 from jwilk-forks/nprocs Aug 22, 2018
delta Regenerate Autoconf/Automake stuff. Mar 22, 2018
m4 Add source comments to "ax_clang.m4". Mar 17, 2017
scripts Remove remaining references to `Sys::CPU` Perl module. Jun 25, 2018
tests Regenerate Autoconf/Automake stuff. Mar 22, 2018
unifdef Regenerate Autoconf/Automake stuff. Mar 22, 2018
.gitattributes Use the git-version CMake module. Jun 10, 2016
.gitignore Make minor cleanups to ".gitignore" files. May 22, 2016
.travis.yml Update copyright years. Mar 12, 2018
AUTHORS Update package build and installation instructions. Jun 7, 2012
CMakeLists.txt Increment version number to 2.9.0. Jul 6, 2018
COPYING Update copyright years. Jul 6, 2018
ChangeLog Initial work toward Autotool-ization. Mar 20, 2012
Dockerfile Add copyright and license statement to Dockerfile. Nov 17, 2015
INSTALL Mention CMake-based build system near the top of the file. Jul 6, 2018
Makefile.am Include `cmake` directory in distributions. Jun 11, 2016
Makefile.in Regenerate Autoconf/Automake stuff. Mar 22, 2018
NEWS Initial work toward Autotool-ization. Mar 20, 2012
README Fix option name Jul 16, 2018
TODO add todo about try-catch Mar 14, 2018
aclocal.m4 Regenerate Autoconf/Automake stuff. Mar 22, 2018
bootstrap Initial work toward Autotool-ization. Mar 20, 2012
cmake_config.h.in Added CMake configuration for Windows Jul 9, 2015
config.h.in Rerun Autoconf. May 1, 2015
configure Increment version number to 2.9.0. Jul 6, 2018
configure.ac Remove remaining references to `Sys::CPU` Perl module. Jun 25, 2018
git-hash.sh Refer to the `COPYING' file for license details. Jun 7, 2012
version.m4 Increment version number to 2.9.0. Jul 6, 2018

README

-*- mode: Text -*-

--------------------------------------------------------------------

About C-Reduce:

C-Reduce is a tool that takes a large C or C++ program that has a
property of interest (such as triggering a compiler bug) and
automatically produces a much smaller C/C++ program that has the same
property.  It is intended for use by people who discover and report
bugs in compilers and other tools that process C/C++ code.

NOTE: C-Reduce happens to do a pretty good job reducing the size of
programs in languages other than C/C++, such as JavaScript and Rust.
If you need to reduce programs in some other language, please give it
a try.

Documentation and other information can be found at the C-Reduce web
page:

  http://embed.cs.utah.edu/creduce/

--------------------------------------------------------------------

Installation:

see the file INSTALL

--------------------------------------------------------------------

Notes:

1. When set to use more than one core, C-Reduce can cause space in
/tmp to be leaked. This happens because sometimes C-Reduce will kill a
compiler invocation when a result that is computed in parallel makes
it clear that that compiler invocation is no longer useful. If the
compiler leaves files in /tmp when it is killed, C-Reduce has no way
to discover and remove the files. You will need to do this manually
from time to time if temporary file space is limited. The leakage is
typically pretty slow. If you need to avoid this problem altogether,
you can run C-Reduce on a single core (using "--n 1") in which case
C-Reduce will never kill a running compiler instance. Alternatively, a
command line option such as -pipe (supported by gcc) may suppress the
creation of temporary files altogether. Another possibility is to set
the TMPDIR environment variable to something like "/tmp/creduce-stuff"
before invoking C-Reduce -- assuming that the tools you are invoking
respect this variable.

2. Each invocation of the interestingness test is performed in a fresh
temporary directory containing a copy of the file that is being
reduced. If your interestingness test requires access to other files,
you should either copy them into the current working directory or else
refer to them using an absolute path.

--------------------------------------------------------------------