def pre_print(self, node):
        for i, elt in enumerate(node.values):
            v = self._get(elt)
            assert isinstance(v, Variable), elt
            v = v.getattr(self.em, "__str__", clsonly=True).call(self.em, [])
            assert v.t is Str

            self.em.pl("call void @file_write(%%file* @sys_stdout, %%string* %s)" % (v.v,))
            if i < len(node.values) - 1 or not node.nl:
                self.em.pl("call void @print_space_if_necessary(%%string* %s)" % (v.v,))
            v.decvref(self.em)

        if node.nl:
            self.em.pl("call void @file_write(%%file* @sys_stdout, %%string* @str_newline)" % ())

        return ()