On Mon, Nov 25, 2013 at 07:48:34PM +0100, Jan Hubicka wrote: > > isn't exactly enabled by default ;) > > OK :)) > > Anyway, all the pass needs is bodies of functions with "omp declare simd" > > attribute which will be defined in the current partition, for functions > > defined in other partitions all it wants to do is just clone the > > DECL_EXTERNAL FUNCTION_DECL. But it needs to be called before any > > caller's of that function (whether extern/in another partition, or local > > (defined in the current partition) will run through vectorization. > > Yep, we will need to add an interface for late passes that needs to look > only into specific bodies. (in fact, I already added cgraph_get_body > and perhaps I can just integrate IPA transformation into that and make late > IPA passes > to use them)
Note that while the late IPA pass for simd clones is enabled say for -fopenmp, even if it needed the bodies that wouldn't be in current partition, it wants to look only at a fraction of all functions, so loading the bodies just in case for everything would be tons of unnecessary work. If IPA-PTA needs bodies of everything always, perhaps it could call cgraph_get_body at the beginning of handling each function? Jakub