summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLifeng Pan <lifeng.pan@amd.com>2017-10-18 22:39:41 +0800
committerYaxun (Sam) Liu <yaxun.liu@amd.com>2017-10-18 10:39:41 -0400
commitdccb034abd065ad290efe77b937756241a4d21ea (patch)
treecb3c37d3d724b0a52cf0ce17753484c0a31a55c2
parentff73dcecd60b153d8b53bb31804c9e19aa2b023c (diff)
~SPIRVModuleImpl() crashes when delete id entries (#223)
A forwarded entry has 2 duplicate elements in "IdEntryMap", one element is at map slot of old id, and another is at forward id.
-rw-r--r--lib/SPIRV/SPIRVWriter.cpp1
-rw-r--r--lib/SPIRV/libSPIRV/SPIRVModule.cpp7
2 files changed, 3 insertions, 5 deletions
diff --git a/lib/SPIRV/SPIRVWriter.cpp b/lib/SPIRV/SPIRVWriter.cpp
index 604ab71..e62bca6 100644
--- a/lib/SPIRV/SPIRVWriter.cpp
+++ b/lib/SPIRV/SPIRVWriter.cpp
@@ -247,7 +247,6 @@ private:
assert (Loc->second->isForward() &&
"LLVM Value is mapped to different SPIRV Values");
auto Forward = static_cast<SPIRVForward *>(Loc->second);
- BV->setId(Forward->getId());
BM->replaceForward(Forward, BV);
}
ValueMap[V] = BV;
diff --git a/lib/SPIRV/libSPIRV/SPIRVModule.cpp b/lib/SPIRV/libSPIRV/SPIRVModule.cpp
index d4cfa71..e381428 100644
--- a/lib/SPIRV/libSPIRV/SPIRVModule.cpp
+++ b/lib/SPIRV/libSPIRV/SPIRVModule.cpp
@@ -378,13 +378,12 @@ private:
};
SPIRVModuleImpl::~SPIRVModuleImpl() {
- //ToDo: Fix bug causing crash
- //for (auto I:IdEntryMap)
- // delete I.second;
-
for (auto I : EntryNoId)
delete I;
+ for (auto I : IdEntryMap)
+ delete I.second;
+
for (auto C : CapMap)
delete C.second;
}