[Python-checkins] cpython: Issue #9566, #19617: Fix more compiler warnings in compile.c on Windows 64-bit

victor.stinner python-checkins at python.org
Tue Nov 19 23:56:57 CET 2013


http://hg.python.org/cpython/rev/116bd550e309
changeset:   87281:116bd550e309
user:        Victor Stinner <victor.stinner at gmail.com>
date:        Tue Nov 19 23:56:34 2013 +0100
summary:
  Issue #9566, #19617: Fix more compiler warnings in compile.c on Windows 64-bit

files:
  Python/compile.c |  23 +++++++++++++----------
  1 files changed, 13 insertions(+), 10 deletions(-)


diff --git a/Python/compile.c b/Python/compile.c
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -120,8 +120,8 @@
 
     PyObject *u_private;        /* for private name mangling */
 
-    int u_argcount;        /* number of arguments for block */
-    int u_kwonlyargcount; /* number of keyword only arguments for block */
+    Py_ssize_t u_argcount;        /* number of arguments for block */
+    Py_ssize_t u_kwonlyargcount; /* number of keyword only arguments for block */
     /* Pointer to the most recently allocated block.  By following b_list
        members, you can reach all early allocated blocks. */
     basicblock *u_blocks;
@@ -170,7 +170,7 @@
 static int compiler_next_instr(struct compiler *, basicblock *);
 static int compiler_addop(struct compiler *, int);
 static int compiler_addop_o(struct compiler *, int, PyObject *, PyObject *);
-static int compiler_addop_i(struct compiler *, Py_ssize_t, Py_ssize_t);
+static int compiler_addop_i(struct compiler *, int, Py_ssize_t);
 static int compiler_addop_j(struct compiler *, int, basicblock *, int);
 static basicblock *compiler_use_new_block(struct compiler *);
 static int compiler_error(struct compiler *, const char *);
@@ -1074,7 +1074,7 @@
     return 1;
 }
 
-static int
+static Py_ssize_t
 compiler_add_o(struct compiler *c, PyObject *dict, PyObject *o)
 {
     PyObject *t, *v;
@@ -1176,22 +1176,22 @@
 */
 
 static int
-compiler_addop_i(struct compiler *c, Py_ssize_t opcode, Py_ssize_t oparg)
+compiler_addop_i(struct compiler *c, int opcode, Py_ssize_t oparg)
 {
     struct instr *i;
     int off;
 
     /* Integer arguments are limit to 16-bit. There is an extension for 32-bit
        integer arguments. */
-    assert((-2147483647-1) <= opcode);
-    assert(opcode <= 2147483647);
+    assert((-2147483647-1) <= oparg);
+    assert(oparg <= 2147483647);
 
     off = compiler_next_instr(c, c->u->u_curblock);
     if (off < 0)
         return 0;
     i = &c->u->u_curblock->b_instr[off];
-    i->i_opcode = Py_SAFE_DOWNCAST(opcode, Py_ssize_t, int);
-    i->i_oparg = oparg;
+    i->i_opcode = opcode;
+    i->i_oparg = Py_SAFE_DOWNCAST(oparg, Py_ssize_t, int);
     i->i_hasarg = 1;
     compiler_set_lineno(c, off);
     return 1;
@@ -4213,6 +4213,7 @@
     Py_ssize_t nlocals;
     int nlocals_int;
     int flags;
+    int argcount, kwonlyargcount;
 
     tmp = dict_keys_inorder(c->u->u_consts, 0);
     if (!tmp)
@@ -4250,7 +4251,9 @@
     Py_DECREF(consts);
     consts = tmp;
 
-    co = PyCode_New(c->u->u_argcount, c->u->u_kwonlyargcount,
+    argcount = Py_SAFE_DOWNCAST(c->u->u_argcount, Py_ssize_t, int);
+    kwonlyargcount = Py_SAFE_DOWNCAST(c->u->u_kwonlyargcount, Py_ssize_t, int);
+    co = PyCode_New(argcount, kwonlyargcount,
                     nlocals_int, stackdepth(c), flags,
                     bytecode, consts, names, varnames,
                     freevars, cellvars,

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list