static functions, does the implicit return variable get overwritten by exp in return exp;?

Hi, the LRM says at 13.4.1

“The return statement shall override any value assigned to the function name.”

However, it is not clear whether the implicit static return variable declared by static function is overwritten by the expression in the return statement. For example

function int foo(int init){
if (init)
foo = 0;
else
return foo + 1;
}

suppose we call foo(1), foo(0), foo(0), foo(0)…

does the LRM say we get 0, 1, 1, 1… or 0, 1, 2, 3…?