Message passing overhead is often a substantial source of runtime overhead in object-oriented applications. To combat this performance problem, a number of techniques have been developed to convert message sends into statically-bound procedure calls, which are then amenable to traditional compiler optimizations such as inline expansion. In this paper, we examine one such technique, interprocedural class analysis. We develop a general model for describing interprocedural class analysis algorithms, present several previously developed algorithms using this model, and empirically assess the algorithms by applying them to a suite of Cecil applications.