绑定LLVM 3.8.4没有getGlobalContext

时间:2016-07-26 01:34:14

标签: compiler-construction llvm

我正在尝试关注https://github.com/lsegal/my_toy_compiler,但即使它已针对LLVM 3.8.0进行了更新,我也无法使用来自brew --with-clang --with-lld --with-jit --with-python的LLVM 3.8.4进行编译。具体来说,我收到以下错误use of undeclared identifier 'getGlobalContext'

此外,符号getGlobalContext不会出现在/usr/local/opt/llvm/include/llvm/IR/LLVMContext.h/usr/local/opt/llvm/include目录中的任何位置。

我希望最近这个函数已被弃用(我无法找到任何证据),或者我没有正确构建它。

任何提示都将不胜感激。

注意我看过Trouble linking against LLVM with project including Flex and Bison并没有解决我的特定问题

2 个答案:

答案 0 :(得分:6)

我也遇到过与llvm 4.0相同的问题。 我的解决方案如下。

旧:

LLVMContext *llvmcx;
llvmcx = &getGlobalContext();

新:

LLVMContext *llvmcx;
static LLVMContext MyGlobalContext;
llvmcx = &MyGlobalContext;

答案 1 :(得分:4)

我对从svn构建的4.0.0版本有同样的问题。我发现以下提交266379删除所有出现的getGlobalConfig()

https://reviews.llvm.org/rL266379

此提交更改了定义内部上下文变量的示例:

static IRBuilder<> Builder(getGlobalContext());

成为

static LLVMContext TheContext;
static IRBuilder<> Builder(TheContext);