Move const folding to the peephole optimizer
Open
@tomasr8 is already working on this.
Since Dec 21, 2024.
interpreter-core
type-feature
- Dominant language
- Python
- Stars
- 77.2k
- Forks
- 35.9k
- PR merge metrics
- PR metrics pending
Description
Feature or enhancement
Proposal:
For additional context see https://github.com/python/cpython/pull/126830#issuecomment-2476525196.
Flow graph optimizer has more information and can do better job.
The problem is that we need to convert from UNARY_OP(-, CONST(1)) to CONST(-1), still before the code generation phase, because this leads to a few problems, one of which is shown below.
x = 1
match x:
case -0:
y = 0
eclips4@nixos ~/p/p/cpython (remove-ast-optimizer)> ./python example.py
File "/home/eclips4/programming/programming-languages/cpython/example.py", line 4
case -0:
^^
SyntaxError: patterns may only match literals and attribute lookups
cc @markshannon
Has this already been discussed elsewhere?
No response given
Links to previous discussion of this feature:
No response
Linked PRs
- gh-128802
- gh-129426
- gh-129550
- gh-129568
- gh-129634
- gh-129703
- gh-129963
- gh-130016
- gh-130032
- gh-130109
- gh-130769
- gh-131054
- gh-131826
- gh-131830
- gh-146631
- gh-147187
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.