summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-ir-specialize-resources.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-ir-specialize-resources.cpp')
-rw-r--r--source/slang/slang-ir-specialize-resources.cpp48
1 files changed, 24 insertions, 24 deletions
diff --git a/source/slang/slang-ir-specialize-resources.cpp b/source/slang/slang-ir-specialize-resources.cpp
index e4ccf40d5..03eda0d99 100644
--- a/source/slang/slang-ir-specialize-resources.cpp
+++ b/source/slang/slang-ir-specialize-resources.cpp
@@ -256,16 +256,16 @@ struct ResourceOutputSpecializationPass
// the aid of this pass.
//
List<IRCall*> calls;
- for( auto use = oldFunc->firstUse; use; use = use->nextUse )
- {
- auto user = use->getUser();
- auto call = as<IRCall>(user);
- if(!call)
- continue;
- if(call->getCallee() != oldFunc)
- continue;
- calls.add(call);
- }
+ traverseUses(oldFunc, [&](IRUse* use)
+ {
+ auto user = use->getUser();
+ auto call = as<IRCall>(user);
+ if (!call)
+ return;
+ if (call->getCallee() != oldFunc)
+ return;
+ calls.add(call);
+ });
// Once we have identified the calls to `oldFunc`, we will set about replacing
// them with calls to `newFunc`.
@@ -833,16 +833,16 @@ struct ResourceOutputSpecializationPass
// `out`/`inout` parameters that doesn't have as many "gotcha" cases.
//
List<IRStore*> stores;
- for( auto use = param->firstUse; use; use = use->nextUse )
- {
- auto user = use->getUser();
- auto store = as<IRStore>(user);
- if(!store)
- continue;
- if(store->ptr.get() != param)
- continue;
- stores.add(store);
- }
+ traverseUses(param, [&](IRUse* use)
+ {
+ auto user = use->getUser();
+ auto store = as<IRStore>(user);
+ if (!store)
+ return;
+ if (store->ptr.get() != param)
+ return;
+ stores.add(store);
+ });
// Having identified the places where a value is stored to
// the output parameter, we iterate over those values to
@@ -1194,16 +1194,16 @@ bool specializeResourceUsage(
// Inline unspecializable resource output functions and then continue trying.
for (auto func : unspecializableFuncs)
{
- for (auto use = func->firstUse; use; use = use->nextUse)
+ traverseUses(func, [&](IRUse* use)
{
auto user = use->getUser();
auto call = as<IRCall>(user);
if (!call)
- continue;
+ return;
if (call->getCallee() != func)
- continue;
+ return;
inlineCall(call);
- }
+ });
}
simplifyIR(irModule);
}