zig.h: Define zig_gnuc for both GCC and Clang and stop using __GNUC__.

There's only one spot in the header where we want to handle GCC but not Clang,
so just add an extra check there.
This commit is contained in:
Alex Rønne Petersen 2024-12-01 15:31:32 +01:00
parent dd1d9cce3c
commit d19e1919da
No known key found for this signature in database

View File

@ -4,6 +4,7 @@
#define zig_msvc #define zig_msvc
#elif defined(__clang__) #elif defined(__clang__)
#define zig_clang #define zig_clang
#define zig_gnuc
#elif defined(__GNUC__) #elif defined(__GNUC__)
#define zig_gnuc #define zig_gnuc
#elif defined(__TINYC__) #elif defined(__TINYC__)
@ -65,7 +66,7 @@ typedef char bool;
#define zig_threadlocal thread_local #define zig_threadlocal thread_local
#elif __STDC_VERSION__ >= 201112L #elif __STDC_VERSION__ >= 201112L
#define zig_threadlocal _Thread_local #define zig_threadlocal _Thread_local
#elif defined(__GNUC__) || defined(zig_slimcc) #elif defined(zig_gnuc) || defined(zig_slimcc)
#define zig_threadlocal __thread #define zig_threadlocal __thread
#elif defined(zig_msvc) #elif defined(zig_msvc)
#define zig_threadlocal __declspec(thread) #define zig_threadlocal __declspec(thread)
@ -73,7 +74,7 @@ typedef char bool;
#define zig_threadlocal zig_threadlocal_unavailable #define zig_threadlocal zig_threadlocal_unavailable
#endif #endif
#if defined(zig_gnuc) && (defined(__i386__) || defined(__x86_64__)) #if !defined(zig_clang) && defined(zig_gnuc) && (defined(__i386__) || defined(__x86_64__))
#define zig_f128_has_miscompilations 1 #define zig_f128_has_miscompilations 1
#else #else
#define zig_f128_has_miscompilations 0 #define zig_f128_has_miscompilations 0
@ -132,7 +133,7 @@ typedef char bool;
#if __STDC_VERSION__ >= 199901L #if __STDC_VERSION__ >= 199901L
#define zig_restrict restrict #define zig_restrict restrict
#elif defined(__GNUC__) || defined(zig_tinyc) #elif defined(zig_gnuc) || defined(zig_tinyc)
#define zig_restrict __restrict #define zig_restrict __restrict
#else #else
#define zig_restrict #define zig_restrict
@ -3626,7 +3627,7 @@ typedef enum memory_order zig_memory_order;
#define zig_atomicrmw_add_float zig_atomicrmw_add #define zig_atomicrmw_add_float zig_atomicrmw_add
#undef zig_atomicrmw_sub_float #undef zig_atomicrmw_sub_float
#define zig_atomicrmw_sub_float zig_atomicrmw_sub #define zig_atomicrmw_sub_float zig_atomicrmw_sub
#elif defined(__GNUC__) #elif defined(zig_gnuc)
typedef int zig_memory_order; typedef int zig_memory_order;
#define zig_memory_order_relaxed __ATOMIC_RELAXED #define zig_memory_order_relaxed __ATOMIC_RELAXED
#define zig_memory_order_acquire __ATOMIC_ACQUIRE #define zig_memory_order_acquire __ATOMIC_ACQUIRE
@ -3948,7 +3949,7 @@ static inline void* zig_thumb_windows_teb(void) {
void* teb = 0; void* teb = 0;
#if defined(zig_msvc) #if defined(zig_msvc)
teb = (void*)_MoveFromCoprocessor(15, 0, 13, 0, 2); teb = (void*)_MoveFromCoprocessor(15, 0, 13, 0, 2);
#elif defined(__GNUC__) #elif defined(zig_gnuc)
__asm__ ("mrc p15, 0, %[ptr], c13, c0, 2" : [ptr] "=r" (teb)); __asm__ ("mrc p15, 0, %[ptr], c13, c0, 2" : [ptr] "=r" (teb));
#endif #endif
return teb; return teb;
@ -3960,7 +3961,7 @@ static inline void* zig_aarch64_windows_teb(void) {
void* teb = 0; void* teb = 0;
#if defined(zig_msvc) #if defined(zig_msvc)
teb = (void*)__readx18qword(0x0); teb = (void*)__readx18qword(0x0);
#elif defined(__GNUC__) #elif defined(zig_gnuc)
__asm__ ("mov %[ptr], x18" : [ptr] "=r" (teb)); __asm__ ("mov %[ptr], x18" : [ptr] "=r" (teb));
#endif #endif
return teb; return teb;
@ -3972,7 +3973,7 @@ static inline void* zig_x86_windows_teb(void) {
void* teb = 0; void* teb = 0;
#if defined(zig_msvc) #if defined(zig_msvc)
teb = (void*)__readfsdword(0x18); teb = (void*)__readfsdword(0x18);
#elif defined(__GNUC__) #elif defined(zig_gnuc)
__asm__ ("movl %%fs:0x18, %[ptr]" : [ptr] "=r" (teb)); __asm__ ("movl %%fs:0x18, %[ptr]" : [ptr] "=r" (teb));
#endif #endif
return teb; return teb;
@ -3984,7 +3985,7 @@ static inline void* zig_x86_64_windows_teb(void) {
void* teb = 0; void* teb = 0;
#if defined(zig_msvc) #if defined(zig_msvc)
teb = (void*)__readgsqword(0x30); teb = (void*)__readgsqword(0x30);
#elif defined(__GNUC__) #elif defined(zig_gnuc)
__asm__ ("movq %%gs:0x30, %[ptr]" : [ptr] "=r" (teb)); __asm__ ("movq %%gs:0x30, %[ptr]" : [ptr] "=r" (teb));
#endif #endif
return teb; return teb;