It's not constraining the lookup, which would make valgrind miss it, but constraining its later assumptions about the variable.
int d[16];
d[k] = 10; /*A*/
if(/*B*/ k < 16) {
...
}
The idea is that when it hits A, if that expression would be false, behavior is already undefined because of what happened at B, so let's optimize for the case that didn't segfault (or corrupt data).