r283790 - [AST] Don't use make_pointee_iterator in VTableBuilder.

Justin Lebar via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 10 12:26:22 PDT 2016


Author: jlebar
Date: Mon Oct 10 14:26:22 2016
New Revision: 283790

URL: http://llvm.org/viewvc/llvm-project?rev=283790&view=rev
Log:
[AST] Don't use make_pointee_iterator in VTableBuilder.

Our implementation of make_pointee_iterator seems to be causing MSVC
2015 to crash, so I'm going to remove it.

Modified:
    cfe/trunk/lib/AST/VTableBuilder.cpp

Modified: cfe/trunk/lib/AST/VTableBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/VTableBuilder.cpp?rev=283790&r1=283789&r2=283790&view=diff
==============================================================================
--- cfe/trunk/lib/AST/VTableBuilder.cpp (original)
+++ cfe/trunk/lib/AST/VTableBuilder.cpp Mon Oct 10 14:26:22 2016
@@ -3361,9 +3361,10 @@ static bool rebucketPaths(VPtrInfoVector
   // sorted vector to implement a multiset to form the buckets.  Note that the
   // ordering is based on pointers, but it doesn't change our output order.  The
   // current algorithm is designed to match MSVC 2012's names.
-  llvm::SmallVector<std::reference_wrapper<VPtrInfo>, 2> PathsSorted(
-      llvm::make_pointee_iterator(Paths.begin()),
-      llvm::make_pointee_iterator(Paths.end()));
+  llvm::SmallVector<std::reference_wrapper<VPtrInfo>, 2> PathsSorted;
+  PathsSorted.reserve(Paths.size());
+  for (auto& P : Paths)
+    PathsSorted.push_back(*P);
   std::sort(PathsSorted.begin(), PathsSorted.end(),
             [](const VPtrInfo &LHS, const VPtrInfo &RHS) {
     return LHS.MangledPath < RHS.MangledPath;




More information about the cfe-commits mailing list