Integrated: 8260650: test failed with "assert(false) failed: infinite loop in PhaseIterGVN::optimize"
Igor Veresov
iveresov at openjdk.java.net
Tue Mar 16 21:46:09 UTC 2021
On Tue, 16 Mar 2021 05:08:15 GMT, Igor Veresov <iveresov at openjdk.org> wrote:
> The test constructs a large tree of `AddINode`s that add constants to a variable. The tree is completely constant-foldable. Depending of the processing order the folding process may happen in the loop in `PhaseIterGVN::transform_old()` instead of going through the worklist. That blows through the loop limit, which triggers assert. The solution is to make the loop limit proportional to the number of live nodes. I chose it to be `K*live_nodes()`, which is already the limit in `PhaseIterGVN::optimize()`. I also noticed the same problem in `PhaseGVN::transform_no_reclaim()` and adjusted the code accordingly.
This pull request has now been integrated.
Changeset: 996079b9
Author: Igor Veresov <iveresov at openjdk.org>
URL: https://git.openjdk.java.net/jdk/commit/996079b9
Stats: 52 lines in 2 files changed: 22 ins; 6 del; 24 mod
8260650: test failed with "assert(false) failed: infinite loop in PhaseIterGVN::optimize"
Reviewed-by: thartmann, kvn
-------------
PR: https://git.openjdk.java.net/jdk/pull/3022
More information about the hotspot-compiler-dev
mailing list