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 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.}