Use __assume(0) for unreachable code path in msvc

msvc will optimize away the condition check.
This commit is contained in:
Ma Lin
2021-09-27 19:23:57 +08:00
parent e5ba858270
commit ae986fcdb8
6 changed files with 113 additions and 32 deletions
+8 -2
View File
@@ -43,8 +43,14 @@ static U32 FSE_ctz(U32 val)
assert(val != 0);
{
# if defined(_MSC_VER) /* Visual */
unsigned long r;
return _BitScanForward(&r, val) ? (unsigned)r : 0;
if (val != 0) {
unsigned long r;
_BitScanForward(&r, val);
return (unsigned)r;
} else {
/* Should not reach this code path */
__assume(0);
}
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* GCC Intrinsic */
return __builtin_ctz(val);
# elif defined(__ICCARM__) /* IAR Intrinsic */