ANSI-C-ify the placement of local var declarations.
diff --git a/Python/ast.c b/Python/ast.c
index c40c355..fbce7d7 100644
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -512,14 +512,14 @@
 seq_for_testlist(struct compiling *c, const node *n)
 {
     /* testlist: test (',' test)* [','] */
+    asdl_seq *seq;
+    expr_ty expression;
+    int i;
     assert(TYPE(n) == testlist
 	   || TYPE(n) == listmaker
 	   || TYPE(n) == testlist_gexp
 	   || TYPE(n) == testlist_safe
 	   );
-    asdl_seq *seq;
-    expr_ty expression;
-    int i;
 
     seq = asdl_seq_new((NCH(n) + 1) / 2);
     if (!seq)
@@ -641,12 +641,13 @@
                                     compiler_complex_args(CHILD(ch, 1))); 
 		}
                 else if (TYPE(CHILD(ch, 0)) == NAME) {
+		    expr_ty name;
 		    if (!strcmp(STR(CHILD(ch, 0)), "None")) {
 			    ast_error(CHILD(ch, 0), "assignment to None");
 			    goto error;
 		    }
-                    expr_ty name = Name(NEW_IDENTIFIER(CHILD(ch, 0)),
-                                        Param, LINENO(ch));
+                    name = Name(NEW_IDENTIFIER(CHILD(ch, 0)),
+                                Param, LINENO(ch));
                     if (!name)
                         goto error;
                     asdl_seq_APPEND(args, name);
@@ -1897,12 +1898,13 @@
 	if (!targets)
 	    return NULL;
 	for (i = 0; i < NCH(n) - 2; i += 2) {
+	    expr_ty e;
 	    node *ch = CHILD(n, i);
 	    if (TYPE(ch) == yield_expr) {
 		ast_error(ch, "assignment to yield expression not possible");
 		goto error;
 	    }
-	    expr_ty e = ast_for_testlist(c, ch, 0);
+	    e = ast_for_testlist(c, ch, 0);
 
 	    /* set context to assign */
 	    if (!e) 
diff --git a/Python/compile.c b/Python/compile.c
index 10c94e7..47c57f4 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -2329,8 +2329,9 @@
 		src = dot + 1;
 		while (dot) {
 			/* NB src is only defined when dot != NULL */
+			PyObject *attr;
 			dot = strchr(src, '.');
-			PyObject *attr = PyString_FromStringAndSize(src, 
+			attr = PyString_FromStringAndSize(src, 
 					    dot ? dot - src : strlen(src));
 			ADDOP_O(c, LOAD_ATTR, attr, names);
 			src = dot + 1;
diff --git a/Python/symtable.c b/Python/symtable.c
index bd41202..7af1390 100644
--- a/Python/symtable.c
+++ b/Python/symtable.c
@@ -444,12 +444,13 @@
 static int
 check_unoptimized(const PySTEntryObject* ste) {
 	char buf[300];
+	const char* trailer;
 
 	if (ste->ste_type == ModuleBlock || !ste->ste_unoptimized
 	    || !(ste->ste_free || ste->ste_child_free))
 		return 1;
 
-	const char* trailer = (ste->ste_child_free ? 
+	trailer = (ste->ste_child_free ? 
 		       "contains a nested function with free variables" :
 			       "is a nested function");
 
@@ -621,8 +622,9 @@
 	/* Recursively call analyze_block() on each child block */
 	for (i = 0; i < PyList_GET_SIZE(ste->ste_children); ++i) {
 		PyObject *c = PyList_GET_ITEM(ste->ste_children, i);
+		PySTEntryObject* entry;
 		assert(c && PySTEntry_Check(c));
-		PySTEntryObject* entry = (PySTEntryObject*)c;
+		entry = (PySTEntryObject*)c;
 		if (!analyze_block(entry, newbound, newfree, newglobal))
 			goto error;
 		if (entry->ste_free || entry->ste_child_free)