new plan: functions that want 'tmp' can declare it
diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py
index 60b53e9..c5fd365 100755
--- a/Parser/asdl_c.py
+++ b/Parser/asdl_c.py
@@ -365,10 +365,7 @@
         self.emit("int", 0)
         self.emit("obj2ast_%s(PyObject* obj, %s* out, PyArena* arena)" % (name, ctype), 0)
         self.emit("{", 0)
-        self.emit("PyObject* tmp = NULL;", 1)
         self.emit("int isinstance;", 1)
-        # Prevent compiler warnings about unused variable.
-        self.emit("tmp = tmp;", 1)
         self.emit("", 0)
 
     def sumTrailer(self, name, add_label=False):
@@ -403,6 +400,7 @@
 
     def complexSum(self, sum, name):
         self.funcHeader(name)
+        self.emit("PyObject *tmp = NULL;", 1)
         for a in sum.attributes:
             self.visitAttributeDeclaration(a, name, sum=sum)
         self.emit("", 0)