[cfe-dev] Strict overflow warning

Richtarsky, Martin martin.richtarsky at sap.com
Fri Sep 21 01:12:50 PDT 2012

Hi all,

a few days ago I ran across code that relied on signed overflow being defined. With gcc this worked fine, clang optimized and the program broke.

With gcc it is possible to specify -Wstrict-overflow=x to get a warning in cases where the compiler relies on undefined behaviour (which will usually happen only with -O2 or above). 

I tried this with clang, but got no warning (but clang seems to know the option). Am I  doing something wrong? 


#include <iostream>
using namespace std;

class A {
    int func()
        unsigned long &unsignedValue = (unsigned long&)signedValue;
        unsignedValue = 9223372036854775808ul;
        cout << "signedValue " << signedValue << endl;
        signedValue = -signedValue;
        if (signedValue > 0)
            return 1;
        return 0;
    long signedValue;
} ;

int main()
    return A().func();

clang++ -O3 -Wstrict-overflow=5 -o overflow overflow.cpp
--> produces no warning

$? == 1 afterwards

Best regards,

More information about the cfe-dev mailing list