This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Explore whether peephole.c tuple of constants folding can be an AST transformation
Type: Stage: resolved
Components: Interpreter Core Versions: Python 3.7
process
Status: closed Resolution: rejected
Dependencies: Superseder:
Assigned To: serhiy.storchaka Nosy List: methane, rhettinger, serhiy.storchaka, vstinner
Priority: low Keywords:

Created on 2017-12-16 09:04 by rhettinger, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Messages (2)
msg308467 - (view) Author: Raymond Hettinger (rhettinger) * (Python committer) Date: 2017-12-16 09:04
Can the peephole optimizer's fold_tuple_on_constants() be moved to ast_opt?

It looks to me like there is sufficient information in the tree:


import ast
print(ast.dump(ast.parse('c = (50+1, 60+2)')))
-----------------------------------------------
Module(body=[Assign(targets=[Name(id='c', ctx=Store())],
                    value=Tuple(elts=[BinOp(left=Num(n=50), op=Add(), right=Num(n=1)),
                                      BinOp(left=Num(n=60), op=Add(), right=Num(n=2))], ctx=Load()))],
       docstring=None)
'''
msg308469 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2017-12-16 09:51
Tuples represented in AST already are optimized at AST level. But there are tuples created at compilation stage (see the code emitting BUILD_TUPLE). Inada's PR 4879 simplifies the peephole optimizer.

I tried to move this optimization at the compiler level, but it is more complex change. Making this change can have additional advantages, but is just more complex. I think at end all remaining peephole optimizations will be moved to the compiler, so that it will generate already optimized code. Many optimizations had already moved, and I have yet few unfinished patches.
History
Date User Action Args
2022-04-11 14:58:55adminsetgithub: 76525
2017-12-16 09:51:39serhiy.storchakasetstatus: open -> closed
resolution: rejected
messages: + msg308469

stage: resolved
2017-12-16 09:04:09rhettingercreate