[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [creduce-dev] Making creduce more parallel



Hi Nick,

On 2017-01-26 14:28, Nick Fitzgerald wrote:

How are the passes / reducers structured right now? If we can generate
all of a pass's potential reductions up front, then they can be
inserted into the queue in a random order to reduce the likelihood of
conflicts. If the passes don't separate generating a potential
reduction from testing it, then we may need to refactor more.


All of the passes residing in clang_delta are able to dump the number of potential reduction candidates before actually performing reduction. Then, we can tell clang_delta to take actions on individual candidate by passing a counter option. For example,

$ cat test.cc
int foo() {
  unsigned x = 1;
  unsigned y = 2;
}
$ ../clang_delta --query-instances=local-to-global test.cc
Available transformation instances: 2
$ ../clang_delta --transformation=local-to-global --counter=1 test.cc
unsigned int foo_x = 1;
int foo() {

  unsigned y = 2;
}
$ ../clang_delta --transformation=local-to-global --counter=2 test.cc
unsigned int foo_y = 2;
int foo() {
  unsigned x = 1;

}

However, there are a lot of other passes in the creduce sub-directory, which don't provide the same facility at the moment.

- Yang