r202441 - MS ABI: Attempt to fix DenseMap entry reference invalidation
Reid Kleckner
reid at kleckner.net
Thu Feb 27 14:51:43 PST 2014
Author: rnk
Date: Thu Feb 27 16:51:43 2014
New Revision: 202441
URL: http://llvm.org/viewvc/llvm-project?rev=202441&view=rev
Log:
MS ABI: Attempt to fix DenseMap entry reference invalidation
Modified:
cfe/trunk/include/clang/AST/VTableBuilder.h
cfe/trunk/lib/AST/VTableBuilder.cpp
Modified: cfe/trunk/include/clang/AST/VTableBuilder.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/VTableBuilder.h?rev=202441&r1=202440&r2=202441&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/VTableBuilder.h (original)
+++ cfe/trunk/include/clang/AST/VTableBuilder.h Thu Feb 27 16:51:43 2014
@@ -485,7 +485,7 @@ private:
MethodVFTableLocationsTy;
MethodVFTableLocationsTy MethodVFTableLocations;
- typedef llvm::DenseMap<const CXXRecordDecl *, VPtrInfoVector>
+ typedef llvm::DenseMap<const CXXRecordDecl *, VPtrInfoVector *>
VFPtrLocationsMapTy;
VFPtrLocationsMapTy VFPtrLocations;
Modified: cfe/trunk/lib/AST/VTableBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/VTableBuilder.cpp?rev=202441&r1=202440&r2=202441&view=diff
==============================================================================
--- cfe/trunk/lib/AST/VTableBuilder.cpp (original)
+++ cfe/trunk/lib/AST/VTableBuilder.cpp Thu Feb 27 16:51:43 2014
@@ -3387,11 +3387,12 @@ void MicrosoftVTableContext::computeVTab
const VTableLayout::AddressPointsMapTy EmptyAddressPointsMap;
- VPtrInfoVector &VFPtrs = VFPtrLocations[RD];
- computeVTablePaths(/*ForVBTables=*/false, RD, VFPtrs);
+ VPtrInfoVector *VFPtrs = new VPtrInfoVector();
+ computeVTablePaths(/*ForVBTables=*/false, RD, *VFPtrs);
+ VFPtrLocations[RD] = VFPtrs;
MethodVFTableLocationsTy NewMethodLocations;
- for (VPtrInfoVector::iterator I = VFPtrs.begin(), E = VFPtrs.end();
+ for (VPtrInfoVector::iterator I = VFPtrs->begin(), E = VFPtrs->end();
I != E; ++I) {
VFTableBuilder Builder(*this, RD, *I);
@@ -3530,7 +3531,7 @@ MicrosoftVTableContext::getVFPtrOffsets(
computeVTableRelatedInformation(RD);
assert(VFPtrLocations.count(RD) && "Couldn't find vfptr locations");
- return VFPtrLocations[RD];
+ return *VFPtrLocations[RD];
}
const VTableLayout &
More information about the cfe-commits
mailing list