diff --git a/src/backends/lr.c b/src/backends/lr.c index f2ac4956d80358e51d35c0e70484013bbfde212a..6919bf6d0a8d284c95167adb07023914a49f89b4 100644 --- a/src/backends/lr.c +++ b/src/backends/lr.c @@ -420,6 +420,12 @@ void h_lr_parse_start(HSuspendedParser *s) s->backend_state = engine; } +// cf. comment before run_trace in regex.c +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunknown-pragmas" +#pragma GCC diagnostic ignored "-Wclobbered" +#endif bool h_lr_parse_chunk(HSuspendedParser* s, HInputStream *stream) { HLREngine *engine = s->backend_state; @@ -457,6 +463,10 @@ bool h_lr_parse_chunk(HSuspendedParser* s, HInputStream *stream) *stream = engine->input; return !run; // done if engine no longer running } +// Reenable -Wclobber +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC diagnostic pop +#endif HParseResult *h_lr_parse_finish(HSuspendedParser *s) { diff --git a/src/backends/regex.c b/src/backends/regex.c index 9646ddd59343cacbd1cc53645161c88d70c15f78..c10c25890fd5bfdf5e3e9b37a64e988fd3010749 100644 --- a/src/backends/regex.c +++ b/src/backends/regex.c @@ -223,7 +223,7 @@ bool svm_stack_ensure_cap(HAllocator *mm__, HSVMContext *ctx, size_t addl) { * the second return; here, the only variables that could matter for * are arena and ctx (because they're referenced in "goto fail"). */ -#ifdef __GNUC__ +#if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunknown-pragmas" #pragma GCC diagnostic ignored "-Wclobbered" @@ -311,7 +311,7 @@ HParseResult *run_trace(HAllocator *mm__, HRVMProg *orig_prog, HRVMTrace *trace, return NULL; } // Reenable -Wclobber -#ifdef __GNUC__ +#if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic pop #endif diff --git a/src/platform_bsdlike.c b/src/platform_bsdlike.c index 2ccf874264a740e0784e8fba14e2ae78a337fa08..ffe1e64db4d1c0e2589160a40468c408f12a3fa6 100644 --- a/src/platform_bsdlike.c +++ b/src/platform_bsdlike.c @@ -1,4 +1,8 @@ +#ifdef __OpenBSD__ +#define _BSD_SOURCE // to obtain asprintf/vasprintf +#else #define _GNU_SOURCE // to obtain asprintf/vasprintf +#endif #include "platform.h" #include <stdio.h>