From 71704d2885e5e2b4717fcb7db2b875728eefea71 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 11 Mar 2026 23:27:29 +0000 Subject: [PATCH] Rejig to avoid cast that some compilers might warn on --- .../driver/shaders/spirv/spirv_debug.cpp | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/renderdoc/driver/shaders/spirv/spirv_debug.cpp b/renderdoc/driver/shaders/spirv/spirv_debug.cpp index 19dfbf1ea..3076f7c92 100644 --- a/renderdoc/driver/shaders/spirv/spirv_debug.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_debug.cpp @@ -2234,18 +2234,21 @@ void ThreadState::StepNext(bool useDebugState, const uint32_t steps, for(uint8_t c = 0; c < var.columns; c++) { #undef _IMPL -#define _IMPL(I, S, U) \ - const U bitcount = comp(count, c); \ - const U mask = bitcount == sizeof(U) * 8 ? ~0ULL : (U(1) << bitcount) - U(1); \ - \ - comp(var, c) >>= comp(offset, c); \ - comp(var, c) &= mask; \ - \ - if(opdata.op == Op::BitFieldSExtract) \ - { \ - U topbit = (mask + U(1)) >> U(1); \ - if(comp(var, c) & topbit) \ - comp(var, c) |= (~0ULL ^ mask); \ +#define _IMPL(I, S, U) \ + const U bitcount = comp(count, c); \ + if(bitcount < sizeof(U) * 8) \ + { \ + const U mask = (U(1) << bitcount) - U(1); \ + \ + comp(var, c) >>= comp(offset, c); \ + comp(var, c) &= mask; \ + \ + if(opdata.op == Op::BitFieldSExtract) \ + { \ + U topbit = (mask + U(1)) >> U(1); \ + if(comp(var, c) & topbit) \ + comp(var, c) |= (~0ULL ^ mask); \ + } \ } IMPL_FOR_INT_TYPES(_IMPL);