By static analysis, the compiler can hardly correctly prefetch data that are nonlinear accessed. But by using profiling techniques one can get the regulation by which the program accesses memory, and then by using these profiling information, the compiler is guided to accurately insert prefetch instructions. Based on stride profiling technique, a new information type named stride iterative is put forward, which is more accurate than normal profiling. Together with the alias information to adjust the data prefetch for the same cache line, the compiler gets a better performance than the normal data prefetch. The CPU2000 12 INT cases get 8.54% performance improvement on the average, and mcf gets an 77.87% performance increase.