Paul Eggert asked:
> Can you determine the earliest version of Clang that supports both "#
> pragma GCC diagnostic push" and "# pragma GCC diagnostic ignored
> "-Wvla""? A quick glance at the archived manuals suggests it goes back
> to at least Clang 4 but I suspect it's earlier. Knowing is better than
> guessing 9.
It's supported at least since clang version 3.9. I tested
$ clang -Wall -Wvla -S foo.c
with various versions of clang, since 3.9.1.
I'd therefore guess that we can use the condition
(defined __apple_build_version__ \
? 6000000 <= __apple_build_version__ \
: 3 < __clang_major__ + (9 <= __clang_minor__))
Bruno
========================== foo.c ==========================
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wvla"
typedef struct regex_t regex_t;
typedef struct { long rm_so; long rm_eo; } regmatch_t;
extern int regexec (const regex_t *, const char *, unsigned int nmatch,
regmatch_t pmatch[nmatch], int);
# pragma GCC diagnostic pop