diff --git a/src/Magnum/Vk/Test/BufferTest.cpp b/src/Magnum/Vk/Test/BufferTest.cpp index 4eb76267d..950b683d1 100644 --- a/src/Magnum/Vk/Test/BufferTest.cpp +++ b/src/Magnum/Vk/Test/BufferTest.cpp @@ -118,7 +118,15 @@ void BufferTest::createInfoConstructNoInit() { BufferCreateInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) BufferCreateInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -172,7 +180,15 @@ void BufferTest::bufferCopyConstructNoInit() { BufferCopy copy{NoInit}; copy->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(©) BufferCopy{NoInit}; - CORRADE_COMPARE(copy->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(copy->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -238,7 +254,15 @@ void BufferTest::copyBufferInfoConstructNoInit() { CopyBufferInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) CopyBufferInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Vk/Test/CommandBufferTest.cpp b/src/Magnum/Vk/Test/CommandBufferTest.cpp index 6ae77e627..90fb9225e 100644 --- a/src/Magnum/Vk/Test/CommandBufferTest.cpp +++ b/src/Magnum/Vk/Test/CommandBufferTest.cpp @@ -60,7 +60,15 @@ void CommandBufferTest::beginInfoConstructNoInit() { CommandBufferBeginInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) CommandBufferBeginInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Vk/Test/CommandPoolTest.cpp b/src/Magnum/Vk/Test/CommandPoolTest.cpp index c7c67ecff..49a97e70f 100644 --- a/src/Magnum/Vk/Test/CommandPoolTest.cpp +++ b/src/Magnum/Vk/Test/CommandPoolTest.cpp @@ -61,7 +61,15 @@ void CommandPoolTest::createInfoConstructNoInit() { CommandPoolCreateInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) CommandPoolCreateInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Vk/Test/DescriptorPoolTest.cpp b/src/Magnum/Vk/Test/DescriptorPoolTest.cpp index ebc4f9317..1c5deb8f1 100644 --- a/src/Magnum/Vk/Test/DescriptorPoolTest.cpp +++ b/src/Magnum/Vk/Test/DescriptorPoolTest.cpp @@ -112,7 +112,15 @@ void DescriptorPoolTest::createInfoConstructNoInit() { DescriptorPoolCreateInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) DescriptorPoolCreateInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Vk/Test/DescriptorSetLayoutTest.cpp b/src/Magnum/Vk/Test/DescriptorSetLayoutTest.cpp index c4f45e17f..627f21267 100644 --- a/src/Magnum/Vk/Test/DescriptorSetLayoutTest.cpp +++ b/src/Magnum/Vk/Test/DescriptorSetLayoutTest.cpp @@ -130,7 +130,15 @@ void DescriptorSetLayoutTest::bindingConstructNoInit() { DescriptorSetLayoutBinding info{NoInit}; info->pImmutableSamplers = &a; new(&info) DescriptorSetLayoutBinding{NoInit}; - CORRADE_COMPARE(info->pImmutableSamplers, &a); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->pImmutableSamplers, &a); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -257,7 +265,15 @@ void DescriptorSetLayoutTest::createInfoConstructNoInit() { DescriptorSetLayoutCreateInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) DescriptorSetLayoutCreateInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Vk/Test/DeviceTest.cpp b/src/Magnum/Vk/Test/DeviceTest.cpp index d1d884209..9893c0966 100644 --- a/src/Magnum/Vk/Test/DeviceTest.cpp +++ b/src/Magnum/Vk/Test/DeviceTest.cpp @@ -55,7 +55,15 @@ void DeviceTest::createInfoConstructNoInit() { DeviceCreateInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) DeviceCreateInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Vk/Test/FenceTest.cpp b/src/Magnum/Vk/Test/FenceTest.cpp index 6d9a81263..7afb5204d 100644 --- a/src/Magnum/Vk/Test/FenceTest.cpp +++ b/src/Magnum/Vk/Test/FenceTest.cpp @@ -60,7 +60,15 @@ void FenceTest::createInfoConstructNoInit() { FenceCreateInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) FenceCreateInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Vk/Test/FramebufferTest.cpp b/src/Magnum/Vk/Test/FramebufferTest.cpp index b910129b9..c277a28fe 100644 --- a/src/Magnum/Vk/Test/FramebufferTest.cpp +++ b/src/Magnum/Vk/Test/FramebufferTest.cpp @@ -111,7 +111,15 @@ void FramebufferTest::createInfoConstructNoInit() { FramebufferCreateInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) FramebufferCreateInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Vk/Test/ImageTest.cpp b/src/Magnum/Vk/Test/ImageTest.cpp index c85554d91..33db0d589 100644 --- a/src/Magnum/Vk/Test/ImageTest.cpp +++ b/src/Magnum/Vk/Test/ImageTest.cpp @@ -325,7 +325,15 @@ void ImageTest::createInfoConstructNoInit() { ImageCreateInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) ImageCreateInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -408,7 +416,15 @@ void ImageTest::imageCopyConstructNoInit() { ImageCopy copy{NoInit}; copy->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(©) ImageCopy{NoInit}; - CORRADE_COMPARE(copy->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(copy->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -504,7 +520,15 @@ void ImageTest::copyImageInfoConstructNoInit() { CopyImageInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) CopyImageInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -650,7 +674,15 @@ void ImageTest::bufferImageCopyConstructNoInit() { BufferImageCopy copy{NoInit}; copy->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(©) BufferImageCopy{NoInit}; - CORRADE_COMPARE(copy->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(copy->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -738,7 +770,15 @@ void ImageTest::copyBufferToImageInfoConstructNoInit() { CopyBufferToImageInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) CopyBufferToImageInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -793,7 +833,15 @@ void ImageTest::copyImageToBufferInfoConstructNoInit() { CopyImageToBufferInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) CopyImageToBufferInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Vk/Test/ImageViewTest.cpp b/src/Magnum/Vk/Test/ImageViewTest.cpp index 58f042c9c..82d68cd71 100644 --- a/src/Magnum/Vk/Test/ImageViewTest.cpp +++ b/src/Magnum/Vk/Test/ImageViewTest.cpp @@ -403,7 +403,15 @@ void ImageViewTest::createInfoConstructNoInit() { ImageViewCreateInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) ImageViewCreateInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Vk/Test/InstanceTest.cpp b/src/Magnum/Vk/Test/InstanceTest.cpp index 616d83579..cbdce3548 100644 --- a/src/Magnum/Vk/Test/InstanceTest.cpp +++ b/src/Magnum/Vk/Test/InstanceTest.cpp @@ -56,7 +56,15 @@ void InstanceTest::createInfoConstructNoInit() { info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) InstanceCreateInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Vk/Test/MemoryTest.cpp b/src/Magnum/Vk/Test/MemoryTest.cpp index 7ba450e88..1291f9d5b 100644 --- a/src/Magnum/Vk/Test/MemoryTest.cpp +++ b/src/Magnum/Vk/Test/MemoryTest.cpp @@ -79,7 +79,15 @@ void MemoryTest::requirementsConstructNoInit() { MemoryRequirements requirements{NoInit}; requirements->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&requirements) MemoryRequirements{NoInit}; - CORRADE_COMPARE(requirements->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(requirements->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -133,7 +141,15 @@ void MemoryTest::allocateInfoConstructNoInit() { MemoryAllocateInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) MemoryAllocateInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Vk/Test/MeshLayoutTest.cpp b/src/Magnum/Vk/Test/MeshLayoutTest.cpp index e90ad42a2..b2b952a28 100644 --- a/src/Magnum/Vk/Test/MeshLayoutTest.cpp +++ b/src/Magnum/Vk/Test/MeshLayoutTest.cpp @@ -198,8 +198,16 @@ void MeshLayoutTest::constructNoInit() { layout.vkPipelineVertexInputStateCreateInfo().sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; layout.vkPipelineInputAssemblyStateCreateInfo().sType = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES; new(&layout) MeshLayout{NoInit}; - CORRADE_COMPARE(layout.vkPipelineVertexInputStateCreateInfo().sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); - CORRADE_COMPARE(layout.vkPipelineInputAssemblyStateCreateInfo().sType, VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(layout.vkPipelineVertexInputStateCreateInfo().sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + CORRADE_COMPARE(layout.vkPipelineInputAssemblyStateCreateInfo().sType, VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Vk/Test/PipelineLayoutTest.cpp b/src/Magnum/Vk/Test/PipelineLayoutTest.cpp index bcd4d2071..a62756661 100644 --- a/src/Magnum/Vk/Test/PipelineLayoutTest.cpp +++ b/src/Magnum/Vk/Test/PipelineLayoutTest.cpp @@ -82,7 +82,15 @@ void PipelineLayoutTest::createInfoConstructNoInit() { PipelineLayoutCreateInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) PipelineLayoutCreateInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Vk/Test/PipelineTest.cpp b/src/Magnum/Vk/Test/PipelineTest.cpp index d8cc01fed..a06a30058 100644 --- a/src/Magnum/Vk/Test/PipelineTest.cpp +++ b/src/Magnum/Vk/Test/PipelineTest.cpp @@ -223,7 +223,15 @@ void PipelineTest::rasterizationCreateInfoConstructNoInit() { RasterizationPipelineCreateInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) RasterizationPipelineCreateInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -580,7 +588,15 @@ void PipelineTest::computeCreateInfoConstructNoInit() { ComputePipelineCreateInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) ComputePipelineCreateInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -621,7 +637,15 @@ void PipelineTest::memoryBarrierConstructNoInit() { MemoryBarrier barrier{NoInit}; barrier->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&barrier) MemoryBarrier{NoInit}; - CORRADE_COMPARE(barrier->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(barrier->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -652,7 +676,15 @@ void PipelineTest::bufferMemoryBarrierConstructNoInit() { BufferMemoryBarrier barrier{NoInit}; barrier->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&barrier) BufferMemoryBarrier{NoInit}; - CORRADE_COMPARE(barrier->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(barrier->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -710,7 +742,15 @@ void PipelineTest::imageMemoryBarrierConstructNoInit() { ImageMemoryBarrier barrier{NoInit}; barrier->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&barrier) ImageMemoryBarrier{NoInit}; - CORRADE_COMPARE(barrier->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(barrier->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Vk/Test/QueueTest.cpp b/src/Magnum/Vk/Test/QueueTest.cpp index 097fce68d..1c0fe79a7 100644 --- a/src/Magnum/Vk/Test/QueueTest.cpp +++ b/src/Magnum/Vk/Test/QueueTest.cpp @@ -119,7 +119,15 @@ void QueueTest::submitInfoConstructNoInit() { SubmitInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) SubmitInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Vk/Test/RenderPassTest.cpp b/src/Magnum/Vk/Test/RenderPassTest.cpp index 23e231b76..7cde82f3f 100644 --- a/src/Magnum/Vk/Test/RenderPassTest.cpp +++ b/src/Magnum/Vk/Test/RenderPassTest.cpp @@ -293,7 +293,15 @@ void RenderPassTest::attachmentDescriptionConstructNoInit() { AttachmentDescription description{NoInit}; description->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&description) AttachmentDescription{NoInit}; - CORRADE_COMPARE(description->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(description->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -376,7 +384,15 @@ void RenderPassTest::attachmentReferenceConstructNoInit() { AttachmentReference reference{NoInit}; reference->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&reference) AttachmentReference{NoInit}; - CORRADE_COMPARE(reference->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(reference->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -436,7 +452,15 @@ void RenderPassTest::subpassDescriptionConstructNoInit() { SubpassDescription description{NoInit}; description->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&description) SubpassDescription{NoInit}; - CORRADE_COMPARE(description->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(description->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -784,7 +808,15 @@ void RenderPassTest::subpassDependencyConstructNoInit() { SubpassDependency dependency{NoInit}; dependency->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&dependency) SubpassDependency{NoInit}; - CORRADE_COMPARE(dependency->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(dependency->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -863,7 +895,15 @@ void RenderPassTest::createInfoConstructNoInit() { RenderPassCreateInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) RenderPassCreateInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -1163,7 +1203,15 @@ void RenderPassTest::beginInfoConstructNoInit() { RenderPassBeginInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) RenderPassBeginInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -1233,7 +1281,15 @@ void RenderPassTest::subpassBeginInfoConstructNoInit() { SubpassBeginInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) SubpassBeginInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); @@ -1258,7 +1314,15 @@ void RenderPassTest::subpassEndInfoConstructNoInit() { SubpassEndInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) SubpassEndInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Vk/Test/SamplerTest.cpp b/src/Magnum/Vk/Test/SamplerTest.cpp index 1f7ea5294..869eef68c 100644 --- a/src/Magnum/Vk/Test/SamplerTest.cpp +++ b/src/Magnum/Vk/Test/SamplerTest.cpp @@ -190,7 +190,15 @@ void SamplerTest::createInfoConstructNoInit() { SamplerCreateInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO; new(&info) SamplerCreateInfo{NoInit}; - CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO); + { + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif + CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO); + } CORRADE_VERIFY(std::is_nothrow_constructible::value); diff --git a/src/Magnum/Vk/Test/ShaderTest.cpp b/src/Magnum/Vk/Test/ShaderTest.cpp index 6a7dbffa0..18059609e 100644 --- a/src/Magnum/Vk/Test/ShaderTest.cpp +++ b/src/Magnum/Vk/Test/ShaderTest.cpp @@ -214,6 +214,12 @@ void ShaderTest::createInfoConstructNoInit() { ShaderCreateInfo info{NoInit}; info->sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; new(&info) ShaderCreateInfo{NoInit}; + /* Explicitly check we're not on Clang because certain Clang-based IDEs + inherit __GNUC__ if GCC is used instead of leaving it at 4 like + Clang itself does */ + #if defined(CORRADE_TARGET_GCC) && !defined(CORRADE_TARGET_CLANG) && __GNUC__ >= 16 && __OPTIMIZE__ + CORRADE_EXPECT_FAIL("GCC 16+ misoptimizes and overwrites the value."); + #endif CORRADE_COMPARE(info->sType, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2); }