Why gcc and clang both don't emit any warning?

Viewed 386

Suppose we have code like this:

int check(){
    int x = 5;

    ++x; /* line 1.*/

    return 0;
}

int main(){
    return check();
}

If line 1 is commented out and the compiler is started with all warnings enabled, it emits:

warning: unused variable ‘x’ [-Wunused-variable]

However if we un-comment line 1, i.e. increase x, then no warning is emitted.

Why is that? Increasing the variable is not really using it.

This happen in both GCC and Clang for both and .

7 Answers
Related