Closed
Description
Bug report
Bug description:
It is my understanding that a little while ago RETURN_CONST was added as a new instruction #101632
It is to replace cases where LOAD_CONST and RETURN_VALUE appear sequentially.
I was playing around with the bytecode and found that a case:
def func(x):
return True if x else False
That has the following bytecode:
2 LOAD_FAST 0 (x)
4 POP_JUMP_IF_FALSE 2 (to 10)
6 LOAD_CONST 1 (True)
8 RETURN_VALUE
10 LOAD_CONST 2 (False)
12 RETURN_VALUE
While a similar function:
def func(x):
if x:
return True
else:
return False
Produces this bytecode:
2 LOAD_FAST 0 (x)
4 POP_JUMP_IF_FALSE 1 (to 8)
6 RETURN_CONST 1 (True)
8 RETURN_CONST 2 (False)
It seems like the instructions LOAD_CONST and RETURN_VALUE are not being combined properly in the first case.
I have confirmed with some members of the python team that this is a small bug/optimization opportunity and I would like to take a swing at fixing it.
CPython versions tested on:
3.12
Operating systems tested on:
No response