-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Single block loops not placed into loop region #45
Comments
This happens when there is a backedge from header to itself. This is the reproducer:
And this is the rendering of it: This, on the other hand is the rendering of the failed transform, as you can see the backedge from header to header has simply not been processed. |
The following patch will fix this case:
And yield the following, correct, result: However, this breaks the fig.3 test with:
|
This is the same error as in: #48 |
An alternative fix that doesn't break the test suite may be:
|
Fixes numba#45 Headers of multi-block loops that have a backedge to themselves, didn't have this processed. The case of: `label not in doms[jt]` accounts for the case, where there were multiple entry edges into the loop and the original header has been replaced with a synthetic one. An alternative fix would have been to simply delete this check, but then this breaks the test case `test_double_header` (after hacking the followup issues). This fix is non-intrusive and a test for the edge cases has been added too.
Fixes numba#45 Headers of multi-block loops that have a backedge to themselves, didn't have this processed. The case of: `name not in doms[jt]` accounts for the case, where there were multiple entry edges into the loop and the original header has been replaced with a synthetic one. An alternative fix would have been to simply delete this check, but then this breaks the test case `test_double_header` (after hacking the followup issues). This fix is non-intrusive and a test for the edge cases has been added too.
Fixes numba#45 Headers of multi-block loops that have a backedge to themselves, didn't have this processed. The case of: `name not in doms[jt]` accounts for the case, where there were multiple entry edges into the loop and the original header has been replaced with a synthetic one. An alternative fix would have been to simply delete this check, but then this breaks the test case `test_double_header` (after hacking the followup issues). This fix is non-intrusive and a test for the edge cases has been added too.
Fixes numba#45 Headers of multi-block loops that have a backedge to themselves, didn't have this processed. The case of: `name not in doms[jt]` accounts for the case, where there were multiple entry edges into the loop and the original header has been replaced with a synthetic one. An alternative fix would have been to simply delete this check, but then this breaks the test case `test_double_header` (after hacking the followup issues). This fix is non-intrusive and a test for the edge cases has been added too.
From
DEBUGGRAPH=1 pytest numba_rvsdg/tests/test_mock_asm.py::test_mock_scfg_fuzzer_case36
of #42 .Single block loops are not restructured:
CFG:
After loop restructuring
The text was updated successfully, but these errors were encountered: