【问题标题】:Error when creating a global variable in llvm在 llvm 中创建全局变量时出错
【发布时间】:2013-11-08 18:45:25
【问题描述】:

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

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::GlobalVariable ::ThreadLocalMode)'

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

另外,我参考了头文件:

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

还有这篇文章

How can I declare a global variable in LLVM?

【问题讨论】:

    标签: c++ llvm


    【解决方案1】:

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

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

    顺便说一句 - 重要提示:您不应该创建新的全局变量或做任何其他修改函数传递中的模块的事情。如果你必须这样做,你需要一个模块通行证。

    【讨论】:

      猜你喜欢
      • 2016-10-25
      • 1970-01-01
      • 2015-03-24
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多