xenial (1) creduce.1.gz

Provided by: creduce_2.5.0-0ubuntu1_amd64 bug

NAME

       creduce - C and C++ program reducer

DESCRIPTION

       creduce 2.5.0 (18e04be) -- a C and C++ program reducer

       C-Reduce  requires an "interestingness test" and one or more files to reduce, which must be writable. The
       interestingness test is an executable program (usually a shell script) that returns 0  when  a  partially
       reduced  file  is  interesting  (a candidate for further reduction) and returns non-zero when a partially
       reduced file is not interesting (not a candidate for further reduction --  all  uninteresting  files  are
       discarded).

       C-Reduce  runs  the  interestingness  test  in  a fresh temporary directory containing only the partially
       reduced file(s). Thus, when the interestingness test examines a partially reduced file,  it  must  do  so
       using  a relative path to the current working directory. On the other hand, when the interestingness test
       refers to any file that is not being reduced, this should be done using an absolute path.

       The interestingness test should not expect any command line arguments.  It should  be  deterministic  and
       might want to enforce resource limits on sub-commands that it invokes (e.g. using ulimit). In particular,
       C-Reduce is known to sometimes introduce an infinite loop into the program being reduced.  Therefore,  if
       the interestingness test runs the compiled program, it probably should do so under a timeout.

       As  a  quick  example, if you consider a file to be interesting if GCC's vectorizer fires while compiling
       it, you might use this interestingness test:

              gcc -w -O3 foo.c -S && grep xmm foo.s

       To see if your interestingness test is working, try running these commands:

              DIR=`mktemp  -d`  cp  file_to_reduce  [optionally,  more   files   to   reduce]   $DIR   cd   $DIR
              /path/to/interestingness_test echo $?

       This should result in "0" being echoed to the terminal. If this does not happen, the interestingness test
       is flawed and C-Reduce won't be able to make use of it.

       If you haven't written an interestingness test before, please  refer  to  this  tutorial  for  additional
       guidance:

              https://embed.cs.utah.edu/creduce/using/

       If at all possible, run C-Reduce on preprocessed code, generated for example using:

              gcc -E -P file.c

       If  you  cannot  reduce  preprocessed  code, you can either reduce just the non-preprocessed file or else
       perform a multi-file reduction on the file and its transitive includes (or any subset of  them).  In  the
       first  case  you  need  to  set the CREDUCE_INCLUDE_PATH environment variable to a colonseparated list of
       include directories in order for clang_delta to find them.

       If your interestingness test involves a cross compiler  and  the  characteristics  of  the  cross  target
       differs  from  the  host  you  will  need to set CREDUCE_TARGET_TRIPLE to match the cross target. This is
       particularly important if you are working with non-preprocessed code and use CREDUCE_INCLUDE_PATH.

       Press "s" at any time to skip to the  next  pass  (this  feature  is  disabled  unless  the  Perl  module
       Term::ReadKey is available on your system).

   Summary of options:
       --add-pass <pass> <sub-pass> <priority>
              Add the specified pass to the schedule

       --also-interesting <exitcode>
              A  process  exit  code  (somewhere  in the range 64-113 would be usual) that, when returned by the
              interestingness test, will cause C-Reduce to save a copy of the variant [default: -1]

       --debug
              Print debug information

       --die-on-pass-bug
              Terminate C-Reduce if a pass encounters an otherwise non-fatal problem

       --max-improvement <bytes>
              Largest improvement in file size from a single transformation that C-Reduce should accept  (useful
              only to slow C-Reduce down)

       --n <N>
              Number  of cores to use; C-Reduce tries to automatically pick a good setting but its choice may be
              too low or high for your situation [default: 2]

       --no-default-passes
              Start with an empty pass schedule

       --no-give-up
              Don't give up on a pass that hasn't made progress for 50000 iterations

       --nokill
              Wait for parallel instances to terminate on their own instead of killing  them  (only  useful  for
              debugging)

       --print-diff
              Show changes made by transformations, for debugging

       --sanitize
              Attempt to obscure details from the original source file

       --save-temps
              Don't delete /tmp/creduce-xxxxxx directories on termination

       --shaddap
              Suppress output about non-fatal internal errors

       --skip-initial-passes
              Skip initial passes (useful if input is already partially reduced)

       --skip-key-off
              Disable skipping the rest of the current pass when "s" is pressed

       --sllooww
              Try harder to reduce, but perhaps take a long time to do so

       --tidy Do not make a backup copy of each file to reduce as file.orig

       --timing
              Print timestamps about reduction progress

       usage: creduce [options] interestingness_test file_to_reduce [optionally, more files to reduce]

              creduce --help for more information

SEE ALSO

       The  full  documentation for creduce is maintained as a Texinfo manual.  If the info and creduce programs
       are properly installed at your site, the command

              info creduce

       should give you access to the complete manual.