In this paper we propose an efficient and effective algorithm to perform flow-insensitive interprocedural pointer analysis which can eliminate impossible paths. To make the algorithm efficient, we design a decoupled analysis framework where only the pointer information in each function is extracted in the function-level analysis phase, and processed with other function's pointer information in the interprocedural analysis phase. To be effective, our analysis can disambiguate accesses to a single field in a structure and union, for both stack- and heapbased storage. We have implemented the algorithm in the IMPACT compiler and evaluated its feasibility for the complete suite of SPECint92 and SPECint95 benchmarks.