在llvm中创建全局变量时出错

Zil*_*ate 3 c++ llvm

我试图在函数传递中创建一个全局变量.代码是

gVar= new GlobalVariable(
    /*Type=*/Int32Type,
    /*isConstant=*/false,
    /*Linkage=*/GlobalValue::CommonLinkage,
    /*Initializer=*/0, // has initializer, specified below
    /*Name=*/"gVar",
    /*ThreadLocalMode*/GlobalVariable::InitialExecTLSModel);
Run Code Online (Sandbox Code Playgroud)

但是,我不断收到以下编译器错误:

错误:没有匹配函数来调用'llvm :: GlobalVariable :: GlobalVariable(const llvm :: Type*&,bool,llvm :: GlobalValue :: LinkageTypes,int,const char [4],llvm :: GlobalVariable :: ThreadLocalMode )"

你能告诉我在llvm中声明一个全局变量的正确方法吗?非常感谢你!

另外,我已经提到了头文件:

http://llvm.org/docs/doxygen/html/GlobalVariable_8h_source.html

这篇文章

如何在LLVM中声明全局变量?

Eli*_*sky 6

您需要将模块传递给构造函数.LLVM代码库中有大量用于创建全局变量的示例.例如,在examples/ExceptionDemo/ExceptionDemo.cpp:

new llvm::GlobalVariable(module,
                         stringConstant->getType(),
                         true,
                         llvm::GlobalValue::LinkerPrivateLinkage,
                         stringConstant,
                         "");
Run Code Online (Sandbox Code Playgroud)

顺便说一下 - 重要的说明:你不应该创建新的全局变量或做任何修改函数传递中的模块的东西.如果必须这样做,则需要模块传递.