Andrea Gussoni be72da8b48 IDS: improve collection restart criterion
We now reduce the number of cases in which we restart the collection of
the `DivergenceDescriptor`s after a IDS modification on the `ScopeGraph`
is performed.

We previously restarted the collection after each IDS transformation.

Now, restart is only performed after IDS is applied on a `Conditional`
node whose all successors are divergent exits which are `goto` exits.
After such `Conditional` is processed, it may happen that a new `goto`
exit becomes divergent for another `Conditional` upwards in the
`ScopeGraph`.
Therefore, if we do not restart, it may happen that a non-`goto` exit is
processed before a `goto` exit, which may lead to suboptimal situations
in the emitted number of `goto`s, due to how IDS interacts with
`MaterializeTrivialGotos`.
2025-06-12 15:31:38 +02:00
2024-11-21 15:54:23 +01:00
2024-02-26 16:02:52 +01:00
2024-02-26 16:02:52 +01:00
2024-12-11 16:15:43 +01:00
2024-11-21 15:54:23 +01:00

The rev.ng binary analysis framework and decompiler

Welcome to the rev.ng project!

rev.ng is an open source binary analysis framework based on LLVM and QEMU. It features a full-fledged decompiler. It's developed by rev.ng Labs in the open.

Getting started

Head to the online documentation to get started (source).

Getting in touch

You can get in touch with us through the following means:

  • X/Twitter, for the latest news about the project;
  • Discord, a place for chatting for users and developers;
  • Discourse, for user discussions;
  • GitHub, for development issues and PRs;
  • E-mail, for anything else;

License

The rev.ng binary analysis framework and decompiler is Free Software.

rev.ng depends on certain on GPLv2 components (in particular, QEMU), so the project is GPLv2-licensed as a whole. However, the individual files are licensed under the MIT license.

S
Description
Automated archival mirror of github.com/revng/revng
Readme GPL-2.0 24 MiB
Languages
C++ 77.1%
Python 12.6%
MLIR 4.4%
CMake 1.9%
LLVM 1.4%
Other 2.5%