From 4cbf2ee3f036e18574916e00ec18a311b67b2c47 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Tue, 3 Mar 2026 14:07:52 -0800 Subject: [PATCH] anv: Use different logic to isolate lowest flag in anv_foreach_vk_stage Silences many ubsan errors like: src/intel/vulkan/anv_shader_compile.c:609:4: runtime error: shift exponent -1 is negative Reviewed-by: Lionel Landwerlin Part-of: --- src/intel/vulkan/anv_private.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 94933b5dd3d..1e8252ec27c 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -5304,7 +5304,8 @@ struct anv_event { #define anv_foreach_vk_stage(stage, stage_bits) \ for (VkShaderStageFlags stage, \ __tmp = (stage_bits & ANV_VK_STAGE_MASK); \ - stage = BITFIELD_BIT(__builtin_ffs(__tmp) - 1), __tmp; \ + /* See util_bitcount in bitscan.h. */ \ + stage = __tmp & -__tmp, __tmp; \ __tmp &= ~(stage)) struct anv_shader_upload_params {