New submission from Ned Batchelder <n...@nedbatchelder.com>:
CPython 3.8.0b2 behaves differently than previous releases: it no longer optimizes away "if 0:" branches. This is something that has been done since at least 2.4. It was done in 3.8.0b1, but no longer is. Was this a purposeful change? Why? It seems like 3.8 is adding more optimizations, why was this removed? Test code (/tmp/no0.py): import dis import sys print(sys.version) def with_if_0(): print(1) if 0: print(2) print(3) dis.dis(with_if_0) $ /usr/local/pythonz/pythons/CPython-3.8.0b2/bin/python3.8 /tmp/no0.py 3.8.0b2 (default, Jul 4 2019, 22:38:04) [Clang 10.0.0 (clang-1000.10.44.4)] 7 0 LOAD_GLOBAL 0 (print) 2 LOAD_CONST 1 (1) 4 CALL_FUNCTION 1 6 POP_TOP 8 8 LOAD_CONST 2 (0) 10 POP_JUMP_IF_FALSE 20 9 12 LOAD_GLOBAL 0 (print) 14 LOAD_CONST 3 (2) 16 CALL_FUNCTION 1 18 POP_TOP 10 >> 20 LOAD_GLOBAL 0 (print) 22 LOAD_CONST 4 (3) 24 CALL_FUNCTION 1 26 POP_TOP 28 LOAD_CONST 0 (None) 30 RETURN_VALUE $ /usr/local/pythonz/pythons/CPython-3.8.0b1/bin/python3.8 /tmp/no0.py 3.8.0b1 (default, Jun 4 2019, 21:21:14) [Clang 10.0.0 (clang-1000.10.44.4)] 7 0 LOAD_GLOBAL 0 (print) 2 LOAD_CONST 1 (1) 4 CALL_FUNCTION 1 6 POP_TOP 10 8 LOAD_GLOBAL 0 (print) 10 LOAD_CONST 4 (3) 12 CALL_FUNCTION 1 14 POP_TOP 16 LOAD_CONST 0 (None) 18 RETURN_VALUE $ python3.7 /tmp/no0.py 3.7.3 (default, Apr 10 2019, 10:27:53) [Clang 10.0.0 (clang-1000.10.44.4)] 7 0 LOAD_GLOBAL 0 (print) 2 LOAD_CONST 1 (1) 4 CALL_FUNCTION 1 6 POP_TOP 10 8 LOAD_GLOBAL 0 (print) 10 LOAD_CONST 2 (3) 12 CALL_FUNCTION 1 14 POP_TOP 16 LOAD_CONST 0 (None) 18 RETURN_VALUE $ python2.7 /tmp/no0.py 2.7.14 (default, Oct 4 2017, 09:45:53) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)] 7 0 LOAD_CONST 1 (1) 3 PRINT_ITEM 4 PRINT_NEWLINE 10 5 LOAD_CONST 2 (3) 8 PRINT_ITEM 9 PRINT_NEWLINE 10 LOAD_CONST 0 (None) 13 RETURN_VALUE $ python2.4 /tmp/no0.py 2.4.6 (#1, Jun 18 2016, 17:49:14) [GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] 7 0 LOAD_CONST 1 (1) 3 PRINT_ITEM 4 PRINT_NEWLINE 10 5 LOAD_CONST 2 (3) 8 PRINT_ITEM 9 PRINT_NEWLINE 10 LOAD_CONST 0 (None) 13 RETURN_VALUE ---------- keywords: 3.8regression messages: 347296 nosy: nedbat priority: normal severity: normal status: open title: 3.8.0b2 no longer optimizes away "if 0:" ? versions: Python 3.8 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue37500> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com