Index: src/IceTranslator.cpp |
diff --git a/src/IceTranslator.cpp b/src/IceTranslator.cpp |
index ce54c218405d6c7466715f73b76ed27096728b75..181fd44c3dcb11e76d9fa7c61fa036c505205821 100644 |
--- a/src/IceTranslator.cpp |
+++ b/src/IceTranslator.cpp |
@@ -24,6 +24,20 @@ |
namespace Ice { |
+class CfgOptWorkItem final : public OptWorkItem { |
+ CfgOptWorkItem() = delete; |
+ CfgOptWorkItem(const CfgOptWorkItem &) = delete; |
+ CfgOptWorkItem &operator=(const CfgOptWorkItem &) = delete; |
+ |
+public: |
+ CfgOptWorkItem(std::unique_ptr<Cfg> Func) : Func(std::move(Func)) {} |
+ std::unique_ptr<Cfg> getParsedCfg() override { return std::move(Func); } |
+ ~CfgOptWorkItem() override = default; |
+ |
+private: |
+ std::unique_ptr<Ice::Cfg> Func; |
+}; |
+ |
Translator::Translator(GlobalContext *Ctx) |
: Ctx(Ctx), NextSequenceNumber(GlobalContext::getFirstSequenceNumber()), |
ErrorStatus() {} |
@@ -55,7 +69,7 @@ bool Translator::checkIfUnnamedNameSafe(const IceString &Name, const char *Kind, |
} |
void Translator::translateFcn(std::unique_ptr<Cfg> Func) { |
- Ctx->optQueueBlockingPush(std::move(Func)); |
+ Ctx->optQueueBlockingPush(makeUnique<CfgOptWorkItem>(std::move(Func))); |
} |
void Translator::lowerGlobals( |