'Releases a temporary so that it can be reused by other code needing
a temp of the same type.'

def release_temp(self, name):

    (type, manage_ref) = self.temps_used_type[name]
    freelist = self.temps_free.get((type, manage_ref))
    if (freelist is None):
        freelist = ([], set())
        self.temps_free[(type, manage_ref)] = freelist
    if (name in freelist[1]):
        raise RuntimeError(('Temp    %s    freed    twice!' % name))
    freelist[0].append(name)
    freelist[1].add(name)
    if DebugFlags.debug_temp_code_comments:
        self.owner.putln(('/*    %s    released    */' % name))
