On Sun, 09.01.2011 at 01:13:54 +0100, Jilles Tjoelker wrote: > On Wed, Jan 05, 2011 at 10:30:43PM +0100, Ulrich Spörlein wrote: > > On Wed, 05.01.2011 at 20:36:53 +0100, Jilles Tjoelker wrote: > > > On Wed, Jan 05, 2011 at 05:55:45PM +0100, Ulrich Spörlein wrote: > > > > *But*, it should grok that for err(3) and exit(3). Now there are some > > > > possible remedies: > > > > > - get IPA to work with clang, or at least file a bug > > > > > - mark functions as __dead2 (please don't do that) > > > > Why not? > > > Cause IMHO it adds clutter, is noisy and needs to be maintained > > manually, when we have these "computer" things that should deduct this > > by themselves. > > Yes, but to me it seems the only realistic option of your three. > Upstream is unlikely to add IPA to the checker and other kinds of > annotation are probably either similar to __dead2 with the same problems > and an additional one that gcc does not check it or very specific to a > particular complaint from the checker. > > > > I have done this in some cases because it leads to better code with gcc > > > (the system version in 9-current). See SVN commit r212508 to > > > bin/sh/parser.c. Although synexpect() and synerror() are static, adding > > > __dead2 to both makes the executable 576 bytes smaller on i386 (these > > > functions are called many times). Adding __dead2 to synexpect() only > > > causes a warning "noreturn function does return" (it calls synerror()). > > > Adding __dead2 to synerror() only also makes the executable smaller but > > > not as much as adding it to both. > > > > Reordering the functions in the file does not help to make gcc see that > > > the functions do not return. > > > This is too bad and really makes me sad. It shouldn't be necessary to > > hand-hold the compilers like that. Could you try some tests with gcc 4.5 > > to confirm this is still required? > > gcc 4.5 still needs it. gcc 4.6 and clang (the compiler) do not need it. > (For gcc, used ports gcc and compiled head bin/sh with some patches on > stable/8. For clang, used base clang and compiled head bin/sh on head.) Thank you for confirming this, this is good to know. Looks like I need to stop worrying and learn to love the __dead2! :D UliReceived on Tue Jan 11 2011 - 09:33:25 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:10 UTC