diff --git a/src/Magnum/Shaders/Test/DistanceFieldVectorTest.cpp b/src/Magnum/Shaders/Test/DistanceFieldVectorTest.cpp index bdb22c184..5ec7a4c8f 100644 --- a/src/Magnum/Shaders/Test/DistanceFieldVectorTest.cpp +++ b/src/Magnum/Shaders/Test/DistanceFieldVectorTest.cpp @@ -105,7 +105,12 @@ void DistanceFieldVectorTest::drawUniformConstructNoInit() { a.materialId = 76; new(&a) DistanceFieldVectorDrawUniform{NoInit}; - CORRADE_COMPARE(a.materialId, 76); + { + #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(a.materialId, 76); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -168,8 +173,13 @@ void DistanceFieldVectorTest::materialUniformConstructNoInit() { a.outlineEnd = 0.37f; new(&a) DistanceFieldVectorMaterialUniform{NoInit}; - CORRADE_COMPARE(a.color, 0x354565fc_rgbaf); - CORRADE_COMPARE(a.outlineEnd, 0.37f); + { + #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(a.color, 0x354565fc_rgbaf); + CORRADE_COMPARE(a.outlineEnd, 0.37f); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Shaders/Test/FlatTest.cpp b/src/Magnum/Shaders/Test/FlatTest.cpp index 8365429ca..1a5a86df3 100644 --- a/src/Magnum/Shaders/Test/FlatTest.cpp +++ b/src/Magnum/Shaders/Test/FlatTest.cpp @@ -100,8 +100,13 @@ void FlatTest::drawUniformConstructNoInit() { a.alphaMask = 0.7f; new(&a) FlatDrawUniform{NoInit}; - CORRADE_COMPARE(a.color, 0x354565fc_rgbaf); - CORRADE_COMPARE(a.alphaMask, 0.7f); + { + #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(a.color, 0x354565fc_rgbaf); + CORRADE_COMPARE(a.alphaMask, 0.7f); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Shaders/Test/GenericTest.cpp b/src/Magnum/Shaders/Test/GenericTest.cpp index 744cfaae1..f6a03fcea 100644 --- a/src/Magnum/Shaders/Test/GenericTest.cpp +++ b/src/Magnum/Shaders/Test/GenericTest.cpp @@ -154,7 +154,12 @@ void GenericTest::projectionUniform2DConstructNoInit() { a.projectionMatrix[2] = {1.5f, 0.3f, 3.1f, 0.5f}; new(&a) ProjectionUniform2D{NoInit}; - CORRADE_COMPARE(a.projectionMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f})); + { + #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(a.projectionMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f})); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -215,7 +220,12 @@ void GenericTest::projectionUniform3DConstructNoInit() { a.projectionMatrix[2] = {1.5f, 0.3f, 3.1f, 0.5f}; new(&a) ProjectionUniform3D{NoInit}; - CORRADE_COMPARE(a.projectionMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f})); + { + #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(a.projectionMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f})); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -268,7 +278,12 @@ void GenericTest::transformationUniform2DConstructNoInit() { a.transformationMatrix[2] = {1.5f, 0.3f, 3.1f, 0.5f}; new(&a) TransformationUniform2D{NoInit}; - CORRADE_COMPARE(a.transformationMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f})); + { + #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(a.transformationMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f})); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -329,7 +344,12 @@ void GenericTest::transformationUniform3DConstructNoInit() { a.transformationMatrix[2] = {1.5f, 0.3f, 3.1f, 0.5f}; new(&a) TransformationUniform3D{NoInit}; - CORRADE_COMPARE(a.transformationMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f})); + { + #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(a.transformationMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f})); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -383,8 +403,13 @@ void GenericTest::textureTransformationUniformConstructNoInit() { a.offset = {2.7f, 0.3f}; new(&a) TextureTransformationUniform{NoInit}; - CORRADE_COMPARE(a.rotationScaling[1], (Vector2{2.5f, -3.0f})); - CORRADE_COMPARE(a.offset, (Vector2{2.7f, 0.3f})); + { + #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(a.rotationScaling[1], (Vector2{2.5f, -3.0f})); + CORRADE_COMPARE(a.offset, (Vector2{2.7f, 0.3f})); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Shaders/Test/MeshVisualizerTest.cpp b/src/Magnum/Shaders/Test/MeshVisualizerTest.cpp index e9bad7799..e6abe8c6a 100644 --- a/src/Magnum/Shaders/Test/MeshVisualizerTest.cpp +++ b/src/Magnum/Shaders/Test/MeshVisualizerTest.cpp @@ -120,7 +120,12 @@ void MeshVisualizerTest::drawUniform2DConstructNoInit() { a.materialId = 73; new(&a) MeshVisualizerDrawUniform2D{NoInit}; - CORRADE_COMPARE(a.materialId, 73); + { + #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(a.materialId, 73); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -187,8 +192,13 @@ void MeshVisualizerTest::drawUniform3DConstructNoInit() { a.materialId = 5; new(&a) MeshVisualizerDrawUniform3D{NoInit}; - CORRADE_COMPARE(a.normalMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f})); - CORRADE_COMPARE(a.materialId, 5); + { + #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(a.normalMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f})); + CORRADE_COMPARE(a.materialId, 5); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -269,8 +279,13 @@ void MeshVisualizerTest::materialUniformConstructNoInit() { a.lineWidth = 0.765f; new(&a) MeshVisualizerMaterialUniform{NoInit}; - CORRADE_COMPARE(a.color, 0x354565fc_rgbaf); - CORRADE_COMPARE(a.lineWidth, 0.765f); + { + #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(a.color, 0x354565fc_rgbaf); + CORRADE_COMPARE(a.lineWidth, 0.765f); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Shaders/Test/PhongTest.cpp b/src/Magnum/Shaders/Test/PhongTest.cpp index 7276b6440..e29330d3b 100644 --- a/src/Magnum/Shaders/Test/PhongTest.cpp +++ b/src/Magnum/Shaders/Test/PhongTest.cpp @@ -152,9 +152,14 @@ void PhongTest::drawUniformConstructNoInit() { a.lightCount = 7; new(&a) PhongDrawUniform{NoInit}; - CORRADE_COMPARE(a.normalMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f})); - CORRADE_COMPARE(a.materialId, 5); - CORRADE_COMPARE(a.lightCount, 7); + { + #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(a.normalMatrix[2], (Vector4{1.5f, 0.3f, 3.1f, 0.5f})); + CORRADE_COMPARE(a.materialId, 5); + CORRADE_COMPARE(a.lightCount, 7); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -233,9 +238,14 @@ void PhongTest::materialUniformConstructNoInit() { a.alphaMask = 7.0f; new(&a) PhongMaterialUniform{NoInit}; - CORRADE_COMPARE(a.diffuseColor, 0x354565fc_rgbaf); - CORRADE_COMPARE(a.normalTextureScale, 0.4f); - CORRADE_COMPARE(a.alphaMask, 7.0f); + { + #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(a.diffuseColor, 0x354565fc_rgbaf); + CORRADE_COMPARE(a.normalTextureScale, 0.4f); + CORRADE_COMPARE(a.alphaMask, 7.0f); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -296,8 +306,13 @@ void PhongTest::lightUniformConstructNoInit() { a.range = 7.0f; new(&a) PhongLightUniform{NoInit}; - CORRADE_COMPARE(a.color, 0x354565_rgbf); - CORRADE_COMPARE(a.range, 7.0f); + { + #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(a.color, 0x354565_rgbf); + CORRADE_COMPARE(a.range, 7.0f); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Shaders/Test/VectorTest.cpp b/src/Magnum/Shaders/Test/VectorTest.cpp index ce3be11bf..b3e49cd2b 100644 --- a/src/Magnum/Shaders/Test/VectorTest.cpp +++ b/src/Magnum/Shaders/Test/VectorTest.cpp @@ -96,8 +96,13 @@ void VectorTest::drawUniformConstructNoInit() { a.backgroundColor = 0x98769facb_rgbaf; new(&a) VectorDrawUniform{NoInit}; - CORRADE_COMPARE(a.color, 0x354565fc_rgbaf); - CORRADE_COMPARE(a.backgroundColor, 0x98769facb_rgbaf); + { + #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 601 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 6.1+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(a.color, 0x354565fc_rgbaf); + CORRADE_COMPARE(a.backgroundColor, 0x98769facb_rgbaf); + } CORRADE_VERIFY(std::is_nothrow_constructible::value);