www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - C undefined behaviour

"What Every C Programmer Should Know About Undefined Behavior", #1/3 and #2/3,
by Chris Lattner himself (main author of LLVM):

http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html
http://www.reddit.com/r/programming/comments/h9rf9/what_every_c_programmer_should_know_about/

http://blog.llvm.org/2011/05/what-every-c-programmer-should-know_14.html
http://www.reddit.com/r/programming/comments/hbepu/what_every_c_programmer_should_know_about/

The third blog post is yet to be shown.

From my tests the Clang -fcatch-undefined-behavior -ftrapv switches work, they
are going to be used for my C code. But I'd like a similar switch for unsigned
values too, because currently it doesn't catch situations like:


Using:
clang -fcatch-undefined-behavior -ftrapv


#include <stdio.h>
int main(void) {
    long x = 2000000000;
    unsigned y = 2000000000;
    long z = x + y;
    printf("z = %ld\n", z);
    return 0;
}


Outputs the wrong result still:
z = -294967296

This attitude of C compiler writers (and C language standard writers) is
terrible (this also is why I use Python everywhere I can).

Bye,
bearophile
May 15 2011