diff options
author | Raymond Hettinger <python@rcn.com> | 2009-10-22 11:22:50 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2009-10-22 11:22:50 (GMT) |
commit | af7adad51d149e66ee3eb66c1765914f0fd7f905 (patch) | |
tree | bad46171fbca07a72f698e7a63e312fd952a5fd6 | |
parent | 42ead48dc17543c0d41d261fdf070a07f576c449 (diff) | |
download | cpython-af7adad51d149e66ee3eb66c1765914f0fd7f905.zip cpython-af7adad51d149e66ee3eb66c1765914f0fd7f905.tar.gz cpython-af7adad51d149e66ee3eb66c1765914f0fd7f905.tar.bz2 |
Peephole constant folding had missed UNARY_POSITIVE.
-rw-r--r-- | Lib/test/test_peepholer.py | 1 | ||||
-rw-r--r-- | Misc/NEWS | 2 | ||||
-rw-r--r-- | Python/peephole.c | 4 |
3 files changed, 7 insertions, 0 deletions
diff --git a/Lib/test/test_peepholer.py b/Lib/test/test_peepholer.py index 5696500..9e8bb69 100644 --- a/Lib/test/test_peepholer.py +++ b/Lib/test/test_peepholer.py @@ -150,6 +150,7 @@ class TestTranforms(unittest.TestCase): for line, elem in ( ('-0.5', '(-0.5)'), # unary negative ('~-2', '(1)'), # unary invert + ('+1', '(1)'), # unary positive ): asm = dis_single(line) self.assertTrue(elem in asm, asm) @@ -12,6 +12,8 @@ What's New in Python 3.2 Alpha 1? Core and Builtins ----------------- +- Peephole constant folding had missed UNARY_POSITIVE. + - Issue #1722344: threading._shutdown() is now called in Py_Finalize(), which fixes the problem of some exceptions being thrown at shutdown when the interpreter is killed. Patch by Adam Olsen. diff --git a/Python/peephole.c b/Python/peephole.c index 9163091..104db8c 100644 --- a/Python/peephole.c +++ b/Python/peephole.c @@ -197,6 +197,9 @@ fold_unaryops_on_constants(unsigned char *codestr, PyObject *consts) case UNARY_INVERT: newconst = PyNumber_Invert(v); break; + case UNARY_POSITIVE: + newconst = PyNumber_Positive(v); + break; default: /* Called with an unknown opcode */ PyErr_Format(PyExc_SystemError, @@ -500,6 +503,7 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names, LOAD_CONST c1 UNARY_OP --> LOAD_CONST unary_op(c) */ case UNARY_NEGATIVE: case UNARY_INVERT: + case UNARY_POSITIVE: if (lastlc >= 1 && ISBASICBLOCK(blocks, i-3, 4) && fold_unaryops_on_constants(&codestr[i-3], consts)) { |