[Bf-blender-cvs] [e1aef2e87e9] master: Cleanup: suppress '-Warray-bounds' warnings

Campbell Barton noreply at git.blender.org
Mon Jan 16 00:27:27 CET 2023


Commit: e1aef2e87e9bbfa6a2ccd419e8525f3fc0b86b07
Author: Campbell Barton
Date:   Mon Jan 16 09:55:41 2023 +1100
Branches: master
https://developer.blender.org/rBe1aef2e87e9bbfa6a2ccd419e8525f3fc0b86b07

Cleanup: suppress '-Warray-bounds' warnings

Changes to overlay_shader.cc workaround a bug in GCC-12.2
(likely a duplicate of [0]). As the workaround involved removing
a local variable which most functions already didn't assign,
remove it for all functions.

An alternative is to add (otherwise redundant) parenthesis, e.g.
`&(e_data.sh_data[sh_cfg])`, but this would need to be noted in
code-comments, so opt for removing the intermediate variable.

[0]: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106247

===================================================================

M	source/blender/blenlib/tests/BLI_linear_allocator_test.cc
M	source/blender/draw/engines/overlay/overlay_shader.cc

===================================================================

diff --git a/source/blender/blenlib/tests/BLI_linear_allocator_test.cc b/source/blender/blenlib/tests/BLI_linear_allocator_test.cc
index 2ed1786f9e0..cc6bae0ea0e 100644
--- a/source/blender/blenlib/tests/BLI_linear_allocator_test.cc
+++ b/source/blender/blenlib/tests/BLI_linear_allocator_test.cc
@@ -58,9 +58,16 @@ TEST(linear_allocator, CopyString)
   blender::AlignedBuffer<256, 1> buffer;
   allocator.provide_buffer(buffer);
 
+  /* False positive warning with GCC 12.2,
+   * considers assignment outside of array bounds (`char [0]`). */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Warray-bounds"
+
   StringRefNull ref1 = allocator.copy_string("Hello");
   StringRefNull ref2 = allocator.copy_string("World");
 
+#pragma GCC diagnostic pop
+
   EXPECT_EQ(ref1, "Hello");
   EXPECT_EQ(ref2, "World");
   EXPECT_EQ(ref2.data() - ref1.data(), 6);
diff --git a/source/blender/draw/engines/overlay/overlay_shader.cc b/source/blender/draw/engines/overlay/overlay_shader.cc
index 9e33d713a9a..58d3e92e764 100644
--- a/source/blender/draw/engines/overlay/overlay_shader.cc
+++ b/source/blender/draw/engines/overlay/overlay_shader.cc
@@ -705,11 +705,11 @@ GPUShader *OVERLAY_shader_outline_detect(void)
 GPUShader *OVERLAY_shader_paint_face(void)
 {
   const DRWContextState *draw_ctx = DRW_context_state_get();
-  eGPUShaderConfig sh_cfg = draw_ctx->sh_cfg;
-  OVERLAY_Shaders *sh_data = &e_data.sh_data[sh_cfg];
+  OVERLAY_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg];
   if (!sh_data->paint_face) {
     sh_data->paint_face = GPU_shader_create_from_info_name(
-        sh_cfg == GPU_SHADER_CFG_CLIPPED ? "overlay_paint_face_clipped" : "overlay_paint_face");
+        draw_ctx->sh_cfg == GPU_SHADER_CFG_CLIPPED ? "overlay_paint_face_clipped" :
+                                                     "overlay_paint_face");
   }
   return sh_data->paint_face;
 }
@@ -717,11 +717,11 @@ GPUShader *OVERLAY_shader_paint_face(void)
 GPUShader *OVERLAY_shader_paint_point(void)
 {
   const DRWContextState *draw_ctx = DRW_context_state_get();
-  eGPUShaderConfig sh_cfg = draw_ctx->sh_cfg;
-  OVERLAY_Shaders *sh_data = &e_data.sh_data[sh_cfg];
+  OVERLAY_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg];
   if (!sh_data->paint_point) {
     sh_data->paint_point = GPU_shader_create_from_info_name(
-        sh_cfg == GPU_SHADER_CFG_CLIPPED ? "overlay_paint_point_clipped" : "overlay_paint_point");
+        draw_ctx->sh_cfg == GPU_SHADER_CFG_CLIPPED ? "overlay_paint_point_clipped" :
+                                                     "overlay_paint_point");
   }
   return sh_data->paint_point;
 }
@@ -729,11 +729,10 @@ GPUShader *OVERLAY_shader_paint_point(void)
 GPUShader *OVERLAY_shader_paint_texture(void)
 {
   const DRWContextState *draw_ctx = DRW_context_state_get();
-  eGPUShaderConfig sh_cfg = draw_ctx->sh_cfg;
-  OVERLAY_Shaders *sh_data = &e_data.sh_data[sh_cfg];
+  OVERLAY_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg];
   if (!sh_data->paint_texture) {
     sh_data->paint_texture = GPU_shader_create_from_info_name(
-        sh_cfg ? "overlay_paint_texture_clipped" : "overlay_paint_texture");
+        draw_ctx->sh_cfg ? "overlay_paint_texture_clipped" : "overlay_paint_texture");
   }
   return sh_data->paint_texture;
 }
@@ -741,11 +740,10 @@ GPUShader *OVERLAY_shader_paint_texture(void)
 GPUShader *OVERLAY_shader_paint_vertcol(void)
 {
   const DRWContextState *draw_ctx = DRW_context_state_get();
-  eGPUShaderConfig sh_cfg = draw_ctx->sh_cfg;
-  OVERLAY_Shaders *sh_data = &e_data.sh_data[sh_cfg];
+  OVERLAY_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg];
   if (!sh_data->paint_vertcol) {
     sh_data->paint_vertcol = GPU_shader_create_from_info_name(
-        sh_cfg ? "overlay_paint_vertcol_clipped" : "overlay_paint_vertcol");
+        draw_ctx->sh_cfg ? "overlay_paint_vertcol_clipped" : "overlay_paint_vertcol");
   }
   return sh_data->paint_vertcol;
 }
@@ -758,10 +756,10 @@ GPUShader *OVERLAY_shader_paint_weight(const bool shading)
   };
   int index = shading ? 1 : 0;
   const DRWContextState *draw_ctx = DRW_context_state_get();
-  eGPUShaderConfig sh_cfg = draw_ctx->sh_cfg;
-  OVERLAY_Shaders *sh_data = &e_data.sh_data[sh_cfg];
+  OVERLAY_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg];
   if (!sh_data->paint_weight[index]) {
-    sh_data->paint_weight[index] = GPU_shader_create_from_info_name(info_name[sh_cfg][index]);
+    sh_data->paint_weight[index] = GPU_shader_create_from_info_name(
+        info_name[draw_ctx->sh_cfg][index]);
   }
   return sh_data->paint_weight[index];
 }
@@ -769,11 +767,10 @@ GPUShader *OVERLAY_shader_paint_weight(const bool shading)
 GPUShader *OVERLAY_shader_paint_wire(void)
 {
   const DRWContextState *draw_ctx = DRW_context_state_get();
-  eGPUShaderConfig sh_cfg = draw_ctx->sh_cfg;
-  OVERLAY_Shaders *sh_data = &e_data.sh_data[sh_cfg];
+  OVERLAY_Shaders *sh_data = &e_data.sh_data[draw_ctx->sh_cfg];
   if (!sh_data->paint_wire) {
-    sh_data->paint_wire = GPU_shader_create_from_info_name(sh_cfg ? "overlay_paint_wire_clipped" :
-                                                                    "overlay_paint_wire");
+    sh_data->paint_wire = GPU_shader_create_from_info_name(
+        draw_ctx->sh_cfg ? "overlay_paint_wire_clipped" : "overlay_paint_wire");
   }
   return sh_data->paint_wire;
 }



More information about the Bf-blender-cvs mailing list