[PATCH] D44223: [ms] Emit vtordisp initializers in a deterministic order.
Nico Weber via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 7 13:50:10 PST 2018
thakis updated this revision to Diff 137470.
thakis added a comment.
rnk comment
https://reviews.llvm.org/D44223
Files:
lib/CodeGen/MicrosoftCXXABI.cpp
Index: lib/CodeGen/MicrosoftCXXABI.cpp
===================================================================
--- lib/CodeGen/MicrosoftCXXABI.cpp
+++ lib/CodeGen/MicrosoftCXXABI.cpp
@@ -1196,15 +1196,15 @@
unsigned AS = getThisAddress(CGF).getAddressSpace();
llvm::Value *Int8This = nullptr; // Initialize lazily.
- for (VBOffsets::const_iterator I = VBaseMap.begin(), E = VBaseMap.end();
- I != E; ++I) {
- if (!I->second.hasVtorDisp())
+ for (const CXXBaseSpecifier &S : RD->vbases()) {
+ const CXXRecordDecl *VBase = S.getType()->getAsCXXRecordDecl();
+ if (!VBaseMap.find(VBase)->second.hasVtorDisp())
continue;
llvm::Value *VBaseOffset =
- GetVirtualBaseClassOffset(CGF, getThisAddress(CGF), RD, I->first);
+ GetVirtualBaseClassOffset(CGF, getThisAddress(CGF), RD, VBase);
uint64_t ConstantVBaseOffset =
- Layout.getVBaseClassOffset(I->first).getQuantity();
+ Layout.getVBaseClassOffset(VBase).getQuantity();
// vtorDisp_for_vbase = vbptr[vbase_idx] - offsetof(RD, vbase).
llvm::Value *VtorDispValue = Builder.CreateSub(
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D44223.137470.patch
Type: text/x-patch
Size: 1109 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180307/d31d31dd/attachment.bin>
More information about the cfe-commits
mailing list