Skip to content

gh-123958: move assert optimization from codegen to ast_opt #124143

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

Closed
wants to merge 4 commits into from

Conversation

iritkatriel
Copy link
Member

@iritkatriel iritkatriel commented Sep 16, 2024

if (OPTIMIZATION_LEVEL(c)) {
return SUCCESS;
}
assert(!OPTIMIZATION_LEVEL(c));
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left this here to convince ourselves of correctness. I'll remove it before committing.

@Eclips4 Eclips4 self-requested a review September 16, 2024 22:16
Comment on lines +1035 to +1036
if (state->optimize) {
make_pass(node_);
Copy link
Member

@Eclips4 Eclips4 Sep 17, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Technically speaking, this is not the removal of the assert statement; it's replacement of assert with pass statement. Is it possible to completely remove the assert node? Or will it break some existing code?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pass becomes a NOP, which gets removed later. This is how we get rid of code. However, I did forget to wipe out the location information (a NOP is not removed if it's the only instruction from its line in the source code).

if (optimize):
co = compile(source, '?', mode, optimize=optimize)
co_expected = compile('pass', '?', mode, optimize=optimize)
self.assertEqual(list(co.co_lines()), list(co_expected.co_lines()))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like we no longer raise an error in optimized mode if there is an invalid await. That seems wrong and doesn't align with what we decided on in #121637.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we want to stick with this then we probably can't optimise the assertions in ast_opt.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants