pub unsafe extern "C" fn LLVMRustOptimize<'a>(
    M: &'a Module,
    TM: &'a TargetMachine,
    OptLevel: PassBuilderOptLevel,
    OptStage: OptStage,
    IsLinkerPluginLTO: bool,
    NoPrepopulatePasses: bool,
    VerifyIR: bool,
    UseThinLTOBuffers: bool,
    MergeFunctions: bool,
    UnrollLoops: bool,
    SLPVectorize: bool,
    LoopVectorize: bool,
    DisableSimplifyLibCalls: bool,
    EmitLifetimeMarkers: bool,
    SanitizerOptions: Option<&SanitizerOptions>,
    PGOGenPath: *const c_char,
    PGOUsePath: *const c_char,
    InstrumentCoverage: bool,
    InstrProfileOutput: *const c_char,
    InstrumentGCOV: bool,
    PGOSampleUsePath: *const c_char,
    DebugInfoForProfiling: bool,
    llvm_selfprofiler: *mut c_void,
    begin_callback: SelfProfileBeforePassCallback,
    end_callback: SelfProfileAfterPassCallback,
    ExtraPasses: *const c_char,
    ExtraPassesLen: size_t,
    LLVMPlugins: *const c_char,
    LLVMPluginsLen: size_t
) -> LLVMRustResult