Fix warning in gcc-8
authorGraeme Leese <gleese@broadcom.com>
Fri, 23 Jul 2021 18:00:11 +0000 (19:00 +0100)
committerPiers Daniell <pdaniell@nvidia.com>
Fri, 20 May 2022 16:40:37 +0000 (16:40 +0000)
The code for setting up the output buffer was duplicated into each of
the cases for different input types, and the compiler doesn't understand
that DE_ASSERT marks an unreachable path. Changing to using standard
assert fixes the warning:

vktShaderFConvertTests.cpp:541:19: error: â€˜outputBufferSizeInfo::memorySizeBytes’
may be used uninitialized in this function [-Werror=maybe-uninitialized]
   541 |  BufferSizeInfo   outputBufferSizeInfo;
       |                   ^~~~~~~~~~~~~~~~~~~~

Component: Vulkan
Affects: dEQP-VK.glsl.builtin.precision_fconvert.*

Change-Id: Icf6302166d8bce7c3ae1447973c895c34465a726

external/vulkancts/modules/vulkan/shaderexecutor/vktShaderFConvertTests.cpp

index f577c66..148bb17 100644 (file)
@@ -46,6 +46,7 @@
 #include <iomanip>
 #include <string>
 #include <limits>
+#include <cassert>
 
 namespace vkt
 {
@@ -541,71 +542,40 @@ tcu::TestStatus FConvertTestInstance::iterate (void)
        BufferSizeInfo                  outputBufferSizeInfo;
        std::vector<deUint8>    inputMemory;
 
-       // Calculate buffer sizes and convert input values to a packed input memory format, depending on the input and output types.
-       switch (m_params.from)
+       assert(m_params.from == FLOAT_TYPE_16_BITS || m_params.from == FLOAT_TYPE_32_BITS || m_params.from == FLOAT_TYPE_64_BITS);
+
+       if (m_params.from == FLOAT_TYPE_16_BITS)
+       {
+               auto& inputValues = InputGenerator::getInstance().getInputValues16();
+               inputBufferSizeInfo = BufferSizeInfo::calculate<tcu::Float16>(inputValues.size(), m_params.vectorLength);
+               inputMemory = packFloats(inputValues, m_params.vectorLength);
+       }
+       else if (m_params.from == FLOAT_TYPE_32_BITS)
+       {
+               auto& inputValues = InputGenerator::getInstance().getInputValues32();
+               inputBufferSizeInfo = BufferSizeInfo::calculate<tcu::Float32>(inputValues.size(), m_params.vectorLength);
+               inputMemory = packFloats(inputValues, m_params.vectorLength);
+       }
+       else
+       {
+               auto& inputValues = InputGenerator::getInstance().getInputValues64();
+               inputBufferSizeInfo = BufferSizeInfo::calculate<tcu::Float64>(inputValues.size(), m_params.vectorLength);
+               inputMemory = packFloats(inputValues, m_params.vectorLength);
+       }
+
+       switch (m_params.to)
        {
        case FLOAT_TYPE_16_BITS:
-               {
-                       auto& inputValues = InputGenerator::getInstance().getInputValues16();
-                       inputBufferSizeInfo = BufferSizeInfo::calculate<tcu::Float16>(inputValues.size(), m_params.vectorLength);
-                       switch (m_params.to)
-                       {
-                       case FLOAT_TYPE_32_BITS:
-                               outputBufferSizeInfo = BufferSizeInfo::calculate<tcu::Float32>(inputValues.size(), m_params.vectorLength);
-                               break;
-                       case FLOAT_TYPE_64_BITS:
-                               outputBufferSizeInfo = BufferSizeInfo::calculate<tcu::Float64>(inputValues.size(), m_params.vectorLength);
-                               break;
-                       default:
-                               DE_ASSERT(false);
-                               break;
-                       }
-                       inputMemory = packFloats(inputValues, m_params.vectorLength);
-               }
+               outputBufferSizeInfo = BufferSizeInfo::calculate<tcu::Float16>(inputBufferSizeInfo.numValues, m_params.vectorLength);
                break;
-
        case FLOAT_TYPE_32_BITS:
-               {
-                       auto& inputValues = InputGenerator::getInstance().getInputValues32();
-                       inputBufferSizeInfo = BufferSizeInfo::calculate<tcu::Float32>(inputValues.size(), m_params.vectorLength);
-                       switch (m_params.to)
-                       {
-                       case FLOAT_TYPE_16_BITS:
-                               outputBufferSizeInfo = BufferSizeInfo::calculate<tcu::Float16>(inputValues.size(), m_params.vectorLength);
-                               break;
-                       case FLOAT_TYPE_64_BITS:
-                               outputBufferSizeInfo = BufferSizeInfo::calculate<tcu::Float64>(inputValues.size(), m_params.vectorLength);
-                               break;
-                       default:
-                               DE_ASSERT(false);
-                               break;
-                       }
-                       inputMemory = packFloats(inputValues, m_params.vectorLength);
-               }
+               outputBufferSizeInfo = BufferSizeInfo::calculate<tcu::Float32>(inputBufferSizeInfo.numValues, m_params.vectorLength);
                break;
-
        case FLOAT_TYPE_64_BITS:
-               {
-                       auto& inputValues = InputGenerator::getInstance().getInputValues64();
-                       inputBufferSizeInfo = BufferSizeInfo::calculate<tcu::Float64>(inputValues.size(), m_params.vectorLength);
-                       switch (m_params.to)
-                       {
-                       case FLOAT_TYPE_16_BITS:
-                               outputBufferSizeInfo = BufferSizeInfo::calculate<tcu::Float16>(inputValues.size(), m_params.vectorLength);
-                               break;
-                       case FLOAT_TYPE_32_BITS:
-                               outputBufferSizeInfo = BufferSizeInfo::calculate<tcu::Float32>(inputValues.size(), m_params.vectorLength);
-                               break;
-                       default:
-                               DE_ASSERT(false);
-                               break;
-                       }
-                       inputMemory = packFloats(inputValues, m_params.vectorLength);
-               }
+               outputBufferSizeInfo = BufferSizeInfo::calculate<tcu::Float64>(inputBufferSizeInfo.numValues, m_params.vectorLength);
                break;
-
        default:
-               DE_ASSERT(false);
+               assert(false);
                break;
        }