-
Notifications
You must be signed in to change notification settings - Fork 5.4k
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
Introduce recursive analysis via cycle finding in dependency graph. #5210
Conversation
373fc26
to
3476a65
Compare
This approach still has a few problems, it's currently failing in a few more complex situations due to to the pass getting confused with tracking (non-)monomorphized ids. We'll need to better track between the original unmonorphized id and the monorphized ids. The CFG pass also had the same issue and we solved it by using the parents abstraction on the engines, but this was kinda of a temporary hack. Will be looking into a better way to track this. |
Not yet send me this msg
Le mar. 24 oct. 2023 à 17:33, João Matos ***@***.***> a
écrit :
… This approach still has a few problems, it's currently failing in a few
more complex situations due to to the pass getting confused with tracking
(non-)monomorphized ids. We'll need to better track between the original
unmonorphized id and the monorphized ids. The CFG pass also had the same
issue and we solved it by using the parents abstraction on the engines, but
this was kinda of a temporary hack. Will be looking into a better way to
track this.
—
Reply to this email directly, view it on GitHub
<#5210 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/A3DTGUX3CXVXFLKCDK5OZN3YA7UUJAVCNFSM6AAAAAA6I3FO76VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONZXGYYDOMBWGU>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
5188dfd
to
df42ef6
Compare
cb8b296
to
1b05581
Compare
1b05581
to
8638b13
Compare
8638b13
to
944e6d1
Compare
Description
This PR introduces a new recursive analysis pass, which is implemented for for regular and impl traits functions.
It works computing a dependency graph, and then running the Johnson graph cycle finding algorithm in the graph.
Regular functions still use the old recursive analysis pass due to issues with disabling the old dependency pass. When disabling the old recursion analysis code for regular functions, we get a stack overflow in the existing dependency map building code, which is shared with the existing type recursion analysis code.
Closes #4954.
Checklist
Breaking*
orNew Feature
labels where relevant.