Fix GCC 7 implicit fallthrough warnings
authorMika Väinölä <mika.vainola@siru.fi>
Tue, 20 Mar 2018 11:40:57 +0000 (13:40 +0200)
committerAlexander Galazin <alexander.galazin@arm.com>
Mon, 13 Apr 2020 16:05:52 +0000 (18:05 +0200)
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 884a93c6b9bc5dc8a7fea9392b37b8fd5ea04d7b)

19 files changed:
android/cts/master/vk-master.txt
executor/xeXMLParser.cpp
external/openglcts/modules/gl/gl4cMultiBindTests.cpp
external/openglcts/modules/gles31/es31cSeparateShaderObjsTests.cpp
external/openglcts/modules/glesext/esextcTestCaseBase.cpp
external/vulkancts/modules/vulkan/binding_model/vktBindingShaderAccessTests.cpp
external/vulkancts/modules/vulkan/shaderexecutor/vktShaderBuiltinPrecisionTests.cpp
external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderTextureGatherTests.cpp
external/vulkancts/modules/vulkan/sparse_resources/vktSparseResourcesShaderIntrinsics.cpp
external/vulkancts/modules/vulkan/ycbcr/vktYCbCrViewTests.cpp
external/vulkancts/mustpass/1.0.3/vk-default.txt
framework/common/tcuAstcUtil.cpp
framework/egl/egluGLUtil.cpp
framework/platform/lnx/X11/tcuLnxX11GlxPlatform.cpp
framework/referencerenderer/rrVertexAttrib.cpp
modules/gles3/functional/es3fFboRenderTest.cpp
modules/gles3/functional/es3fFboTestCase.cpp
modules/gles31/functional/es31fShaderFramebufferFetchTests.cpp
modules/glshared/glsBuiltinPrecisionTests.cpp

index 72a4523..1e7e630 100644 (file)
@@ -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
index dcff661..3c39ee8 100644 (file)
@@ -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)
index 2696883..24f38ed 100644 (file)
@@ -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);
@@ -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);
index 3fcc6a6..103baa2 100644 (file)
@@ -2052,14 +2052,19 @@ public:
                // 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";
                }
@@ -2109,14 +2114,19 @@ public:
                // 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";
                }
@@ -2881,6 +2891,7 @@ public:
                {
                case SET_DEFAULT_PRECISION:
                        vtxSrc << "precision " << precision << " float;\n";
+               // Fallthrough
                case DEFAULT_PRECISION:
                        vtxSrc << "out float var;\n";
                        break;
@@ -2905,6 +2916,7 @@ public:
                {
                case SET_DEFAULT_PRECISION:
                        fragSrc << "precision " << precision << " float;\n";
+               // Fallthrough
                case DEFAULT_PRECISION:
                        fragSrc << "in float var;\n";
                        break;
@@ -2951,6 +2963,7 @@ public:
                {
                case SET_DEFAULT_PRECISION:
                        vtxSrc << "precision " << precision << " int;\n";
+               // Fallthrough
                case DEFAULT_PRECISION:
                        vtxSrc << "flat out int var;\n";
                        break;
@@ -2975,6 +2988,7 @@ public:
                {
                case SET_DEFAULT_PRECISION:
                        fragSrc << "precision " << precision << " int;\n";
+               // Fallthrough
                case DEFAULT_PRECISION:
                        fragSrc << "flat in int var;\n";
                        break;
@@ -3021,6 +3035,7 @@ public:
                {
                case SET_DEFAULT_PRECISION:
                        vtxSrc << "precision " << precision << " int;\n";
+               // Fallthrough
                case DEFAULT_PRECISION:
                        vtxSrc << "flat out uint var;\n";
                        break;
@@ -3045,6 +3060,7 @@ public:
                {
                case SET_DEFAULT_PRECISION:
                        fragSrc << "precision " << precision << " int;\n";
+               // Fallthrough
                case DEFAULT_PRECISION:
                        fragSrc << "flat in uint var;\n";
                        break;
index 5a8c624..34465a4 100644 (file)
@@ -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:
        {
index 97285cf..8a09196 100644 (file)
@@ -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;
index 8b7c543..192c9dd 100644 (file)
@@ -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);
@@ -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;
                }
 
@@ -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);
index f4ccb04..7e4bd10 100644 (file)
@@ -1083,6 +1083,7 @@ IVec2 getOffsetRange (const OffsetSize offsetSize)
 
                case OFFSETSIZE_IMPLEMENTATION_MAXIMUM:
                        DE_FATAL("Not known");
+                       return IVec2(-1);
 
                default:
                        DE_ASSERT(false);
index a8535a6..a4c528e 100644 (file)
@@ -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:
index c857eeb..d3c825f 100644 (file)
@@ -75,6 +75,8 @@ 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:
@@ -82,6 +84,8 @@ VkFormat getPlaneCompatibleFormat (VkFormat multiPlanarFormat, deUint32 planeNdx
                                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:
@@ -114,6 +118,8 @@ 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:
@@ -121,11 +127,15 @@ VkFormat getPlaneCompatibleFormat (VkFormat multiPlanarFormat, deUint32 planeNdx
                                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,
index 9dcd3fb..96af73a 100644 (file)
@@ -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
index 03a2798..096b8b9 100644 (file)
@@ -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);
        }
@@ -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);
        }
index 9c0a308..1294728 100644 (file)
@@ -67,7 +67,7 @@ EGLint apiRenderableType (glu::ApiType apiType)
                                case 1:         return EGL_OPENGL_ES_BIT;
                                case 2:         return EGL_OPENGL_ES2_BIT;
                                case 3:         return EGL_OPENGL_ES3_BIT_KHR;
-                               default:        DE_FATAL("Unknown OpenGL ES version");
+                               default:        DE_FATAL("Unknown OpenGL ES version"); break;
                        }
                default:
                        DE_FATAL("Unknown GL API");
index 29a45e3..e1d3e61 100644 (file)
@@ -664,6 +664,7 @@ GlxDrawable* createDrawable (GlxVisual& visual, const RenderConfig& config)
        {
                case RenderConfig::SURFACETYPE_DONT_CARE:
                        DE_FATAL("Impossible case");
+                       break;
 
                case RenderConfig::SURFACETYPE_WINDOW:
                        return new GlxWindow(visual, config);
index 796cad0..f07592f 100644 (file)
@@ -314,6 +314,7 @@ void readFloat (tcu::Vec4& dst, const VertexAttribType type, const int size, con
                case VERTEXATTRIBTYPE_PURE_INT16:
                case VERTEXATTRIBTYPE_PURE_INT32:
                        DE_FATAL("Invalid read");
+                       break;
 
                default:
                        DE_ASSERT(false);
@@ -360,6 +361,7 @@ void readInt (tcu::IVec4& dst, const VertexAttribType type, const int size, cons
                case VERTEXATTRIBTYPE_NONPURE_SNORM_2_10_10_10_REV_CLAMP_BGRA:
                case VERTEXATTRIBTYPE_NONPURE_SNORM_2_10_10_10_REV_SCALE_BGRA:
                        DE_FATAL("Invalid read");
+                       break;
 
                default:
                        DE_ASSERT(false);
@@ -406,6 +408,7 @@ void readUint (tcu::UVec4& dst, const VertexAttribType type, const int size, con
                case VERTEXATTRIBTYPE_NONPURE_SNORM_2_10_10_10_REV_CLAMP_BGRA:
                case VERTEXATTRIBTYPE_NONPURE_SNORM_2_10_10_10_REV_SCALE_BGRA:
                        DE_FATAL("Invalid read");
+                       break;
 
                default:
                        DE_ASSERT(false);
index bf83b39..c1e1a34 100644 (file)
@@ -173,6 +173,7 @@ static std::vector<std::string> getEnablingExtensions (deUint32 format)
                case GL_RG16F:
                case GL_R16F:
                        out.push_back("GL_EXT_color_buffer_half_float");
+               // Fallthrough
 
                case GL_RGBA32F:
                case GL_RGB32F:
@@ -180,6 +181,7 @@ static std::vector<std::string> getEnablingExtensions (deUint32 format)
                case GL_RG32F:
                case GL_R32F:
                        out.push_back("GL_EXT_color_buffer_float");
+                       break;
 
                default:
                        break;
index 4276c63..c1880ea 100644 (file)
@@ -228,6 +228,7 @@ static std::vector<std::string> getEnablingExtensions (deUint32 format, glu::Ren
                case GL_RG16F:
                case GL_R16F:
                        out.push_back("GL_EXT_color_buffer_half_float");
+               // Fallthrough
 
                case GL_RGBA32F:
                case GL_RGB32F:
@@ -236,6 +237,7 @@ static std::vector<std::string> getEnablingExtensions (deUint32 format, glu::Ren
                case GL_R32F:
                        if (!isES32)
                                out.push_back("GL_EXT_color_buffer_float");
+                       break;
 
                default:
                        break;
index c9b0c69..c8a0d86 100644 (file)
@@ -217,6 +217,7 @@ static std::vector<std::string> getEnablingExtensions (deUint32 format, glu::Ren
                case GL_RG16F:
                case GL_R16F:
                        out.push_back("GL_EXT_color_buffer_half_float");
+               // Fallthrough
 
                case GL_RGBA32F:
                case GL_RGB32F:
index afe990b..cb5d192 100644 (file)
@@ -4508,11 +4508,20 @@ void PrecisionCase::testStatement (const Variables<In, Out>&    variables,
 
        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;
        }
 
        // Print out the statement and its definitions
@@ -4547,18 +4556,27 @@ void PrecisionCase::testStatement (const Variables<In, Out>&    variables,
 
        switch (inCount)
        {
-               case 4: spec.inputs[3] = makeSymbol(*variables.in3);
-               case 3: spec.inputs[2] = makeSymbol(*variables.in2);
-               case 2: spec.inputs[1] = makeSymbol(*variables.in1);
-               case 1: spec.inputs[0] = makeSymbol(*variables.in0);
-               default: break;
+               case 4:
+                       spec.inputs[3] = makeSymbol(*variables.in3);
+               // Fallthrough
+               case 3:
+                       spec.inputs[2] = makeSymbol(*variables.in2);
+               // Fallthrough
+               case 2:
+                       spec.inputs[1] = makeSymbol(*variables.in1);
+               // Fallthrough
+               case 1:
+                       spec.inputs[0] = makeSymbol(*variables.in0);
+               // Fallthrough
+               default:
+                       break;
        }
 
        spec.outputs.resize(outCount);
 
        switch (outCount)
        {
-               case 2: spec.outputs[1] = makeSymbol(*variables.out1);
+               case 2: spec.outputs[1] = makeSymbol(*variables.out1);  // Fallthrough
                case 1: spec.outputs[0] = makeSymbol(*variables.out0);
                default: break;
        }
@@ -4632,6 +4650,7 @@ void PrecisionCase::testStatement (const Variables<In, Out>&      variables,
                                if (!m_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(*variables.out0));
                                if (!m_status.check(contains(reference0, outputs.out0[valueNdx]),