------- Comment #5 from vincent at vinc17 dot org 2008-05-22 11:23 ------- BTW, the i = i trick, which is guaranteed to be valid and no-op only *after* i has been initialized doesn't avoid the warning in such a case. I don't know if this would be a good feature (the main drawback I can see would be to miss warnings when this is a result of macro expansion). For instance:
#include <assert.h> int foo (int x) { int y; assert (x == 0 || x == 1); if (x == 0) y = 1; else if (x == 1) y = 2; y = y; /* to tell the compiler that y has been initialized */ return y; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36296