From a79f3bd36e652b6a7ef8e7f8cc74d347fe69e8b0 Mon Sep 17 00:00:00 2001 From: WinterSnowfall Date: Sat, 8 Mar 2025 02:57:02 +0200 Subject: [PATCH] [dxso] Fix uninitialized variables and other static analysis hints --- src/dxso/dxso_analysis.h | 2 +- src/dxso/dxso_compiler.cpp | 8 +++----- src/dxso/dxso_compiler.h | 6 +++--- src/dxso/dxso_module.h | 8 ++++---- src/dxvk/dxvk_util.h | 2 -- src/util/util_bit.h | 2 -- 6 files changed, 11 insertions(+), 17 deletions(-) diff --git a/src/dxso/dxso_analysis.h b/src/dxso/dxso_analysis.h index c1321e09a..769370f0f 100644 --- a/src/dxso/dxso_analysis.h +++ b/src/dxso/dxso_analysis.h @@ -34,7 +34,7 @@ namespace dxvk { DxsoAnalysisInfo* m_analysis = nullptr; - DxsoOpcode m_parentOpcode; + DxsoOpcode m_parentOpcode = DxsoOpcode::Nop; }; diff --git a/src/dxso/dxso_compiler.cpp b/src/dxso/dxso_compiler.cpp index 1d7e1bf1d..82c451191 100644 --- a/src/dxso/dxso_compiler.cpp +++ b/src/dxso/dxso_compiler.cpp @@ -1163,8 +1163,7 @@ namespace dxvk { return m_vs.oPSize; default: { - DxsoRegisterPointer nullPointer; - nullPointer.id = 0; + DxsoRegisterPointer nullPointer = { }; return nullPointer; } } @@ -1274,8 +1273,7 @@ namespace dxvk { default: { //Logger::warn(str::format("emitGetOperandPtr: unhandled reg type: ", reg.id.type)); - DxsoRegisterPointer nullPointer; - nullPointer.id = 0; + DxsoRegisterPointer nullPointer = { }; return nullPointer; } } @@ -2702,7 +2700,7 @@ void DxsoCompiler::emitControlFlowGenericLoop( const DxsoOpcode opcode = ctx.instruction.opcode; DxsoRegisterValue texcoordVar; - uint32_t samplerIdx; + uint32_t samplerIdx = 0u; DxsoRegMask vec3Mask(true, true, true, false); DxsoRegMask srcMask (true, true, true, true); diff --git a/src/dxso/dxso_compiler.h b/src/dxso/dxso_compiler.h index 7a8d9e586..917b47e40 100644 --- a/src/dxso/dxso_compiler.h +++ b/src/dxso/dxso_compiler.h @@ -279,7 +279,7 @@ namespace dxvk { // Predicate registers std::array< DxsoRegisterPointer, - 1> m_pRegs; + 1> m_pRegs = { }; ////////////////////////////////////////////////////////////////// // Array of input values. Since v# and o# registers are indexable @@ -313,7 +313,7 @@ namespace dxvk { // Working tex/coord registers (PS) std::array< DxsoRegisterPointer, - DxsoMaxTextureRegs> m_tRegs; + DxsoMaxTextureRegs> m_tRegs = { }; /////////////////////////////////////////////// // Control flow information. Stores labels for @@ -327,7 +327,7 @@ namespace dxvk { //////////// // Samplers - std::array m_samplers; + std::array m_samplers = { }; //////////////////////////////////////////// // What io regswe need to diff --git a/src/dxso/dxso_module.h b/src/dxso/dxso_module.h index e95115c8d..dfe1eb7bc 100644 --- a/src/dxso/dxso_module.h +++ b/src/dxso/dxso_module.h @@ -77,12 +77,12 @@ namespace dxvk { DxsoCode m_code; DxsoIsgn m_isgn; - uint32_t m_usedSamplers; - uint32_t m_usedRTs; - uint32_t m_textureTypes; + uint32_t m_usedSamplers = 0u; + uint32_t m_usedRTs = 0u; + uint32_t m_textureTypes = 0u; DxsoShaderMetaInfo m_meta; - uint32_t m_maxDefinedConst; + uint32_t m_maxDefinedConst = 0u; DxsoDefinedConstants m_constants; }; diff --git a/src/dxvk/dxvk_util.h b/src/dxvk/dxvk_util.h index 49a63da1c..f58d168f7 100644 --- a/src/dxvk/dxvk_util.h +++ b/src/dxvk/dxvk_util.h @@ -23,8 +23,6 @@ namespace dxvk::util { public: - DxvkDebugLabel() = default; - DxvkDebugLabel(const VkDebugUtilsLabelEXT& label, DxvkDebugLabelType type) : m_text(label.pLabelName ? label.pLabelName : ""), m_type(type) { for (uint32_t i = 0; i < m_color.size(); i++) diff --git a/src/util/util_bit.h b/src/util/util_bit.h index dde87ea05..5d1ebf3df 100644 --- a/src/util/util_bit.h +++ b/src/util/util_bit.h @@ -685,8 +685,6 @@ namespace dxvk::bit { * \brief 48-bit integer storage type */ struct uint48_t { - uint48_t() = default; - explicit uint48_t(uint64_t n) : a(uint16_t(n)), b(uint16_t(n >> 16)), c(uint16_t(n >> 32)) { }