about summary refs log tree commit diff
path: root/docs/FAQ.md
diff options
context:
space:
mode:
authorMichael Rodler <michael.rodler@paluno.uni-due.de>2021-06-11 11:02:29 +0200
committerGitHub <noreply@github.com>2021-06-11 11:02:29 +0200
commit0978c08f4b476dbb90c50ae5d7e6104d3325ef2e (patch)
tree970e16e8956ab16dc596ee15e9196efc40f47618 /docs/FAQ.md
parentb9f260452e69834c4eeb3be136474463d8fa6b70 (diff)
downloadafl++-0978c08f4b476dbb90c50ae5d7e6104d3325ef2e.tar.gz
split-comparison llvm pass refactor for smaller compilation times (and a small bug fix) (#964)
* Refactored split compare pass to be more efficient in LTO usage and allow splitting to other minimum bitwidths.

Efficiency: avoid looping over the whole llvm module N times, when once is also enough.

Bitwidth: Previously, due to fallthrough in switch-case, all comparisons were split to 8-bit, which might not be desirable e.g., 16 or 32 bit might be enough. So now all comparison are split until they are smaller or equal to the target bitwidth, which is controlled through the `AFL_LLVM_LAF_SPLIT_COMPARES_BITW` environment variable.

* fixed miscompilation due to incorrectly trying to split a signed comparison operator

* minor formatting updates and use IRBuilder when inserting multiple instructions

* added @hexcoder-'s test-int_cases.c to make test

* Avoid recursion; switch to smallvector in splitAndSimplify; use switch case for icmp type;

* Fixed issue when splitting < where the inverse comparison was not further split

* some cleanup
Diffstat (limited to 'docs/FAQ.md')
0 files changed, 0 insertions, 0 deletions