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

    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 majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

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