Ruby 4.1.0dev (2026-09-30 revision 5f5d65517e31dc76858b4b5924392ce2ced86f58)
assume.h
Go to the documentation of this file.
1
4#ifndef PRISM_COMPILER_ASSUME_H
5#define PRISM_COMPILER_ASSUME_H
6
13#if defined(__clang__)
14 #define PRISM_ASSUME(expr_) __builtin_assume(expr_)
15#elif defined(_MSC_VER)
16 #define PRISM_ASSUME(expr_) __assume(expr_)
17#elif defined(__GNUC__) && (__GNUC__ >= 13)
18 #define PRISM_ASSUME(expr_) __attribute__((assume(expr_)))
19#elif defined(__GNUC__)
20 #define PRISM_ASSUME(expr_) ((expr_) ? (void) 0 : __builtin_unreachable())
21#else
22 #define PRISM_ASSUME(expr_) ((void) 0)
23#endif
24
25#endif