def pre_return(self, node):
        rtn_type = self._func_type.rtn_type

        v = Variable(None_, "null", 1, False) if node.value is None else self._get(node.value)
        v = v.convert_to(self.em, rtn_type)
        if v.marked:
            r = v
        else:
            r = v.split(self.em)
            v.decvref(self.em)

        self._close_block()

        if rtn_type is None_:
            self.em.pl("ret void")
        else:
            # This is the ref contract:
            assert r.nrefs == 1
            assert r.marked
            self.em.pl("ret %s %s" % (r.t.llvm_type(), r.v))
        return ()