예제 #1
0
def translate(func, engine, llvm_module):
    verify_lowlevel(func)

    ### Create lfunc ###
    lfunc = llvm_module.add_function(llvm_type(func.type), func.name)
    blockmap = allocate_blocks(lfunc, func)

    ### Create visitor ###
    translator = Translator(func, lfunc, llvm_type, llvm_module)
    visitor = opgrouper(translator)

    ### Codegen ###
    argloader = LLVMArgLoader(None, engine, llvm_module, lfunc, blockmap)
    valuemap = vvisit(visitor, func, argloader)
    update_phis(translator.phis, valuemap, argloader)

    return lfunc
예제 #2
0
def initialize(func, env):
    verify_lowlevel(func)
    llvm_module = env["codegen.llvm.module"]
    return llvm_module.add_function(llvm_type(func.type), mangle(func.name))
예제 #3
0
def initialize(func, env):
    verify_lowlevel(func)
    llvm_module = env["codegen.llvm.module"]
    return llvm_module.add_function(llvm_type(func.type), func.name)