Skip to content

Commit

Permalink
Fix GCC 7 implicit fallthrough warnings
Browse files Browse the repository at this point in the history
GCC 7 with -Wextra or -Wimplicit-fallthrough enabled warns when
a switch case falls through. For cases where this is intentional
the warning can be suppressed with a comment. Breaks and returns
were also added for cases which end in DE_FATAL.

Removing a fallthrough in vktSparseResourcesShaderIntrinsics.cpp
resulted in new test cases.

Affects: *

New tests:
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.*

Components: Framework, Vulkan, OpenGL

VK-GL-CTS issue: 1067

Change-Id: I0306f96cf3a50e85144b4dd22a9a88cd908607d3
(cherry picked from commit 884a93c)
  • Loading branch information
mvainola authored and alegal-arm committed Apr 13, 2020
1 parent 5ee7892 commit c367c00
Show file tree
Hide file tree
Showing 19 changed files with 185 additions and 41 deletions.
24 changes: 24 additions & 0 deletions android/cts/master/vk-master.txt
Original file line number Diff line number Diff line change
Expand Up @@ -237776,6 +237776,30 @@ dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.512_256
dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.128_128_8
dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.503_137_3
dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.11_37_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.256_256_16
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.128_128_8
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.503_137_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.11_37_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.256_256_16
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.128_128_8
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.503_137_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.11_37_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.256_256_16
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.128_128_8
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.503_137_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.11_37_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.256_256_16
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.128_128_8
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.503_137_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.11_37_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.256_256_16
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.128_128_8
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.503_137_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.11_37_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.256_256_16
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.128_128_8
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.503_137_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.11_37_3
dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r32i.512_256_1
dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r32i.128_128_1
dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r32i.503_137_1
Expand Down
2 changes: 1 addition & 1 deletion executor/xeXMLParser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -419,7 +419,7 @@ void Parser::advance (void)
{
case STATE_ENTITY:
m_state = STATE_DATA;
// Fall-through to STATE_DATA processing.
// Fall-through

case STATE_DATA:
switch (curToken)
Expand Down
4 changes: 2 additions & 2 deletions external/openglcts/modules/gl/gl4cMultiBindTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3766,7 +3766,7 @@ tcu::TestNode::IterateResult DispatchBindTexturesTest::iterate()
{
case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:
is_array = true;
/* Intended pass-through */
/* Intentional fallthrough */

case GL_TEXTURE_2D_MULTISAMPLE:
texture[i].InitStorage(m_context, target, 1, GL_R32UI, width, height, depth);
Expand Down Expand Up @@ -4017,7 +4017,7 @@ tcu::TestNode::IterateResult DispatchBindImageTexturesTest::iterate()
{
case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:
is_array = true;
/* Intended pass-through */
/* Intentional fallthrough */

case GL_TEXTURE_2D_MULTISAMPLE:
texture[i].InitStorage(m_context, target, 1, GL_R32UI, width, height, depth);
Expand Down
16 changes: 16 additions & 0 deletions external/openglcts/modules/gles31/es31cSeparateShaderObjsTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2052,14 +2052,19 @@ class StateInteractionCase : public TestCase
// Note all these cases fall through
case 5:
vtxSrc << "layout(location = 3) out vec4 o_val5;\n";
// Fallthrough
case 4:
vtxSrc << "flat out uvec4 val4;\n";
// Fallthrough
case 3:
vtxSrc << "flat out ivec2 val3;\n";
// Fallthrough
case 2:
vtxSrc << "out vec3 val2[2];\n";
// Fallthrough
case 1:
vtxSrc << "out vec4 val1;\n";
// Fallthrough
default:
vtxSrc << "out float val0;\n";
}
Expand Down Expand Up @@ -2109,14 +2114,19 @@ class StateInteractionCase : public TestCase
// Note all these cases fall through
case 5:
fragSrc << "layout(location = 3) in vec4 i_val5;\n";
// Fallthrough
case 4:
fragSrc << "flat in uvec4 val4;\n";
// Fallthrough
case 3:
fragSrc << "flat in ivec2 val3;\n";
// Fallthrough
case 2:
fragSrc << "in vec3 val2[2];\n";
// Fallthrough
case 1:
fragSrc << "in vec4 val1;\n";
// Fallthrough
default:
fragSrc << "in float val0;\n";
}
Expand Down Expand Up @@ -2881,6 +2891,7 @@ class InterfaceMatchingCaseFloat : public InterfaceMatchingCase
{
case SET_DEFAULT_PRECISION:
vtxSrc << "precision " << precision << " float;\n";
// Fallthrough
case DEFAULT_PRECISION:
vtxSrc << "out float var;\n";
break;
Expand All @@ -2905,6 +2916,7 @@ class InterfaceMatchingCaseFloat : public InterfaceMatchingCase
{
case SET_DEFAULT_PRECISION:
fragSrc << "precision " << precision << " float;\n";
// Fallthrough
case DEFAULT_PRECISION:
fragSrc << "in float var;\n";
break;
Expand Down Expand Up @@ -2951,6 +2963,7 @@ class InterfaceMatchingCaseInt : public InterfaceMatchingCase
{
case SET_DEFAULT_PRECISION:
vtxSrc << "precision " << precision << " int;\n";
// Fallthrough
case DEFAULT_PRECISION:
vtxSrc << "flat out int var;\n";
break;
Expand All @@ -2975,6 +2988,7 @@ class InterfaceMatchingCaseInt : public InterfaceMatchingCase
{
case SET_DEFAULT_PRECISION:
fragSrc << "precision " << precision << " int;\n";
// Fallthrough
case DEFAULT_PRECISION:
fragSrc << "flat in int var;\n";
break;
Expand Down Expand Up @@ -3021,6 +3035,7 @@ class InterfaceMatchingCaseUInt : public InterfaceMatchingCase
{
case SET_DEFAULT_PRECISION:
vtxSrc << "precision " << precision << " int;\n";
// Fallthrough
case DEFAULT_PRECISION:
vtxSrc << "flat out uint var;\n";
break;
Expand All @@ -3045,6 +3060,7 @@ class InterfaceMatchingCaseUInt : public InterfaceMatchingCase
{
case SET_DEFAULT_PRECISION:
fragSrc << "precision " << precision << " int;\n";
// Fallthrough
case DEFAULT_PRECISION:
fragSrc << "flat in uint var;\n";
break;
Expand Down
3 changes: 3 additions & 0 deletions external/openglcts/modules/glesext/esextcTestCaseBase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -722,16 +722,19 @@ bool TestCaseBase::comparePixel(const unsigned char* buffer, unsigned int x, uns
{
result &= (expected_alpha == buffer[texel_offset + 3]);
}
/* Fallthrough */

case 3:
{
result &= (expected_blue == buffer[texel_offset + 2]);
}
/* Fallthrough */

case 2:
{
result &= (expected_green == buffer[texel_offset + 1]);
}
/* Fallthrough */

case 1:
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -176,9 +176,9 @@ void verifyDriverSupport(const vk::VkPhysicalDeviceFeatures& deviceFeatures,
extensionNames.push_back("VK_KHR_push_descriptor");
break;

// fall through
case DESCRIPTOR_UPDATE_METHOD_WITH_PUSH_TEMPLATE:
extensionNames.push_back("VK_KHR_push_descriptor");
// Fallthrough
case DESCRIPTOR_UPDATE_METHOD_WITH_TEMPLATE:
extensionNames.push_back("VK_KHR_descriptor_update_template");
break;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4455,11 +4455,20 @@ tcu::TestStatus BuiltinPrecisionCaseTestInstance<In, Out>::iterate (void)

switch (inCount)
{
case 4: DE_ASSERT(inputs.in3.size() == numValues);
case 3: DE_ASSERT(inputs.in2.size() == numValues);
case 2: DE_ASSERT(inputs.in1.size() == numValues);
case 1: DE_ASSERT(inputs.in0.size() == numValues);
default: break;
case 4:
DE_ASSERT(inputs.in3.size() == numValues);
// Fallthrough
case 3:
DE_ASSERT(inputs.in2.size() == numValues);
// Fallthrough
case 2:
DE_ASSERT(inputs.in1.size() == numValues);
// Fallthrough
case 1:
DE_ASSERT(inputs.in0.size() == numValues);
// Fallthrough
default:
break;
}

m_executor->execute(int(numValues), inputArr, outputArr);
Expand Down Expand Up @@ -4506,11 +4515,13 @@ tcu::TestStatus BuiltinPrecisionCaseTestInstance<In, Out>::iterate (void)
if (!status.check(contains(reference1, outputs.out1[valueNdx]),
"Shader output 1 is outside acceptable range"))
result = false;
// Fallthrough
case 1:
reference0 = convert<Out0>(highpFmt, env.lookup(*m_variables.out0));
if (!status.check(contains(reference0, outputs.out0[valueNdx]),
"Shader output 0 is outside acceptable range"))
result = false;
// Fallthrough
default: break;
}

Expand Down Expand Up @@ -4643,20 +4654,34 @@ void PrecisionCase::testStatement (const Variables<In, Out>& variables, const St

switch (inCount)
{
case 4: m_spec.inputs[3] = makeSymbol(*variables.in3);
case 3: m_spec.inputs[2] = makeSymbol(*variables.in2);
case 2: m_spec.inputs[1] = makeSymbol(*variables.in1);
case 1: m_spec.inputs[0] = makeSymbol(*variables.in0);
default: break;
case 4:
m_spec.inputs[3] = makeSymbol(*variables.in3);
// Fallthrough
case 3:
m_spec.inputs[2] = makeSymbol(*variables.in2);
// Fallthrough
case 2:
m_spec.inputs[1] = makeSymbol(*variables.in1);
// Fallthrough
case 1:
m_spec.inputs[0] = makeSymbol(*variables.in0);
// Fallthrough
default:
break;
}

m_spec.outputs.resize(outCount);

switch (outCount)
{
case 2: m_spec.outputs[1] = makeSymbol(*variables.out1);
case 1: m_spec.outputs[0] = makeSymbol(*variables.out0);
default: break;
case 2:
m_spec.outputs[1] = makeSymbol(*variables.out1);
// Fallthrough
case 1:
m_spec.outputs[0] = makeSymbol(*variables.out0);
// Fallthrough
default:
break;
}

m_spec.source = de::toString(stmt);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1083,6 +1083,7 @@ IVec2 getOffsetRange (const OffsetSize offsetSize)

case OFFSETSIZE_IMPLEMENTATION_MAXIMUM:
DE_FATAL("Not known");
return IVec2(-1);

default:
DE_ASSERT(false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ tcu::TestCaseGroup* createSparseResourcesShaderIntrinsicsTests (tcu::TestContext
{
case SPARSE_FETCH:
if ((imageType == IMAGE_TYPE_CUBE) || (imageType == IMAGE_TYPE_CUBE_ARRAY)) continue;
break;
case SPARSE_SAMPLE_EXPLICIT_LOD:
case SPARSE_SAMPLE_IMPLICIT_LOD:
case SPARSE_GATHER:
Expand Down
14 changes: 12 additions & 2 deletions external/vulkancts/modules/vulkan/ycbcr/vktYCbCrViewTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,17 @@ VkFormat getPlaneCompatibleFormat (VkFormat multiPlanarFormat, deUint32 planeNdx
case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR:
if (de::inRange(planeNdx, 0u, 2u))
return VK_FORMAT_R8_UNORM;
else
break;

case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR:
case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR:
if (planeNdx == 0)
return VK_FORMAT_R8_UNORM;
else if (planeNdx == 1)
return VK_FORMAT_R8G8_UNORM;
else
break;

case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR:
case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR:
Expand Down Expand Up @@ -114,18 +118,24 @@ VkFormat getPlaneCompatibleFormat (VkFormat multiPlanarFormat, deUint32 planeNdx
case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR:
if (de::inRange(planeNdx, 0u, 2u))
return VK_FORMAT_R16_UNORM;
else
break;

case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR:
case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR:
if (planeNdx == 0)
return VK_FORMAT_R16_UNORM;
else if (planeNdx == 1)
return VK_FORMAT_R16G16_UNORM;
else
break;

default:
DE_FATAL("Invalid format and plane index combination");
return VK_FORMAT_UNDEFINED;
break;
}

DE_FATAL("Invalid format and plane index combination");
return VK_FORMAT_UNDEFINED;
}

Move<VkImage> createTestImage (const DeviceInterface& vkd,
Expand Down
24 changes: 24 additions & 0 deletions external/vulkancts/mustpass/1.0.3/vk-default.txt
Original file line number Diff line number Diff line change
Expand Up @@ -238046,6 +238046,30 @@ dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.512_256
dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.128_128_8
dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.503_137_3
dEQP-VK.sparse_resources.shader_intrinsics.2d_array_sparse_fetch.rgba8ui.11_37_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.256_256_16
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.128_128_8
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.503_137_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r32i.11_37_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.256_256_16
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.128_128_8
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.503_137_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r16i.11_37_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.256_256_16
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.128_128_8
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.503_137_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.r8i.11_37_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.256_256_16
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.128_128_8
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.503_137_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba32ui.11_37_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.256_256_16
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.128_128_8
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.503_137_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba16ui.11_37_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.256_256_16
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.128_128_8
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.503_137_3
dEQP-VK.sparse_resources.shader_intrinsics.3d_sparse_fetch.rgba8ui.11_37_3
dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r32i.512_256_1
dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r32i.128_128_1
dEQP-VK.sparse_resources.shader_intrinsics.2d_sparse_read.r32i.503_137_1
Expand Down
32 changes: 22 additions & 10 deletions framework/common/tcuAstcUtil.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -595,12 +595,20 @@ void decodeISETritBlock (ISEDecodedResult* dst, int numValues, BitAccessStream&

switch (numValues)
{
// \note Fall-throughs.
case 1: T23 = 0;
case 2: T4 = 0;
case 3: T56 = 0;
case 4: T7 = 0;
case 5: break;
case 1:
T23 = 0;
// Fallthrough
case 2:
T4 = 0;
// Fallthrough
case 3:
T56 = 0;
// Fallthrough
case 4:
T7 = 0;
// Fallthrough
case 5:
break;
default:
DE_ASSERT(false);
}
Expand Down Expand Up @@ -652,10 +660,14 @@ void decodeISEQuintBlock (ISEDecodedResult* dst, int numValues, BitAccessStream&

switch (numValues)
{
// \note Fall-throughs.
case 1: Q34 = 0;
case 2: Q56 = 0;
case 3: break;
case 1:
Q34 = 0;
// Fallthrough
case 2:
Q56 = 0;
// Fallthrough
case 3:
break;
default:
DE_ASSERT(false);
}
Expand Down
Loading

0 comments on commit c367c00

Please sign in to comment.