[llvm-commits] [llvm] r153837 - in /llvm/trunk: include/llvm/MC/MCRegisterInfo.h utils/TableGen/RegisterInfoEmitter.cpp utils/TableGen/RegisterInfoEmitter.h
Anton Yartsev
anton.yartsev at gmail.com
Tue Apr 3 19:10:41 PDT 2012
Hi Benjamin,
just failed to compile Clang with MSVC8, found out that the problem seem
to be caused by this commit.
> class MCRegisterInfo {
> public:
> typedef const MCRegisterClass *regclass_iterator;
> +
> + /// DwarfLLVMRegPair - Emitted by tablegen so Dwarf<->LLVM reg
mappings can be
> + /// performed with a binary search.
> + struct DwarfLLVMRegPair {
> + unsigned FromReg;
> + unsigned ToReg;
> +
> + bool operator==(unsigned Reg) const { return FromReg == Reg; }
> + bool operator<(unsigned Reg) const { return FromReg < Reg; }
> + };
My workaround was to add the cast operator to the DwarfLLVMRegPair
struct (patch attached)
As seen from the "Microsoft Visual Studio 9.0\VC\include\xutility" both
left to right and right to left comparisons are present:
template<class _Ty1, class _Ty2> inline
bool __CLRCALL_OR_CDECL _Debug_lt(const _Ty1& _Left, const _Ty2&
_Right,
const wchar_t *_Where, unsigned int _Line)
{ // test if _Left < _Right and operator< is strict weak ordering
if (!(_Left < _Right))
return (false);
else if (_Right < _Left)
_DEBUG_ERROR2("invalid operator<", _Where, _Line);
return (true);
}
Is this the right fix?
here is my build log:
1>------ Build started: Project: LLVMMC, Configuration: Debug Win32 ------
1>Compiling...
1>MCDwarf.cpp
1>MCContext.cpp
1>C:\Program Files\Microsoft Visual Studio 9.0\VC\include\xutility(263)
: error C2678: binary '<' : no operator found which takes a left-hand
operand of type 'const unsigned int' (or there is no acceptable conversion)
1> F:\llvm_TRC\include\llvm/ADT/StringRef.h(497): could be 'bool
llvm::operator <(llvm::StringRef,llvm::StringRef)' [found using
argument-dependent lookup]
1> while trying to match the argument list '(const unsigned int,
const llvm::MCRegisterInfo::DwarfLLVMRegPair)'
1> C:\Program Files\Microsoft Visual Studio
9.0\VC\include\algorithm(2264) : see reference to function template
instantiation 'bool
std::_Debug_lt<llvm::MCRegisterInfo::DwarfLLVMRegPair,_Ty>(const _Ty1
&,const _Ty2 &,const wchar_t *,unsigned int)' being compiled
1> with
1> [
1> _Ty=unsigned int,
1> _Ty1=llvm::MCRegisterInfo::DwarfLLVMRegPair,
1> _Ty2=unsigned int
1> ]
1> C:\Program Files\Microsoft Visual Studio
9.0\VC\include\algorithm(2276) : see reference to function template
instantiation '_FwdIt std::_Lower_bound<const
llvm::MCRegisterInfo::DwarfLLVMRegPair*,_Ty,std::iterator_traits<_Iter>::difference_type>(_FwdIt,_FwdIt,const
_Ty &,_Diff *)' being compiled
1> with
1> [
1> _FwdIt=const llvm::MCRegisterInfo::DwarfLLVMRegPair *,
1> _Ty=unsigned int,
1> _Iter=const llvm::MCRegisterInfo::DwarfLLVMRegPair *,
1> _Diff=std::iterator_traits<const
llvm::MCRegisterInfo::DwarfLLVMRegPair *>::difference_type
1> ]
1> F:\llvm_TRC\include\llvm/MC/MCRegisterInfo.h(319) : see
reference to function template instantiation '_FwdIt
std::lower_bound<const llvm::MCRegisterInfo::DwarfLLVMRegPair*,unsigned
int>(_FwdIt,_FwdIt,const _Ty &)' being compiled
1> with
1> [
1> _FwdIt=const llvm::MCRegisterInfo::DwarfLLVMRegPair *,
1> _Ty=unsigned int
1> ]
--
Anton
-------------- next part --------------
A non-text attachment was scrubbed...
Name: MCRegisterInfo.h.patch
Type: text/x-diff
Size: 477 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120404/1ad0c6ea/attachment.patch>
More information about the llvm-commits
mailing list