From 0b05fe33c82ee301c134f5b9a87a596aa47121c8 Mon Sep 17 00:00:00 2001 From: Yong He Date: Thu, 10 Nov 2022 14:19:20 -0800 Subject: Fix inlining pass. (#2506) * Fix inlining pass. * Add more check against corner cases. * Revise comments. * Fixes. * Fix premake script. * Fixes. Co-authored-by: Yong He --- source/slang/slang-ir-single-return.cpp | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) (limited to 'source/slang/slang-ir-single-return.cpp') diff --git a/source/slang/slang-ir-single-return.cpp b/source/slang/slang-ir-single-return.cpp index a00066556..f76e35040 100644 --- a/source/slang/slang-ir-single-return.cpp +++ b/source/slang/slang-ir-single-return.cpp @@ -54,7 +54,8 @@ struct SingleReturnContext : public InstPassBase { loopHeaderBlock->addParam(param); } - auto loopInst = (IRLoop*)builder.emitLoop(originalStartBlock, breakBlock, originalStartBlock); + + builder.emitLoop(originalStartBlock, breakBlock, originalStartBlock); // Now replace all return insts as break insts. processChildInstsOfType(kIROp_Return, func, [&](IRReturn* returnInst) @@ -81,16 +82,6 @@ struct SingleReturnContext : public InstPassBase builder.emitReturn(retValParam); else builder.emitReturn(); - - // Now run the multi-level-break pass. - eliminateMultiLevelBreakForFunc(module, func); - - // Now remove the trivial loop header. - SLANG_RELEASE_ASSERT(loopInst->getContinueBlock() == loopInst->getTargetBlock()); - auto targetBlock = loopInst->getTargetBlock(); - for (auto param : params) - targetBlock->addParam(param); - loopHeaderBlock->removeAndDeallocate(); } }; -- cgit v1.2.3