From 0fe7f6b899de91495b9e34fbdd7ce7b595178915 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Sun, 27 Feb 2022 18:43:02 +0100 Subject: [PATCH] Shader/EliminateUnusedPassVisitor: Fix function call --- .../Shader/Ast/EliminateUnusedPassVisitor.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/Nazara/Shader/Ast/EliminateUnusedPassVisitor.cpp b/src/Nazara/Shader/Ast/EliminateUnusedPassVisitor.cpp index 95afe355d..8d5f9e913 100644 --- a/src/Nazara/Shader/Ast/EliminateUnusedPassVisitor.cpp +++ b/src/Nazara/Shader/Ast/EliminateUnusedPassVisitor.cpp @@ -61,14 +61,24 @@ namespace Nz::ShaderAst void Visit(CallFunctionExpression& node) override { - const auto& targetFuncType = GetExpressionType(node); + const auto& targetFuncType = GetExpressionType(*node.targetFunction); assert(std::holds_alternative(targetFuncType)); const auto& funcType = std::get(targetFuncType); assert(currentFunctionIndex); - UsageSet& usageSet = Retrieve(functionUsages, *currentFunctionIndex); - usageSet.usedFunctions.UnboundedSet(funcType.funcIndex); + if (currentVariableDeclIndex) + { + UsageSet& usageSet = Retrieve(variableUsages, *currentVariableDeclIndex); + usageSet.usedFunctions.UnboundedSet(funcType.funcIndex); + } + else + { + UsageSet& usageSet = Retrieve(functionUsages, *currentFunctionIndex); + usageSet.usedFunctions.UnboundedSet(funcType.funcIndex); + } + + AstRecursiveVisitor::Visit(node); } void Visit(DeclareExternalStatement& node) override