Skip to content

Commit 123f811

Browse files
committed
Try to unbreak Win build after 9735198
Apparently some versions of the MS STL don't like constructing a vector from a StringMapKeyIterator<>: http://45.33.8.238/win/44999/step_4.txt It builds fine with the MS STL on my Windows box, so just sidestep the issue. Full error for posterity: VC\Tools\MSVC\14.14.26428\include\xmemory(218,75): error: indirection requires pointer operand ('const llvm::StringMapKeyIterator<llvm::StringRef>' invalid) _Uses_default_construct_t<_Alloc, decltype(_Unfancy(_UDest)), decltype(*_UFirst)>()))); VC\Tools\MSVC\14.14.26428\include\vector(1922,11): note: in instantiation of function template specialization 'std::_Uninitialized_copy<...>' requested here return (_Uninitialized_copy(_First, _Last, _Dest, this->_Getal())); VC\Tools\MSVC\14.14.26428\include\vector(757,22): note: in instantiation of function template specialization 'std::vector<llvm::StringRef>::_Ucopy<llvm::StringMapKeyIterator<llvm::StringRef>>' requested here this->_Mylast() = _Ucopy(_First, _Last, this->_Myfirst()); VC\Tools\MSVC\14.14.26428\include\vector(772,3): note: in instantiation of function template specialization 'std::vector<llvm::StringRef>::_Range_construct_or_tidy<llvm::StringMapKeyIterator<llvm::StringRef>>' requested here _Range_construct_or_tidy(_Unchecked(_First), _Unchecked(_Last), _Iter_cat_t<_Iter>{}); ../../clang/lib/Driver/ToolChains/Arch/X86.cpp(62,30): note: in instantiation of function template specialization 'std::vector<llvm::StringRef>::vector<llvm::StringMapKeyIterator<llvm::StringRef>, void>' requested here std::vector<StringRef> ValidArchs{ArchMap.keys().begin(),
1 parent 498e8ae commit 123f811

File tree

1 file changed

+3
-2
lines changed
  • clang/lib/Driver/ToolChains/Arch

1 file changed

+3
-2
lines changed

clang/lib/Driver/ToolChains/Arch/X86.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,9 @@ std::string x86::getX86TargetCPU(const Driver &D, const ArgList &Args,
5959
}
6060
StringRef CPU = ArchMap.lookup(A->getValue());
6161
if (CPU.empty()) {
62-
std::vector<StringRef> ValidArchs{ArchMap.keys().begin(),
63-
ArchMap.keys().end()};
62+
std::vector<StringRef> ValidArchs;
63+
for (StringRef Key : ArchMap.keys())
64+
ValidArchs.push_back(Key);
6465
sort(ValidArchs);
6566
D.Diag(diag::warn_drv_invalid_arch_name_with_suggestion)
6667
<< A->getValue() << (Triple.getArch() == llvm::Triple::x86)

0 commit comments

Comments
 (0)