whole-program analysis