'Lower a ir.Print()'

def lower_print(self, inst):

    sig = self.fndesc.calltypes[inst]
    assert (sig.return_type == types.none)
    fnty = self.context.typing_context.resolve_value_type(print)
    pos_tys = list(sig.args)
    pos_args = list(inst.args)
    for i in range(len(pos_args)):
        if (i in inst.consts):
            pyval = inst.consts[i]
            if isinstance(pyval, str):
                pos_tys[i] = types.Const(pyval)
    fixed_sig = typing.signature(sig.return_type, *pos_tys)
    fixed_sig.pysig = sig.pysig
    argvals = self.fold_call_args(fnty, sig, pos_args, inst.vararg, {})
    impl = self.context.get_function(print, fixed_sig)
    impl(self.builder, argvals)
