diff options
author | Lifeng Pan <lifeng.pan@amd.com> | 2017-10-18 22:39:41 +0800 |
---|---|---|
committer | Yaxun (Sam) Liu <yaxun.liu@amd.com> | 2017-10-18 10:39:41 -0400 |
commit | dccb034abd065ad290efe77b937756241a4d21ea (patch) | |
tree | cb3c37d3d724b0a52cf0ce17753484c0a31a55c2 | |
parent | ff73dcecd60b153d8b53bb31804c9e19aa2b023c (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.cpp | 1 | ||||
-rw-r--r-- | lib/SPIRV/libSPIRV/SPIRVModule.cpp | 7 |
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;
}
|