In revision #7514:
int foo(void)
{
int y = 1;
{
int x = y;
int y = 2;
return x;
}
}
In the initialization of x, y should bind to the variable declared in the outer block (and will, if the declaration of y in the inner block is not present). but instead binds to the declaration of y in the inner block. The compiler notes that the inner y may be being used before initialization, does not actually apply the specified initial value to the inner y, but then returns the inner y's value since it believes that x was initialized with the inner y's value.
Increasing priority, since bad code is generated silently.
Philipp
Fixed in revision #8280