func newAlgorithmMap(m llvm.Module, runtime *runtimeInterface, target llvm.TargetData) *algorithmMap { am := &algorithmMap{ module: m, runtime: runtime, } uintptrType := target.IntPtrType() voidPtrType := llvm.PointerType(llvm.Int8Type(), 0) boolType := llvm.Int1Type() params := []llvm.Type{uintptrType, voidPtrType} am.hashAlgFunctionType = llvm.FunctionType(uintptrType, params, false) params = []llvm.Type{uintptrType, uintptrType, uintptrType} am.equalAlgFunctionType = llvm.FunctionType(boolType, params, false) params = []llvm.Type{uintptrType, voidPtrType} am.printAlgFunctionType = llvm.FunctionType(llvm.VoidType(), params, false) params = []llvm.Type{uintptrType, voidPtrType, voidPtrType} am.copyAlgFunctionType = llvm.FunctionType(llvm.VoidType(), params, false) return am }
func NewLLVMTypeMap(target llvm.TargetData) *llvmTypeMap { // spec says int is either 32-bit or 64-bit. var inttype llvm.Type if target.PointerSize() >= 8 { inttype = llvm.Int64Type() } else { inttype = llvm.Int32Type() } return &llvmTypeMap{ StdSizes: &types.StdSizes{ WordSize: int64(target.PointerSize()), MaxAlign: 8, }, target: target, inttype: inttype, ptrstandin: llvm.GlobalContext().StructCreateNamed(""), } }