summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2024-10-28 10:30:31 (GMT)
committerGitHub <noreply@github.com>2024-10-28 10:30:31 (GMT)
commit25441592db179e9f5e6c896d1a691459a23e3422 (patch)
tree565b32cbd6c6a183cd9bb7a752d3645def108804
parent19e93e2e269889ecb3c4c039091abff489f247c2 (diff)
downloadcpython-25441592db179e9f5e6c896d1a691459a23e3422.zip
cpython-25441592db179e9f5e6c896d1a691459a23e3422.tar.gz
cpython-25441592db179e9f5e6c896d1a691459a23e3422.tar.bz2
GH-125515: Reduce number of compiler warnings in generated code (GH-125697)
-rw-r--r--Include/internal/pycore_opcode_metadata.h6
-rw-r--r--Python/bytecodes.c6
-rw-r--r--Python/generated_cases.c.h6
-rw-r--r--Tools/cases_generator/tier2_generator.py1
4 files changed, 11 insertions, 8 deletions
diff --git a/Include/internal/pycore_opcode_metadata.h b/Include/internal/pycore_opcode_metadata.h
index c184234..93c9e71 100644
--- a/Include/internal/pycore_opcode_metadata.h
+++ b/Include/internal/pycore_opcode_metadata.h
@@ -242,7 +242,7 @@ int _PyOpcode_num_popped(int opcode, int oparg) {
case INSTRUMENTED_LINE:
return 0;
case INSTRUMENTED_LOAD_SUPER_ATTR:
- return 3;
+ return 0;
case INSTRUMENTED_POP_JUMP_IF_FALSE:
return 0;
case INSTRUMENTED_POP_JUMP_IF_NONE:
@@ -701,7 +701,7 @@ int _PyOpcode_num_pushed(int opcode, int oparg) {
case INSTRUMENTED_LINE:
return 0;
case INSTRUMENTED_LOAD_SUPER_ATTR:
- return 1 + (oparg & 1);
+ return 0;
case INSTRUMENTED_POP_JUMP_IF_FALSE:
return 0;
case INSTRUMENTED_POP_JUMP_IF_NONE:
@@ -1117,7 +1117,7 @@ const struct opcode_metadata _PyOpcode_opcode_metadata[266] = {
[INSTRUMENTED_JUMP_BACKWARD] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG | HAS_EVAL_BREAK_FLAG | HAS_ERROR_FLAG | HAS_ESCAPES_FLAG },
[INSTRUMENTED_JUMP_FORWARD] = { true, INSTR_FMT_IB, HAS_ARG_FLAG },
[INSTRUMENTED_LINE] = { true, INSTR_FMT_IX, HAS_ESCAPES_FLAG },
- [INSTRUMENTED_LOAD_SUPER_ATTR] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },
+ [INSTRUMENTED_LOAD_SUPER_ATTR] = { true, INSTR_FMT_IXC, 0 },
[INSTRUMENTED_POP_JUMP_IF_FALSE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },
[INSTRUMENTED_POP_JUMP_IF_NONE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },
[INSTRUMENTED_POP_JUMP_IF_NOT_NONE] = { true, INSTR_FMT_IBC, HAS_ARG_FLAG },
diff --git a/Python/bytecodes.c b/Python/bytecodes.c
index eaf2537..057ee0a 100644
--- a/Python/bytecodes.c
+++ b/Python/bytecodes.c
@@ -974,7 +974,9 @@ dummy_func(
tstate->current_frame = frame->previous;
assert(!_PyErr_Occurred(tstate));
tstate->c_recursion_remaining += PY_EVAL_C_STACK_UNITS;
- return PyStackRef_AsPyObjectSteal(retval);
+ PyObject *result = PyStackRef_AsPyObjectSteal(retval);
+ SYNC_SP(); /* Not strictly necessary, but prevents warnings */
+ return result;
}
// The stack effect here is ambiguous.
@@ -1874,7 +1876,7 @@ dummy_func(
ERROR_IF(err != 0, error);
}
- inst(INSTRUMENTED_LOAD_SUPER_ATTR, (unused/1, unused, unused, unused -- unused, unused if (oparg & 1))) {
+ inst(INSTRUMENTED_LOAD_SUPER_ATTR, (unused/1 -- )) {
// cancel out the decrement that will happen in LOAD_SUPER_ATTR; we
// don't want to specialize instrumented instructions
PAUSE_ADAPTIVE_COUNTER(this_instr[1].counter);
diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h
index f658ae5..35af1dc 100644
--- a/Python/generated_cases.c.h
+++ b/Python/generated_cases.c.h
@@ -4747,8 +4747,6 @@
// don't want to specialize instrumented instructions
PAUSE_ADAPTIVE_COUNTER(this_instr[1].counter);
GO_TO_INSTRUCTION(LOAD_SUPER_ATTR);
- stack_pointer += -1;
- assert(WITHIN_STACK_BOUNDS());
}
TARGET(INSTRUMENTED_POP_JUMP_IF_FALSE) {
@@ -5060,9 +5058,11 @@
tstate->current_frame = frame->previous;
assert(!_PyErr_Occurred(tstate));
tstate->c_recursion_remaining += PY_EVAL_C_STACK_UNITS;
- return PyStackRef_AsPyObjectSteal(retval);
+ PyObject *result = PyStackRef_AsPyObjectSteal(retval);
stack_pointer += -1;
assert(WITHIN_STACK_BOUNDS());
+ /* Not strictly necessary, but prevents warnings */
+ return result;
}
TARGET(IS_OP) {
diff --git a/Tools/cases_generator/tier2_generator.py b/Tools/cases_generator/tier2_generator.py
index 634848c..ce76149 100644
--- a/Tools/cases_generator/tier2_generator.py
+++ b/Tools/cases_generator/tier2_generator.py
@@ -64,6 +64,7 @@ def declare_variables(uop: Uop, out: CWriter) -> None:
class Tier2Emitter(Emitter):
+
def __init__(self, out: CWriter):
super().__init__(out)
self._replacers["oparg"] = self.oparg