Re: [PATCH 0/4] drop some "int x = x" hacks to silence gcc warnings
From: Jeff King <hidden>
Date: 2016-06-15 22:56:28
On Thu, Mar 21, 2013 at 12:45:37PM +0100, Johannes Sixt wrote:
Am 3/21/2013 12:03, schrieb Jeff King:quoted
I was fooling around with clang and noticed that it complains about the "int x = x" construct under -Wall. That is IMHO a deficiency in clang, since the idiom has a well-defined use in silencing -Wuninitialized warnings.IMO, that's a myth. The construct invokes undefined behavior at least since C99, and the compilers are right to complain about it.
While undefined behavior does leave the compiler free to do anything, including nasal demons, it would be a very poor implementation that did anything except leave random bytes in the value. And it also means that gcc is free to take it as a hint to silence the warning; given that clang tries to be compatible with gcc, I'd think it would want to do the same. But I may be wrong that the behavior from gcc is intentional or common (see below).
But you might just say that standards are not worth the paper they are printed on, and you may possibly be right for practical reasons. But I still consider it a myth that "int x = x" is an idiom. I'm in the C business since more than 25 years, and the first time I saw the "idiom" was in git code. Is there any evidence that the construct is used elsewhere? Have I been in the wrong corner of the C world for such a long time?
Git code was my introduction to it, too, and I was led to believe it was idiomatic, so I can't speak further on that. I think it was Junio who introduced me to it, so maybe he can shed more light on the history. -Peff