On 2020-12-10, Karl Berry <invalid.nore...@gnu.org> wrote:
> When a longstanding core existing feature (AC_PROG_CC) is changed in a
> backward-incompatible way, a way to get the heretofore standard behavior
> feels  more like a bug fix than a feature request to me. For that matter, it 
> feels
> like a new macro or option would have been more desirable than incompatibly
> changing existing behavior.

I will note that -std=gnu11 (or, more recently, the substantially
equivalent -std=gnu17) mode has been the default mode of GCC for the
better part of a decade now.

So with modern compilers I would not expect there to be much
difference between old and new behaviour of AC_PROG_CC (you'll get a
modern C flavour
in either case).

> Anyway. Semantics aside, I had the same reaction to the weird error about
> "long int". I haven't had a chance to look into it yet, but my expectation
> is that it is something specific to the TL autoconfigury. (I mean, presumably
> int64_t should not be getting #define-d in the first place.)

My guess would be that something is including either <stdint.h> or
<inttypes.h> with these macros defined.  Per the C spec, int64_t is a
reserved identifier if either header is included so defining a macro
with this name and including one of these headers gives undefined
behaviour.

It is really odd that such a problem would occur simply by changing
the C standard version.  Perhaps there is code conditional code on
__STDC_VERSION__?  For example, it could be that <stdint.h> is
included only if __STDC_VERSION >= 199901, and because of the macro
definition you get undefined results (translation failure in this
case).

Cheers,
  Nick

Reply via email to