Commit: b2883295f5d48909aeef43bb741958db6ac184b7
Parent: 8360f2ed65eaf71fcc5527d7b29abaa4b858f0cc
Author: Randy Palamar
Date: Tue, 26 May 2026 10:42:58 -0600
intrinsics: add print_format attribute
Diffstat:
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/build.c b/build.c
@@ -174,7 +174,8 @@ build_log_base(BuildLogKind kind, char *format, va_list args)
#define build_log_info(...) build_log(BuildLogKind_Info, ##__VA_ARGS__)
#define build_log_command(...) build_log(BuildLogKind_Command, ##__VA_ARGS__)
#define build_log_warning(...) build_log(BuildLogKind_Warning, ##__VA_ARGS__)
-function void
+
+function print_format(2, 3) void
build_log(BuildLogKind kind, char *format, ...)
{
va_list ap;
@@ -184,7 +185,7 @@ build_log(BuildLogKind kind, char *format, ...)
}
#define build_fatal(fmt, ...) build_fatal_("%s: " fmt, __FUNCTION__, ##__VA_ARGS__)
-function no_return void
+function no_return print_format(1, 2) void
build_fatal_(char *format, ...)
{
va_list ap;
@@ -229,7 +230,7 @@ stream_push_command(Stream *s, CommandList *c)
}
}
-function char *
+function print_format(1, 2) char *
temp_sprintf(char *format, ...)
{
local_persist char buffer[4096];
@@ -4752,7 +4753,7 @@ metagen_file_direct(Arena arena, char *filename)
CommandList deps = meta_extract_emit_file_dependencies(ctx, &arena);
MetaprogramContext m[1] = {{.stream = arena_stream(arena), .scratch = ctx->scratch}};
if (needs_rebuild_(out, deps.data, deps.count)) {
- build_log_generate(out);
+ build_log_generate("%s", out);
meta_push(m, c_file_header);
metagen_run_emit_set(m, ctx, ctx->emit_sets + MetaEmitLang_C, (s8 *)meta_kind_c_types);
result &= meta_write_and_reset(m, out);
diff --git a/intrinsics.c b/intrinsics.c
@@ -26,6 +26,8 @@
#define likely(x) (x)
#define unlikely(x) (x)
+ #define print_format(f, va)
+
#define assume(x) __assume(x)
#define debugbreak() __debugbreak()
#define unreachable() __assume(0)
@@ -67,6 +69,8 @@
#define likely(x) (__builtin_expect(!!(x), 1))
#define unlikely(x) (__builtin_expect(!!(x), 0))
+ #define print_format(f, va) __attribute__((format(printf, f, va)))
+
#if COMPILER_CLANG
#define assume(x) __builtin_assume(x)
#else