In general it's impossible. Consider this C program:
void do_something(int *);
int f() {
int x;
do_something(&x);
return x;
}
Is the return of x a use of initialized memory? Maybe. Relink the program and the answer might change.