mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-02-25 04:16:45 +00:00
compiler: rework BUG_ON using a struct
There are theoretical concerns that some compilers might not trigger build failures on attempts to define an array of size (x ? -1 : 1) where x is a variable and make it a variable sized array instead. Let rewrite using a struct with a negative bit field size instead as there are no dynamic bit field sizes. This is similar to what Linux does. Backports commit f291887e8eef5d37d31484638f6e62401b4b99a2 from qemu
This commit is contained in:
parent
7f9fb3395c
commit
634a8094f1
|
@ -61,10 +61,14 @@ static union MSVC_FLOAT_HACK __NAN = {{0x00, 0x00, 0xC0, 0x7F}};
|
|||
#define cat(x,y) x ## y
|
||||
#define cat2(x,y) cat(x,y)
|
||||
|
||||
#define QEMU_BUILD_BUG_ON_STRUCT(x) \
|
||||
struct { \
|
||||
int:(x) ? -1 : 1; \
|
||||
}
|
||||
|
||||
#ifdef __COUNTER__
|
||||
#define QEMU_BUILD_BUG_ON(x) \
|
||||
typedef char glue(qemu_build_bug_on__, __COUNTER__)[(x) ? -1 : 1] \
|
||||
__attribute__((unused))
|
||||
#define QEMU_BUILD_BUG_ON(x) typedef QEMU_BUILD_BUG_ON_STRUCT(x) \
|
||||
glue(qemu_build_bug_on__, __COUNTER__) __attribute__((unused))
|
||||
#else
|
||||
#define QEMU_BUILD_BUG_ON(x)
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue