[llvm-commits] Transforms/Scalar/SROA build issue with MSVC2008

Benjamin Kramer benny.kra at gmail.com
Mon Sep 17 09:46:20 PDT 2012


On 17.09.2012, at 17:01, Axel Naumann <Axel.Naumann at cern.ch> wrote:

> Hi,
> 
> <http://llvm.org/docs/GettingStartedVS.html> says I should expect
> lib/Transforms/Scalar/SROA.cpp to build with MS Visual Studio 2008
> (version number 15.00.30729.01) + CMake in Debug. But it doesn't for me:
> 
> 94>c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\xutility(285) : error C2784: 'bool std::operator <(const
> std::_Tree<_Traits> &,const std::_Tree<_Traits> &)' : could not deduce
> template argument for 'const std::_Tree<_Traits> &' from 'const uint64_t'
> 
> 94>        c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\xtree(1466) : see declaration of 'std::operator <'
> 
> 94>        c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\algorithm(2264) : see reference to function template
> instantiation 'bool std::_Debug_lt<T,_Ty>(_Ty1 &,const _Ty2 &,const
> wchar_t *,unsigned int)' being compiled
> 
> 94>        with
> 
> 94>        [
> 
> 94>            T=`anonymous-namespace'::AllocaPartitioning::Partition,
> 
> 94>            _Ty=uint64_t,
> 
> 94>            _Ty1=`anonymous-namespace'::AllocaPartitioning::Partition,
> 
> 94>            _Ty2=uint64_t
> 
> 94>        ]
> 
> 94>        c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\algorithm(2276) : see reference to function template
> instantiation '_FwdIt
> std::_Lower_bound<`anonymous-namespace'::AllocaPartitioning::Partition*,_Ty,std::iterator_traits<_Iter>::difference_type>(_FwdIt,_FwdIt,const
> _Ty &,_Diff *)' being compiled
> 
> 94>        with
> 
> 94>        [
> 
> 94>
> _FwdIt=`anonymous-namespace'::AllocaPartitioning::Partition *,
> 
> 94>            _Ty=uint64_t,
> 
> 94>            _Iter=`anonymous-namespace'::AllocaPartitioning::Partition *,
> 
> 94>
> _Diff=std::iterator_traits<`anonymous-namespace'::AllocaPartitioning::Partition
> *>::difference_type
> 
> 94>        ]
> 
> 94>
> ..\..\..\..\cling-src-r45920\lib\Transforms\Scalar\SROA.cpp(790) : see
> reference to function template instantiation '_FwdIt
> std::lower_bound<`anonymous-namespace'::AllocaPartitioning::iterator,uint64_t>(_FwdIt,_FwdIt,const
> _Ty &)' being compiled
> 
> 94>        with
> 
> 94>        [
> 
> 94>            _FwdIt=`anonymous-namespace'::AllocaPartitioning::iterator,
> 
> 94>            _Ty=uint64_t
> 
> 94>        ]
> 
> 94>c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\xutility(285) : error C2784: 'bool std::operator <(const
> std::list<_Ty,_Ax> &,const std::list<_Ty,_Ax> &)' : could not deduce
> template argument for 'const std::list<_Ty,_Ax> &' from 'const uint64_t'
> 
> 94>        c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\list(1310) : see declaration of 'std::operator <'
> 
> 94>c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\xutility(285) : error C2784: 'bool std::operator <(const
> std::vector<_Ty,_Alloc> &,const std::vector<_Ty,_Alloc> &)' : could not
> deduce template argument for 'const std::vector<_Ty,_Alloc> &' from
> 'const uint64_t'
> 
> 94>        c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\vector(1322) : see declaration of 'std::operator <'
> 
> 94>c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\xutility(285) : error C2784: 'bool std::operator <(const
> std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem *)' : could not
> deduce template argument for 'const
> std::basic_string<_Elem,_Traits,_Alloc> &' from 'const uint64_t'
> 
> 94>        c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\string(150) : see declaration of 'std::operator <'
> 
> 94>c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\xutility(285) : error C2784: 'bool std::operator <(const
> _Elem *,const std::basic_string<_Elem,_Traits,_Alloc> &)' : could not
> deduce template argument for 'const _Elem *' from 'const uint64_t'
> 
> 94>        c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\string(140) : see declaration of 'std::operator <'
> 
> 94>c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\xutility(285) : error C2784: 'bool std::operator <(const
> std::basic_string<_Elem,_Traits,_Alloc> &,const
> std::basic_string<_Elem,_Traits,_Alloc> &)' : could not deduce template
> argument for 'const std::basic_string<_Elem,_Traits,_Alloc> &' from
> 'const uint64_t'
> 
> 94>        c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\string(130) : see declaration of 'std::operator <'
> 
> 94>c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\xutility(285) : error C2784: 'bool std::operator <(const
> std::reverse_iterator<_RanIt> &,const std::reverse_iterator<_RanIt2> &)'
> : could not deduce template argument for 'const
> std::reverse_iterator<_RanIt> &' from 'const uint64_t'
> 
> 94>        c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\xutility(2262) : see declaration of 'std::operator <'
> 
> 94>c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\xutility(285) : error C2784: 'bool std::operator <(const
> std::_Revranit<_RanIt,_Base> &,const std::_Revranit<_RanIt2,_Base2> &)'
> : could not deduce template argument for 'const
> std::_Revranit<_RanIt,_Base> &' from 'const uint64_t'
> 
> 94>        c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\xutility(2072) : see declaration of 'std::operator <'
> 
> 94>c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\xutility(285) : error C2784: 'bool std::operator <(const
> std::pair<_Ty1,_Ty2> &,const std::pair<_Ty1,_Ty2> &)' : could not deduce
> template argument for 'const std::pair<_Ty1,_Ty2> &' from 'const uint64_t'
> 
> 94>        c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\utility(99) : see declaration of 'std::operator <'
> 
> 94>c:\Program Files (x86)\Microsoft Visual Studio
> 9.0\VC\include\xutility(285) : error C2677: binary '<' : no global
> operator found which takes type
> '`anonymous-namespace'::AllocaPartitioning::Partition' (or there is no
> acceptable conversion)
> 
> I'm surprised nobody else is seeing it? If that is actually not
> surprising then I'll try to come up with a patch...

MSVC 2008 is really picky about lower_bound, this was changed in later versions of Microsoft's compiler. Most people have migrated to VC 2010, so the breakage wasn't noticed. I pushed a fix in r164035, but I couldn't verify that it works, I don't have a copy of visual studio.

- Ben





More information about the llvm-commits mailing list