This commit is contained in:
David CARLIER 2024-09-18 23:16:21 +02:00 committed by GitHub
commit 369945599a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 27 additions and 1 deletions

View File

@ -151,6 +151,18 @@ extern "C" {
#define SDL_TriggerBreakpoint()
#endif
#if defined(_MSC_VER) && (_MSC_VER > 1400)
#define SDL_Assume(cond) __assume(cond)
#elif SDL_HAS_BUILTIN(__builtin_assume)
#define SDL_Assume(cond) __builtin_assume(cond)
#elif defined(__clang__) || (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))
#define SDL_Assume(cond) do { \
(__builtin_expect(!(cond), 0) ? __builtin_unreachable() : (void)0); \
} while (0)
#else
#define SDL_Assume(cond)
#endif
#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */
# define SDL_FUNCTION __func__
#elif ((defined(__GNUC__) && (__GNUC__ >= 2)) || defined(_MSC_VER) || defined (__WATCOMC__))

View File

@ -444,7 +444,20 @@ static int TestAssertions(bool verbose)
return 0;
}
int main(int argc, char *argv[])
int
TestAssume(SDL_bool verbose)
{
int max, count, i;
max = 16;
count = SDLTest_RandomIntegerInRange(0, max);
SDL_Assume(count <= max);
for (i = 0; i < count; i ++);
return (0);
}
int
main(int argc, char *argv[])
{
int i;
bool verbose = true;
@ -486,6 +499,7 @@ int main(int argc, char *argv[])
status += Test64Bit(verbose);
status += TestCPUInfo(verbose);
status += TestAssertions(verbose);
status += TestAssume(verbose);
SDL_Quit();
SDLTest_CommonDestroyState(state);