The profile generation stage and ipo do not mix. Now, the profile use (-prof_use) stage and ipo should work together to bring maximum performance to your application.
The fact that -prof_gen and -ipo do not mix should not be considered a major problem. To get accurate profile information, we need to tone down the optimization level so that when it comes to using the information, we can optimize in the correct places. Remember, you would not ship your production code compiled with -prof_gen. In this sense it's similar to using debug - Using -g or -Zi tones down some optimizations while you're developing. For shipping, you'd probably not use debug.