Thread (19 messages) flat view 19 messages, 7 authors, 2016-06-15

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help