
This issue trackerhas been migrated toGitHub, and is currentlyread-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.
Created on2016-10-24 05:16 byserhiy.storchaka, last changed2022-04-11 14:58 byadmin. This issue is nowclosed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| peephole_remove_unreachable_code.patch | serhiy.storchaka,2016-10-24 07:37 | review | ||
| Pull Requests | |||
|---|---|---|---|
| URL | Status | Linked | Edit |
| PR 552 | closed | dstufft,2017-03-31 16:36 | |
| Messages (8) | |||
|---|---|---|---|
| msg279297 -(view) | Author: Serhiy Storchaka (serhiy.storchaka)*![]() | Date: 2016-10-24 05:16 | |
>>> def func(test):... if test == 1:... return 1... elif test == 2:... return 2... return 3... >>> import dis>>> dis.dis(func)Python 3.5: 2 0 LOAD_FAST 0 (test) 3 LOAD_CONST 1 (1) 6 COMPARE_OP 2 (==) 9 POP_JUMP_IF_FALSE 16 3 12 LOAD_CONST 1 (1) 15 RETURN_VALUE 4 >> 16 LOAD_FAST 0 (test) 19 LOAD_CONST 2 (2) 22 COMPARE_OP 2 (==) 25 POP_JUMP_IF_FALSE 32 5 28 LOAD_CONST 2 (2) 31 RETURN_VALUE 6 >> 32 LOAD_CONST 3 (3) 35 RETURN_VALUEPython 3.6: 2 0 LOAD_FAST 0 (test) 2 LOAD_CONST 1 (1) 4 COMPARE_OP 2 (==) 6 POP_JUMP_IF_FALSE 14 3 8 LOAD_CONST 1 (1) 10 RETURN_VALUE 12 JUMP_FORWARD 12 (to 26) 4 >> 14 LOAD_FAST 0 (test) 16 LOAD_CONST 2 (2) 18 COMPARE_OP 2 (==) 20 POP_JUMP_IF_FALSE 26 5 22 LOAD_CONST 2 (2) 24 RETURN_VALUE 6 >> 26 LOAD_CONST 3 (3) 28 RETURN_VALUENote JUMP_FORWARD after RETURN_VALUE in 3.6 listing. | |||
| msg279298 -(view) | Author: Serhiy Storchaka (serhiy.storchaka)*![]() | Date: 2016-10-24 07:37 | |
Proposed patch fixes removing unreachable code after RETURN_VALUE in peephole optimizer. | |||
| msg279320 -(view) | Author: Stéphane Wirtel (matrixise)*![]() | Date: 2016-10-24 16:56 | |
Hi Serhiy,Could you help me, because I don't understand your patch ? because a RETURN_VALUE will go to the end of the block, and in this case, I don't understand why there is a JUMP_FORWARD at 12 in Python 3.6. | |||
| msg279348 -(view) | Author: Raymond Hettinger (rhettinger)*![]() | Date: 2016-10-25 02:54 | |
+0 The situation this addresses isn't common and the patch will rarely produce a perceptable benefit (just making the disassembly look a little nicer). That said, change looks simple enough and doesn't add any overhead. | |||
| msg279359 -(view) | Author: Roundup Robot (python-dev)![]() | Date: 2016-10-25 06:42 | |
New changeset5784cc37b5f4 by Serhiy Storchaka in branch '3.6':Issue#28517: Fixed of-by-one error in the peephole optimizer that causedhttps://hg.python.org/cpython/rev/5784cc37b5f4New changeset8d571fab4d66 by Serhiy Storchaka in branch 'default':Issue#28517: Fixed of-by-one error in the peephole optimizer that causedhttps://hg.python.org/cpython/rev/8d571fab4d66 | |||
| msg279366 -(view) | Author: Serhiy Storchaka (serhiy.storchaka)*![]() | Date: 2016-10-25 07:03 | |
The main problem was that this bug caused unnecessary breakage of tests in Victor's bytecode [1].Stéphane, the number of opcodes to the end of the block was counted incorrectly. Just off-by-one error. One unreachable opcode always was left.[1]https://github.com/haypo/bytecode | |||
| msg279367 -(view) | Author: Stéphane Wirtel (matrixise)*![]() | Date: 2016-10-25 07:10 | |
ah ok, thanks for the explanation. | |||
| msg329486 -(view) | Author: Gregory P. Smith (gregory.p.smith)*![]() | Date: 2018-11-08 21:09 | |
the off by one error fix here introduced a new off by one error. PR coming, followhttps://bugs.python.org/issue35193 for that. | |||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022-04-11 14:58:38 | admin | set | github: 72703 |
| 2018-11-08 21:09:05 | gregory.p.smith | set | nosy: +gregory.p.smith messages: +msg329486 |
| 2017-03-31 16:36:35 | dstufft | set | pull_requests: +pull_request1084 |
| 2016-10-25 07:20:39 | serhiy.storchaka | set | status: open -> closed |
| 2016-10-25 07:10:03 | matrixise | set | messages: +msg279367 |
| 2016-10-25 07:03:40 | serhiy.storchaka | set | resolution: fixed messages: +msg279366 stage: patch review -> resolved |
| 2016-10-25 06:42:30 | python-dev | set | nosy: +python-dev messages: +msg279359 |
| 2016-10-25 02:54:53 | rhettinger | set | nosy: +rhettinger messages: +msg279348 |
| 2016-10-24 16:56:44 | matrixise | set | nosy: +matrixise messages: +msg279320 |
| 2016-10-24 07:37:27 | serhiy.storchaka | set | files: +peephole_remove_unreachable_code.patch messages: +msg279298 assignee:serhiy.storchaka keywords: +patch stage: patch review |
| 2016-10-24 05:16:39 | serhiy.storchaka | create | |