[lkml]   [2005]   [Mar]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: Do not misuse Coverity please

    Hi Horst,

    > > > No, there is a third case: the pointer can be NULL, but the compiler
    > > > happened to move the dereference down to after the check.
    > > Wow. Great point. I completely missed that possibility. In fact I didn't
    > > know that the compiler could possibly alter the order of the
    > > instructions. For one thing, I thought it was simply not allowed to. For
    > > another, I didn't know that it had been made so aware that it could
    > > actually figure out how to do this kind of things. What a mess. Let's
    > > just hope that the gcc folks know their business :)
    > The compiler is most definitely /not/ allowed to change the results the
    > code gives.

    I think that Andrew's point was that the compiler could change the order
    of the instructions *when this doesn't change the result*, not just in
    the general case, of course. In our example, The instructions:

    v = p->field;
    if (!p) return;

    can be seen as equivalent to

    if (!p) return;
    v = p->field;

    by the compiler, which might actually optimize the first into the second
    (and quite rightly so, as it actually is faster in the null case). The
    fact that doing so prevents an oops is unknown to the compiler, so it
    just wouldn't care.

    Now I don't know what gcc actually does or not, but Andrew's point
    makes perfect sense to me in the theory, and effectively voids my own
    argument if gcc performs this kind of optimizations. (The prefered
    approach to fix these bugs is a different issue though.)

    Jean Delvare
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-04-06 13:31    [W:0.023 / U:13.184 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site