[Bf-blender-cvs] [07d3a3962ac] master: Fix Cycles build in VS2022, use explicit two's complement in find_first_set()

Leszek Godlewski noreply at git.blender.org
Wed Dec 7 18:48:41 CET 2022


Commit: 07d3a3962ac8abc667547e388a562ebaa9e57e7b
Author: Leszek Godlewski
Date:   Mon Nov 28 19:39:49 2022 +0100
Branches: master
https://developer.blender.org/rB07d3a3962ac8abc667547e388a562ebaa9e57e7b

Fix Cycles build in VS2022, use explicit two's complement in find_first_set()

Compiling Cycles in Visual Studio 2022 yields the error:
C4146: unary minus operator applied to unsigned type, result still unsigned

Replacing it with explicit two's complement achieves the same result as signed
negation but avoids the error.

Differential Revision: https://developer.blender.org/D16616

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

M	intern/cycles/util/math.h

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

diff --git a/intern/cycles/util/math.h b/intern/cycles/util/math.h
index 078ed5d8aab..2eeb4aebd54 100644
--- a/intern/cycles/util/math.h
+++ b/intern/cycles/util/math.h
@@ -860,7 +860,7 @@ ccl_device_inline uint find_first_set(uint x)
   return (x != 0) ? ctz(x) + 1 : 0;
 #else
 #  ifdef _MSC_VER
-  return (x != 0) ? (32 - count_leading_zeros(x & (-x))) : 0;
+  return (x != 0) ? (32 - count_leading_zeros(x & (~x + 1))) : 0;
 #  else
   return __builtin_ffs(x);
 #  endif



More information about the Bf-blender-cvs mailing list