是否无法在windows上使用外部llvm自定义传递?

是否无法在windows上使用外部llvm自定义传递?,llvm,Llvm,但是,在windows上使用外部llvm自定义传递是不可能的吗 我可以使用LLVM库在windows上构建“mypass.dll”。我用这两种方法来使用我的通行证 clang.exe -Xclang -load -Xclang mypass.dll -c test.c opt.exe -load -Xclang mypass.dll -mypass test.bc -o optimized_test.bc 但是,叮当声和opt对我的传球不起作用 这意味着,我的pass可以在编译时转储llvm:

但是,在windows上使用外部llvm自定义传递是不可能的吗

我可以使用LLVM库在windows上构建“mypass.dll”。我用这两种方法来使用我的通行证

clang.exe -Xclang -load -Xclang mypass.dll -c test.c
opt.exe -load -Xclang mypass.dll -mypass test.bc -o optimized_test.bc
但是,叮当声和opt对我的传球不起作用

这意味着,我的pass可以在编译时转储llvm::Module。我的通行证可以在Linux上转储。但是,我的通行证没有在Windows上打印任何内容

此外,我已经使用CMake在Windows上构建了LLVM和Clang

为了避免混淆,我正在编写源代码

#include <iostream>
using namespace std;

#include <llvm/Pass.h>
#include <llvm/IR/Module.h>
using namespace llvm;

class SampleIRModule : public llvm::ModulePass {
  public:
    static char ID;
    SampleIRModule() : llvm::ModulePass(ID) {}

    bool runOnModule(llvm::Module &M);
};

bool SampleIRModule::runOnModule(llvm::Module &M) {
    M.dump();
    return false;
}

char SampleIRModule::ID = 0;
static RegisterPass<SampleIRModule> X("SampleIRModule", "SampleIRModule Pass");

有很多事情要考虑——它是有效的,但是你需要阅读文档。我已经阅读了这个文档,但是,正如我所看到的,这个文档只是解释如何在Windows上使用LLVM,而不是外部LLVM PASS。我应该看看其他人吗?你面临的问题是什么?错误消息?输出中的错误?你所说的是“它工作不好”,怎么做?谢谢你的帮助。我在问题中添加了我的及格成绩。
cl /EHsc -ID:\LLVM\llvm-3.4.2\build_nmake\output/include    -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -wd4146 -wd4180 -wd4244 -wd4267 -wd4345 -wd4351 -wd4355 -wd4503 -wd4624 -wd4800 -wd4291 -w14062 -we4238 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -c testpass.cpp

cl /D_USRDLL /D_WINDLL testpass.obj /link /DLL /OUT:testpass.dll D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMCore.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangAnalysis.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangARCMigrate.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangAST.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangASTMatchers.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangBasic.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangCodeGen.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangDriver.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangDynamicASTMatchers.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangEdit.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangFormat.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangFrontend.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangFrontendTool.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangIndex.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangLex.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangParse.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangRewriteCore.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangRewriteFrontend.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangSema.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangSerialization.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangStaticAnalyzerCheckers.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangStaticAnalyzerCore.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangStaticAnalyzerFrontend.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\clangTooling.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\libclang.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMAArch64AsmParser.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMAArch64AsmPrinter.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMAArch64CodeGen.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMAArch64Desc.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMAArch64Disassembler.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMAArch64Info.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMAArch64Utils.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMAnalysis.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMARMAsmParser.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMARMAsmPrinter.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMARMCodeGen.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMARMDesc.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMARMDisassembler.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMARMInfo.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMAsmParser.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMAsmPrinter.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMBitReader.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMBitWriter.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMCodeGen.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMCore.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMCppBackendCodeGen.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMCppBackendInfo.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMDebugInfo.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMExecutionEngine.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMHexagonAsmPrinter.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMHexagonCodeGen.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMHexagonDesc.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMHexagonInfo.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMInstCombine.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMInstrumentation.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMInterpreter.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMipa.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMipo.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMIRReader.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMJIT.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMLinker.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMLTO.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMMC.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMMCDisassembler.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMMCJIT.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMMCParser.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMMipsAsmParser.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMMipsAsmPrinter.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMMipsCodeGen.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMMipsDesc.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMMipsDisassembler.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMMipsInfo.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMMSP430AsmPrinter.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMMSP430CodeGen.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMMSP430Desc.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMMSP430Info.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMNVPTXAsmPrinter.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMNVPTXCodeGen.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMNVPTXDesc.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMNVPTXInfo.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMObjCARCOpts.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMObject.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMOption.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMPowerPCAsmParser.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMPowerPCAsmPrinter.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMPowerPCCodeGen.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMPowerPCDesc.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMPowerPCInfo.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMR600AsmPrinter.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMR600CodeGen.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMR600Desc.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMR600Info.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMRuntimeDyld.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMScalarOpts.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMSelectionDAG.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMSparcCodeGen.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMSparcDesc.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMSparcInfo.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMSupport.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMSystemZAsmParser.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMSystemZAsmPrinter.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMSystemZCodeGen.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMSystemZDesc.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMSystemZDisassembler.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMSystemZInfo.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMTableGen.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMTarget.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMTransformUtils.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMVectorize.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMX86AsmParser.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMX86AsmPrinter.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMX86CodeGen.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMX86Desc.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMX86Disassembler.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMX86Info.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMX86Utils.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMXCoreAsmPrinter.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMXCoreCodeGen.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMXCoreDesc.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMXCoreDisassembler.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LLVMXCoreInfo.lib D:\LLVM\llvm-3.4.2\build_nmake\output\lib\LTO.lib