-
Notifications
You must be signed in to change notification settings - Fork 163
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
Fixing Symbolic List assignment #2477
Conversation
I've added few comments for our understanding and I've also added the failing case raised here (#2450 (comment)) as a test. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thin this is good. Thanks for fixing this! I think you can merge it.
Thanks for the review. I think we can go forward with this. If we are looking to customize the symbolic pass even more (if we come across any improvement maybe) let's address it through subsequent PRs. |
cc @certik I am not sure if I have permissions to merge something untill all requirements are met (I can enable auto-merge squash or rabase when all requirements are met) . |
Explaining the operations/changes that the ASR symbolic pass introduces
Now as discussed here Seg Fault for case involving symbolic lists through llvm backend #2450 (comment) , case
ii
is always a deep copy and as observed works without any issues. Though this can surely be improvedRather than the simple assignment we could have something like
i) Empty l1
ii) Appening elements of l1 with
basic_heap
iii)
basic_assign
between elements of l1 & l2But that can be taken care of later
The pass essentially deals with case
i
What happens is the following (Snippet 1 is transformed into Snippet 2)