Effective whole-program analysis in the presence of pointersThe design of whole-program analysis tools