warnings when compiling libev with clang
Benjamin Kaduk
kaduk at MIT.EDU
Tue Nov 5 03:07:25 CET 2013
On Tue, 5 Nov 2013, Marc Lehmann wrote:
> On Mon, Nov 04, 2013 at 04:25:55PM -0500, Benjamin Kaduk <kaduk at MIT.EDU> wrote:
>> I was doing some warning cleanup on a project that ships a bundled
>> version of libev (krb5), and figured that I should note the changes I
>> made in my working copy here, to see if they held interest for the
>> libev maintainers.
>
> Please see the documentation section "COMPILER WARNINGS". What you are
> trying to do is pretty pointless.
Thanks for the pointer, I am something of a libev newbie.
Though, what I did was clearly useful for my short-term goal: analyze my
own application's code. Eliminating warnings from imported code reduces
"noise" in the log so that I can get to the interesting parts which affect
my own code. There are lots of ways I could have done so, with patching
the code being just one of them. The whole point of my first mail was to
find out whether what I had done would additionally have long-term value.
That decision is yours, and I have no reason to try very much to affect
it. (I have no interest in maintaining a separate patchset atop libev just
to remove harmless warnings, as implied by the mindset implied by your
documentation.)
>> (3) The file-local function fd_rearm_all() is defined but never used.
>> It can safely be removed to eliminate this compiler warning.
>
> It's used in most backends, actually, as a simple grep would have
> shown. Eliminating it makes them not compile. Thats what you get for
> blindly working around compiler warnings.
It was sufficient for my purpose at the time.
A simple grep would not be enough, one would need to find the part where
the different backend codes are included via the preprocessor instead of
being compiled as separate objects. The idiom of using the preprocessor to
include .c files is not one I encounter very often (the style guides in my
main projects frown on it); removing the 'static' keyword from the
function definition would probably help people like me who are unfamiliar
with the code gain a better/faster understanding of it (in addition to
eliminating the warning which drew my attention to it). Yes, it would
cause a symbol to escape the object's linkage, that's your tradeoff to
analyze. (It sounds like your decision is already made; please don't take
the above as an effort to sway your decision, it's just an explanation of
my mindset/thought process.)
>> I'll put links to the commits that I used to implement these fixes below.
>
> At least your report indicates that clang can compile libev again - that's
> progress.
Well, this is with the clang 3.2 rev 170710 included in the FreeBSD base
system from a svn snapshot from some time ago, compiling the embedded
libev 4.04 from the krb5 tree. Advances in either libev or clang could
have rendered this datapoint useless.
I will say once more that I do think that the parenthesis around the
bitwise operators (trimmed from the context) is very helpful for readers
of the code, and ask for its inclusion. The rest of these patches are not
really useful for anything other than removing warnings, and ignoring them
is fine by me.
Thanks for the input,
Ben
More information about the libev
mailing list