From 1677a25f44d6f608c8aecd4e5c0ceeb94573c10e Mon Sep 17 00:00:00 2001 From: venkataram-nv Date: Thu, 18 Jul 2024 11:13:26 -0700 Subject: Fix bug with uninititialized warnings in nested scopes (#4677) Previously the warning system ignores undefined variables in nested scopes (blocks in IR). --- source/slang/slang-ir-use-uninitialized-values.cpp | 23 ++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'source') diff --git a/source/slang/slang-ir-use-uninitialized-values.cpp b/source/slang/slang-ir-use-uninitialized-values.cpp index 9780d669a..1be43591a 100644 --- a/source/slang/slang-ir-use-uninitialized-values.cpp +++ b/source/slang/slang-ir-use-uninitialized-values.cpp @@ -377,21 +377,24 @@ namespace Slang } // Check ordinary instructions - for (auto inst = firstBlock->getFirstInst(); inst; inst = inst->getNextInst()) + for (auto block : func->getBlocks()) { - if (!isUninitializedValue(inst)) - continue; + for (auto inst = block->getFirstInst(); inst; inst = inst->getNextInst()) + { + if (!isUninitializedValue(inst)) + continue; - IRType* type = inst->getFullType(); - if (canIgnoreType(type, nullptr)) - continue; + IRType* type = inst->getFullType(); + if (canIgnoreType(type, nullptr)) + continue; - auto loads = getUnresolvedVariableLoads(reachability, inst); - for (auto load : loads) - { - sink->diagnose(load, + auto loads = getUnresolvedVariableLoads(reachability, inst); + for (auto load : loads) + { + sink->diagnose(load, Diagnostics::usingUninitializedVariable, inst); + } } } } -- cgit v1.2.3