New submission from Neal Norwitz: >>> def fo(): ... if a: ... if b: ... if c: ... print ... >>> dis.dis(fo) 2 0 LOAD_GLOBAL 0 (a) 3 POP_JUMP_IF_FALSE 28
3 6 LOAD_GLOBAL 1 (b) 9 POP_JUMP_IF_FALSE 28 4 12 LOAD_GLOBAL 2 (c) 15 POP_JUMP_IF_FALSE 25 5 18 PRINT_NEWLINE 19 JUMP_ABSOLUTE 25 22 JUMP_ABSOLUTE 28 >> 25 JUMP_FORWARD 0 (to 28) >> 28 LOAD_CONST 0 (None) 31 RETURN_VALUE The 2 JUMP_ABSOLUTEs should be optimized away since the code is equivalent to: if a and b and c: as in: >>> dis.dis(fo) 2 0 LOAD_GLOBAL 0 (a) 3 POP_JUMP_IF_FALSE 22 6 LOAD_GLOBAL 1 (b) 9 POP_JUMP_IF_FALSE 22 12 LOAD_GLOBAL 2 (c) 15 POP_JUMP_IF_FALSE 22 3 18 PRINT_NEWLINE 19 JUMP_FORWARD 0 (to 22) >> 22 LOAD_CONST 0 (None) 25 RETURN_VALUE ---------- messages: 184245 nosy: Neal.Norwitz priority: normal severity: normal status: open title: missed peephole optimization type: performance versions: Python 2.7 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue17430> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com