我正在尝试使用Visual Studio 14.0(2015)从Windows 10上的源代码编译LLVM 5.0.0。
我使用了以下cmake标志:
CMAKEOPTIONS += -D PYTHON_EXECUTABLE:PATH=$(PYTHON_PATH)/bin/python
CMAKEOPTIONS += -D LLVM_ENABLE_TERMINFO=0
CMAKEOPTIONS += -D LLVM_ENABLE_EH=1
CMAKEOPTIONS += -D LLVM_ENABLE_RTTI=1
CMAKEOPTIONS += -D LLVM_ENABLE_ASSERTIONS:BOOL=ON -D LLVM_ABI_BREAKING_CHECKS:STRING="FORCE_OFF"
编译失败:
严重级代码说明项目文件行抑制状态错误 C2039 “iterator_facade_base,0,1>
,std :: forward_iterator_tag,llvm :: PHINode const,__ int64,llvm :: PHINode const *,llvm :: PHINode const&>':不是 'llvm :: BasicBlock :: phi_iterator_impl'(编译源代码 文件 S:\ authama \ 3P-TMW \ 3P \衍生\ Win64的\ LLVM5 \ LLVM调试\ lib中\目标\ AMDGPU \的Utils \ AMDGPUBaseInfo.cpp) LLVMAMDGPUUtils S:\ authama \ 3P-TMW \ 3P \衍生\ Win64的\ llvm5 \ LLVM调试\包括\ LLVM \ IR \ basicblock.h 294
指向:
290 bool operator==(const phi_iterator_impl &Arg) const { return PN == Arg.PN; }
291
292 PHINodeT &operator*() const { return *PN; }
293
294 using phi_iterator_impl::iterator_facade_base::operator++;
295 phi_iterator_impl &operator++() {
296 assert(PN && "Cannot increment the end iterator!");
297 PN = dyn_cast<PHINodeT>(std::next(BBIteratorT(PN)));
298 return *this;
299 }
源代码用GCC 4.9 / Debian8编译,所以我猜我错过了正确设置编译器的事情。 有什么建议让我试试吗?
答案 0 :(得分:0)
正如我曾被其中一位VCPP开发者告知的那样,“请升级到2017年; 2015年是一个古老的错误农场。”在许多情况下不太有用,但如果您使用的是2015年的社区版本(或者能够将pro / enterprise 2015升级到2017年),请尝试升级到2017并查看是否修复了它。
我在2015年遇到了类似的问题,结果却是一个实际的编译器错误,这似乎也是问题所在。