summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-ir-inline.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-ir-inline.cpp')
-rw-r--r--source/slang/slang-ir-inline.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/source/slang/slang-ir-inline.cpp b/source/slang/slang-ir-inline.cpp
index a2ccc1ed7..0d5cb1c70 100644
--- a/source/slang/slang-ir-inline.cpp
+++ b/source/slang/slang-ir-inline.cpp
@@ -29,6 +29,8 @@ struct InliningPassBase
/// The module that we are optimizing/transforming
IRModule* m_module = nullptr;
+ HashSet<IRInst*>* m_modifiedFuncs = nullptr;
+
/// Initialize an inlining pass to operate on the given `module`
InliningPassBase(IRModule* module)
: m_module(module)
@@ -157,6 +159,11 @@ struct InliningPassBase
// given call site, we hand off the a worker routine
// that does the meat of the work.
//
+ if (m_modifiedFuncs)
+ {
+ if (auto parentFunc = getParentFunc(call))
+ m_modifiedFuncs->add(parentFunc);
+ }
inlineCallSite(callSite);
return true;
}
@@ -698,12 +705,13 @@ struct MandatoryEarlyInliningPass : InliningPassBase
};
-void performMandatoryEarlyInlining(IRModule* module)
+bool performMandatoryEarlyInlining(IRModule* module, HashSet<IRInst*>* modifiedFuncs)
{
SLANG_PROFILE;
MandatoryEarlyInliningPass pass(module);
- pass.considerAllCallSites();
+ pass.m_modifiedFuncs = modifiedFuncs;
+ return pass.considerAllCallSites();
}
namespace { // anonymous