From a31a87f8943aa4029ff0f23a6dc46f5d0c895e8b Mon Sep 17 00:00:00 2001 From: Ankit Meel Date: Thu, 1 Oct 2020 23:51:01 +0530 Subject: T81340: UBSan: load of value .. not valid for GPU enum type The underlying type of the enum cannot be fixed here due to its usage in C code. All the values possible in the width of the underlying type are not valid for an enum. Only 0 to (2*max - 1) if all enumerators are unsigned. So the macro asks for the biggest value among the //listed// ones. If any enumerator C is set to say `A|B`, then C would be the maximum. (2*max-1) is used as the mask. The warnings (for each enum modified in this commit): GPU_vertex_buffer.h:43:1: runtime error: load of value 4294967291 which is not a valid value for type 'GPUVertBufStatus' https://github.com/llvm/llvm-project/commit/1c2c9867 Ref T81340 Reviewed By: fclem Differential Revision: https://developer.blender.org/D9067 --- source/blender/gpu/GPU_framebuffer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source/blender/gpu/GPU_framebuffer.h') diff --git a/source/blender/gpu/GPU_framebuffer.h b/source/blender/gpu/GPU_framebuffer.h index be55cd7af2d..c0f91756bf6 100644 --- a/source/blender/gpu/GPU_framebuffer.h +++ b/source/blender/gpu/GPU_framebuffer.h @@ -38,7 +38,7 @@ typedef enum eGPUFrameBufferBits { GPU_STENCIL_BIT = (1 << 2), } eGPUFrameBufferBits; -ENUM_OPERATORS(eGPUFrameBufferBits) +ENUM_OPERATORS(eGPUFrameBufferBits, GPU_STENCIL_BIT) #ifdef __cplusplus extern "C" { -- cgit v1.2.3