无法使用MSVC 14.0编译LLVM 5.0.0

时间:2017-12-29 12:54:50

标签: c++11

我正在尝试使用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编译,所以我猜我错过了正确设置编译器的事情。 有什么建议让我试试吗?

1 个答案:

答案 0 :(得分:0)

正如我曾被其中一位VCPP开发者告知的那样,“请升级到2017年; 2015年是一个古老的错误农场。”在许多情况下不太有用,但如果您使用的是2015年的社区版本(或者能够将pro / enterprise 2015升级到2017年),请尝试升级到2017并查看是否修复了它。

我在2015年遇到了类似的问题,结果却是一个实际的编译器错误,这似乎也是问题所在。