Академический ответ: эта проблема неразрешима, т. Е. Нет алгоритма, который мог бы строго ответить на вопрос.
Практический ответ: Проверьте учебник по статическому анализу. Это очень сложная проблема, и вы не получите здесь полного ответа (я думаю).
Текущие компиляторы пробуют довольно ограниченное решение проблемы, другие некомпиляторные инструменты пробуют другие вещи. В конце концов, для реализации вы должны решить, какие возможные случаи вы хотите охватить, и насколько медленным должен быть ваш компилятор. Потому что, очевидно, чем точнее будет ваш анализ, тем больше времени он займет.
При этом, глядя на учебник, вы узнаете, какие вещи можно сделать, и насколько они "дорогие".