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

时间:2013-11-08 18:45:25

标签: c++ llvm

我正在尝试在函数传递中创建一个全局变量。代码是

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

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

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

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

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

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

和这篇文章

How can I declare a global variable in LLVM?

1 个答案:

答案 0 :(得分:6)

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

new llvm::GlobalVariable(module,
                         stringConstant->getType(),
                         true,
                         llvm::GlobalValue::LinkerPrivateLinkage,
                         stringConstant,
                         "");

顺便说一下 - 重要提示:您不应该创建新的全局变量或执行任何修改函数传递中的模块的操作。如果必须这样做,则需要模块传递。