Issue #28517: Fixed of-by-one error in the peephole optimizer that caused

keeping unreachable code.
This commit is contained in:
Serhiy Storchaka 2016-10-25 09:32:04 +03:00
commit 42bcbf76f7
4 changed files with 3114 additions and 3114 deletions

View File

@ -10,6 +10,9 @@ What's New in Python 3.7.0 alpha 1
Core and Builtins
-----------------
- Issue #28517: Fixed of-by-one error in the peephole optimizer that caused
keeping unreachable code.
- Issue #28214: Improved exception reporting for problematic __set_name__
attributes.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -704,11 +704,11 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
/* Remove unreachable ops after RETURN */
case RETURN_VALUE:
h = i + 1;
while (h + 1 < codelen && ISBASICBLOCK(blocks, i, h + 1)) {
while (h < codelen && ISBASICBLOCK(blocks, i, h)) {
h++;
}
if (h > i + 1) {
fill_nops(codestr, i + 1, h + 1);
fill_nops(codestr, i + 1, h);
nexti = find_op(codestr, h);
}
break;