call :: Global -> [Operand] -> CodeGen Operand
call fn@(Function {..}) args = inst $ Call { isTailCall = False
                                           , callingConvention = callingConvention
                                           , returnAttributes = []
                                           , function = Right (ConstantOperand (C.GlobalReference (typeOf fn) name))
                                           , arguments = map (\op -> (op, [])) args
                                           , functionAttributes = []
                                           , metadata = []
                                           }
call :: Global -> [Operand] -> CodeGen Operand
call fn@(Function {..}) args = inst $ Call { isTailCall = False
                                           , callingConvention = callingConvention
                                           , returnAttributes = []
                                           , function = Right (ConstantOperand (C.GlobalReference (typeOf fn) name))
                                           , arguments = map (\op -> (op, [])) args
                                           , functionAttributes = []
                                           , metadata = []
                                           }
call fn@(Function {..}) args = inst $ Call { isTailCall = False
                                           , callingConvention = callingConvention
                                           , returnAttributes = []
                                           , function = Right (ConstantOperand (C.GlobalReference (typeOf fn) name))
                                           , arguments = map (\op -> (op, [])) args
                                           , functionAttributes = []
                                           , metadata = []
                                           }