Without further precautions, and the way I understand the philosophy behind these tools, I do not think this has the slightest chance to hold. Compilers are too false-positive-adverse and Valgrind is too, well, runtimy.
A compiler person (not sure if it was GCC or LLVM) asserted to me that they'd like this property to hold.
I do not expect that it does, but it will be interesting to see when it doesn't, and to see if anyone will fix "bugs" like this.
Also today I was reading this blog entry: http://rusty.ozlabs.org/?p=232Pascal I don't understand what you mean "too runtimy". It's a purely runtime property -- you can't be too runtimy to check it. If we had the stupidest possible compiler (no register allocation, etc.), Valgrind would succeed perfectly, unless it has bugs, because every variable would reside in memory and would be shadowed.
First, someone somewhere pointed out to me that GCC's warnings depend on the optimization level. I do not remember the source. Was it this mailing list?
I'm not sure, but you're right. But I think it's basically "at -O0 yo don't get any dataflow warnings". So it's not very hard to deal with this problem.
John