gh-106797: Remove warning logs from Python/generated_cases.c.h (gh-106798)

This commit is contained in:
Dong-hee Na 2023-07-17 09:09:11 +09:00 committed by GitHub
parent 383dcbebcd
commit 48956cc60e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 20 deletions

View File

@ -839,15 +839,15 @@ _PyOpcode_num_pushed(int opcode, int oparg, bool jump) {
case PUSH_EXC_INFO:
return 2;
case LOAD_ATTR_METHOD_WITH_VALUES:
return (1 ? 1 : 0) + 1;
return 1 + 1;
case LOAD_ATTR_METHOD_NO_DICT:
return (1 ? 1 : 0) + 1;
return 1 + 1;
case LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES:
return (0 ? 1 : 0) + 1;
return 0 + 1;
case LOAD_ATTR_NONDESCRIPTOR_NO_DICT:
return (0 ? 1 : 0) + 1;
return 0 + 1;
case LOAD_ATTR_METHOD_LAZY_DICT:
return (1 ? 1 : 0) + 1;
return 1 + 1;
case KW_NAMES:
return 0;
case INSTRUMENTED_CALL:

View File

@ -3360,9 +3360,9 @@
res2 = Py_NewRef(descr);
assert(_PyType_HasFeature(Py_TYPE(res2), Py_TPFLAGS_METHOD_DESCRIPTOR));
res = self;
STACK_GROW((1 ? 1 : 0));
STACK_GROW(1);
stack_pointer[-1] = res;
if (1) { stack_pointer[-(1 + (1 ? 1 : 0))] = res2; }
stack_pointer[-(1 + 1)] = res2;
next_instr += 9;
DISPATCH();
}
@ -3382,16 +3382,15 @@
assert(_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR));
res2 = Py_NewRef(descr);
res = self;
STACK_GROW((1 ? 1 : 0));
STACK_GROW(1);
stack_pointer[-1] = res;
if (1) { stack_pointer[-(1 + (1 ? 1 : 0))] = res2; }
stack_pointer[-(1 + 1)] = res2;
next_instr += 9;
DISPATCH();
}
TARGET(LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES) {
PyObject *self = stack_pointer[-1];
PyObject *res2 = NULL;
PyObject *res;
uint32_t type_version = read_u32(&next_instr[1].cache);
uint32_t keys_version = read_u32(&next_instr[3].cache);
@ -3410,16 +3409,14 @@
assert(descr != NULL);
Py_DECREF(self);
res = Py_NewRef(descr);
STACK_GROW((0 ? 1 : 0));
STACK_GROW(0);
stack_pointer[-1] = res;
if (0) { stack_pointer[-(1 + (0 ? 1 : 0))] = res2; }
next_instr += 9;
DISPATCH();
}
TARGET(LOAD_ATTR_NONDESCRIPTOR_NO_DICT) {
PyObject *self = stack_pointer[-1];
PyObject *res2 = NULL;
PyObject *res;
uint32_t type_version = read_u32(&next_instr[1].cache);
PyObject *descr = read_obj(&next_instr[5].cache);
@ -3432,9 +3429,8 @@
assert(descr != NULL);
Py_DECREF(self);
res = Py_NewRef(descr);
STACK_GROW((0 ? 1 : 0));
STACK_GROW(0);
stack_pointer[-1] = res;
if (0) { stack_pointer[-(1 + (0 ? 1 : 0))] = res2; }
next_instr += 9;
DISPATCH();
}
@ -3458,9 +3454,9 @@
assert(_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR));
res2 = Py_NewRef(descr);
res = self;
STACK_GROW((1 ? 1 : 0));
STACK_GROW(1);
stack_pointer[-1] = res;
if (1) { stack_pointer[-(1 + (1 ? 1 : 0))] = res2; }
stack_pointer[-(1 + 1)] = res2;
next_instr += 9;
DISPATCH();
}

View File

@ -98,6 +98,8 @@ def effect_size(effect: StackEffect) -> tuple[int, str]:
assert not effect.cond, "Array effects cannot have a condition"
return 0, effect.size
elif effect.cond:
if effect.cond in ("0", "1"):
return 0, effect.cond
return 0, f"{maybe_parenthesize(effect.cond)} ? 1 : 0"
else:
return 1, ""
@ -217,7 +219,7 @@ class Formatter:
self.emit(f"STACK_GROW({osym});")
def declare(self, dst: StackEffect, src: StackEffect | None):
if dst.name == UNUSED:
if dst.name == UNUSED or dst.cond == "0":
return
typ = f"{dst.type}" if dst.type else "PyObject *"
if src:
@ -241,7 +243,10 @@ class Formatter:
self.emit(f"Py_XSETREF({dst.name}, {cast}{src.name});")
else:
stmt = f"{dst.name} = {cast}{src.name};"
if src.cond:
if src.cond and src.cond != "1":
if src.cond == "0":
# It will not be executed
return
stmt = f"if ({src.cond}) {{ {stmt} }}"
self.emit(stmt)
@ -1067,7 +1072,10 @@ class Analyzer:
for effect in comp.instr.output_effects:
assert not effect.size, effect
if effect.cond:
pushed_symbolic.append(maybe_parenthesize(f"{maybe_parenthesize(effect.cond)} ? 1 : 0"))
if effect.cond in ("0", "1"):
pushed_symbolic.append(effect.cond)
else:
pushed_symbolic.append(maybe_parenthesize(f"{maybe_parenthesize(effect.cond)} ? 1 : 0"))
sp += 1
high = max(sp, high)
if high != max(0, sp):