Для C существует программа ncc , которая создает несколько промежуточных файлов, которые содержат для каждой функции список всех переменных, к которым обращались, а также вызываемых функций. Используя эту информацию, вы можете создать дерево вызовов (я однажды проанализировал эти файлы, чтобы найти (приблизительное) максимальное использование стека (вместе с информацией из файла карты)).
Хотя ncc для C, вы должны быть в состоянии использовать тот же принцип. Вы можете скачать и посмотреть, как это делается для ncc, или, может быть, вы можете искать «генерировать дерево вызовов» вместе с flex или actioncript, чтобы увидеть, найдете ли вы какой-нибудь полезный инструмент. Когда у вас есть полное дерево вызовов, любая функция, не являющаяся его частью, является сильным кандидатом на удаление.