Index: src/IceTranslator.cpp |
diff --git a/src/IceTranslator.cpp b/src/IceTranslator.cpp |
index 04e2ffd9aee677c91a34bf5cf1617e58a4945e7a..b58573a4e0712c2b231d7da7bd5196681bcd003b 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() {} |
@@ -57,7 +71,7 @@ bool Translator::checkIfUnnamedNameSafe(const std::string &Name, |
} |
void Translator::translateFcn(std::unique_ptr<Cfg> Func) { |
- Ctx->optQueueBlockingPush(std::move(Func)); |
+ Ctx->optQueueBlockingPush(makeUnique<CfgOptWorkItem>(std::move(Func))); |
} |
void Translator::lowerGlobals( |