Module llvm_scalar

This header declares the C interface to libLLVMScalarOpts.a, which implements various scalar transformations of the LLVM IR.

Many exotic languages can interoperate with C code but have a harder time with C++ due to name mangling. So in addition to C, this interface enables tools written in such languages.

Procs

proc addAggressiveDCEPass(pm: PassManagerRef) {.
    importc: "LLVMAddAggressiveDCEPass", cdecl, dynlib: dllname.}
proc addCFGSimplificationPass(pm: PassManagerRef) {.
    importc: "LLVMAddCFGSimplificationPass", cdecl, dynlib: dllname.}
proc addDeadStoreEliminationPass(pm: PassManagerRef) {.
    importc: "LLVMAddDeadStoreEliminationPass", cdecl, dynlib: dllname.}
proc addScalarizerPass(pm: PassManagerRef) {.importc: "LLVMAddScalarizerPass", 
    cdecl, dynlib: dllname.}
proc addMergedLoadStoreMotionPass(pm: PassManagerRef) {.
    importc: "LLVMAddMergedLoadStoreMotionPass", cdecl, dynlib: dllname.}
proc addGVNPass(pm: PassManagerRef) {.importc: "LLVMAddGVNPass", 
                                      cdecl, dynlib: dllname.}
proc addIndVarSimplifyPass(pm: PassManagerRef) {.
    importc: "LLVMAddIndVarSimplifyPass", cdecl, dynlib: dllname.}
proc addInstructionCombiningPass(pm: PassManagerRef) {.
    importc: "LLVMAddInstructionCombiningPass", cdecl, dynlib: dllname.}
proc addJumpThreadingPass(pm: PassManagerRef) {.
    importc: "LLVMAddJumpThreadingPass", cdecl, dynlib: dllname.}
proc addLICMPass(pm: PassManagerRef) {.importc: "LLVMAddLICMPass", 
                                       cdecl, dynlib: dllname.}
proc addLoopDeletionPass(pm: PassManagerRef) {.
    importc: "LLVMAddLoopDeletionPass", cdecl, dynlib: dllname.}
proc addLoopIdiomPass(pm: PassManagerRef) {.importc: "LLVMAddLoopIdiomPass", 
    cdecl, dynlib: dllname.}
proc addLoopRotatePass(pm: PassManagerRef) {.importc: "LLVMAddLoopRotatePass", 
    cdecl, dynlib: dllname.}
proc addLoopRerollPass(pm: PassManagerRef) {.importc: "LLVMAddLoopRerollPass", 
    cdecl, dynlib: dllname.}
proc addLoopUnrollPass(pm: PassManagerRef) {.importc: "LLVMAddLoopUnrollPass", 
    cdecl, dynlib: dllname.}
proc addLoopUnswitchPass(pm: PassManagerRef) {.
    importc: "LLVMAddLoopUnswitchPass", cdecl, dynlib: dllname.}
proc addMemCpyOptPass(pm: PassManagerRef) {.importc: "LLVMAddMemCpyOptPass", 
    cdecl, dynlib: dllname.}
proc addPartiallyInlineLibCallsPass(pm: PassManagerRef) {.
    importc: "LLVMAddPartiallyInlineLibCallsPass", cdecl, dynlib: dllname.}
proc addPromoteMemoryToRegisterPass(pm: PassManagerRef) {.
    importc: "LLVMAddPromoteMemoryToRegisterPass", cdecl, dynlib: dllname.}
proc addReassociatePass(pm: PassManagerRef) {.importc: "LLVMAddReassociatePass", 
    cdecl, dynlib: dllname.}
proc addSCCPPass(pm: PassManagerRef) {.importc: "LLVMAddSCCPPass", 
                                       cdecl, dynlib: dllname.}
proc addScalarReplAggregatesPass(pm: PassManagerRef) {.
    importc: "LLVMAddScalarReplAggregatesPass", cdecl, dynlib: dllname.}
proc addScalarReplAggregatesPassSSA(pm: PassManagerRef) {.
    importc: "LLVMAddScalarReplAggregatesPassSSA", cdecl, dynlib: dllname.}
proc addScalarReplAggregatesPassWithThreshold(pm: PassManagerRef; 
    threshold: cint) {.importc: "LLVMAddScalarReplAggregatesPassWithThreshold", 
                       cdecl, dynlib: dllname.}
proc addSimplifyLibCallsPass(pm: PassManagerRef) {.
    importc: "LLVMAddSimplifyLibCallsPass", cdecl, dynlib: dllname.}
proc addTailCallEliminationPass(pm: PassManagerRef) {.
    importc: "LLVMAddTailCallEliminationPass", cdecl, dynlib: dllname.}
proc addConstantPropagationPass(pm: PassManagerRef) {.
    importc: "LLVMAddConstantPropagationPass", cdecl, dynlib: dllname.}
proc addDemoteMemoryToRegisterPass(pm: PassManagerRef) {.
    importc: "LLVMAddDemoteMemoryToRegisterPass", cdecl, dynlib: dllname.}
proc addVerifierPass(pm: PassManagerRef) {.importc: "LLVMAddVerifierPass", 
    cdecl, dynlib: dllname.}
proc addCorrelatedValuePropagationPass(pm: PassManagerRef) {.
    importc: "LLVMAddCorrelatedValuePropagationPass", cdecl, dynlib: dllname.}
proc addEarlyCSEPass(pm: PassManagerRef) {.importc: "LLVMAddEarlyCSEPass", 
    cdecl, dynlib: dllname.}
proc addLowerExpectIntrinsicPass(pm: PassManagerRef) {.
    importc: "LLVMAddLowerExpectIntrinsicPass", cdecl, dynlib: dllname.}
proc addTypeBasedAliasAnalysisPass(pm: PassManagerRef) {.
    importc: "LLVMAddTypeBasedAliasAnalysisPass", cdecl, dynlib: dllname.}
proc addBasicAliasAnalysisPass(pm: PassManagerRef) {.
    importc: "LLVMAddBasicAliasAnalysisPass", cdecl, dynlib: dllname.}