From dc78362355deb62d094f8ad1e36b7de038701fbc Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Sun, 17 May 2026 00:09:14 +0300 Subject: [PATCH] cgen: fix TCC detection broken by !defined(__GNUC__) guard TCC defines __GNUC__ as a compatibility macro, so the condition `defined(__TINYC__) && !defined(__GNUC__)` is never true. This caused TCC-specific workarounds (E_STRUCT padding, _Atomic define, __has_include undef) to be skipped, leading to "flexible array has zero size" errors on OpenBSD TCC. Revert to simple `#ifdef __TINYC__` / `defined(__TINYC__)` checks. --- vlib/v/gen/c/cgen.v | 2 +- vlib/v/gen/c/cheaders.v | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/vlib/v/gen/c/cgen.v b/vlib/v/gen/c/cgen.v index 6c2d40d52..46237cd3a 100644 --- a/vlib/v/gen/c/cgen.v +++ b/vlib/v/gen/c/cgen.v @@ -1174,7 +1174,7 @@ pub fn (mut g Gen) init() { g.cheaders.writeln('#include ') } else { tcc_undef_has_include := ' -#if defined(__TINYC__) && !defined(__clang__) && !defined(__GNUC__) && defined(__has_include) // tcc does not support has_include properly yet, turn it off completely +#if defined(__TINYC__) && defined(__has_include) // tcc does not support has_include properly yet, turn it off completely #undef __has_include #endif' g.preincludes.writeln(tcc_undef_has_include) diff --git a/vlib/v/gen/c/cheaders.v b/vlib/v/gen/c/cheaders.v index 644a1c490..0260e8c3e 100644 --- a/vlib/v/gen/c/cheaders.v +++ b/vlib/v/gen/c/cheaders.v @@ -162,7 +162,7 @@ const c_common_macros = ' } #endif #endif -#if defined(__TINYC__) && !defined(__clang__) && !defined(__GNUC__) +#ifdef __TINYC__ #define _Atomic volatile #undef E_STRUCT_DECL #undef E_STRUCT @@ -227,7 +227,7 @@ const c_common_macros = ' #else #define _MOV #endif -#if defined(__TINYC__) && !defined(__clang__) && !defined(__GNUC__) && defined(__has_include) // tcc does not support has_include properly yet, turn it off completely +#if defined(__TINYC__) && defined(__has_include) // tcc does not support has_include properly yet, turn it off completely #undef __has_include #endif //likely and unlikely macros -- 2.39.5